NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: problem v komunikaci php x Mysql

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Michael
Člen
Avatar
Michael:15.2.2016 11:02

zdravím. Potřeboval bych pomoci s jednou věcí. Mám jednoduché stránky a k nim i admin. sekci. Admin sekce je jednoduše seznam stránek (položek menu stranka1,2,3,atd..) po kliknutí na stránku se nam zobrazi wysiwyg editor pro vkladani/upra­vovani/formato­vani textu atd. Po kliknuti na tlacitko ulozit, by se mel zadany obsah zapsat i do databaze a zustat tam , bohuzel nefunguje. Jsem opravdu amater a zacinam, takze predem se omlouvam za ten kod:D

function connectToMysql($databaseName)
{
    // funkce slouzi pro pripojeni do databaze
    // jedinym parametrem je nazev databaze
    // bude se to pripojovat na localhost s pevne danym uzivatelem root/bez hesla
    global $conn;

    $conn = mysqli_connect("localhost", "root", "");

    mysqli_set_charset($conn, "utf8");

    mysqli_select_db($conn, $databaseName);
}


function doSql($sql)
{
    global $conn;

    // funkce provede sql dotaz a zkontroluje zdali dopadl dobre
    $res = mysqli_query($conn, $sql);
    if (!$res)
    {
        echo mysqli_error($conn);
        var_dump($sql);
        exit;
    }

    // rovnou nacteme vsechny radky do pole a vratime
    $data = array();
    if (!is_bool($res))
    {
        while ($row = mysqli_fetch_assoc($res))
        {
            $data[] = $row;
        }
    }

    return $data;
}


function toSql($value)
{
    // funkce automaticky prevede hodnotu do sql, tedy pro texty obali hodnotu uvozovkami
    // a automaticky escapuje
    global $conn;

    if (is_string($value))
    {
        return '"'.mysqli_real_escape_string($conn, $value).'"';
    }
    elseif (is_null($value))
    {
        return 'NULL';
    }
    else
    {
        // pokud to bude napr cislo, tak to vratime tak jak to je
        return $value;
    }
}
public static function createPage()
    {
        //zde si vytvorim nahodne nove ID stranky
        $newPageId = time();

        //vytvortim v databazi novou stranku
        $sql = sprintf(
            "INSERT INTO page SET id = %s, name = %s, title = %s, page_order = %s",
        toSql($newPageId), toSql("[name]"), toSql("[title]"), toSql(time())
        );

        doSql($sql);

        return $newPageId;
    }
function getObsah()
   {
       $sql = "SELECT content FROM page WHERE id = ".toSql($this->id);
       $rows = doSql($sql);
       return $rows[0]["content"];
   }

   function setObsah($obsah)
   {
       $sql = "UPDATE page SET content = ".toSql($obsah)." WHERE id = ".toSql($this->id);
       doSql($sql);
   }

pokud by mi nekdo mohl poradit,dekuju

 
Odpovědět
15.2.2016 11:02
Avatar
Mark Vajšbejn:15.2.2016 19:19

Vzhledem k tomu, že ten kód co jsi nám sem dal je docela dost osekanej kód, tak bych se rád zeptal, kde vlastně máš to tvé '$this->id' na 3 řádku ze spodní části kódu - jak ho nastavuješ? Případně si tam zkus dát fixní ID (easy debug) .. protože se ti v tom kód zjevně to ID ztratilo, respektive, ani si ho asi nenastavil. :D

.. A asi bude lepší, když ten novej obsah předáváš funkci setObsah tam přidat i ID toho příspěvku, který můžeš nastavit přes hidden input element a získavat ho přes $_POST-a.

 
Nahoru Odpovědět
15.2.2016 19:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.