Autor Zpráva
xXx
Profil *
Obracím se na vás s prosbou o pomoc. Začínám se učit PHP a nyní se snažím vložit data z formuláře do databáze. Formulář vypadá takto:

<form method="post" action="vloz.php">
    <fieldset>
        <legend>Vložení aktuality</legend>
        <label>Text aktuality:</label>
        <textarea rows="6" name="text"></textarea><br>
        <label>Zobrazit do:</label>
        <input type="date" name="datum"><br>
        <input type="submit" id="odeslat">
    </fieldset>
</form>

a skript takto:

$text = $_POST["text"];
$datum = $_POST["datum"];

mysql_connect ("localhost", "root", "");
mysql_select_db ("koupaliste");

mysql_query("
    insert into
        aktuality
        (datum_pridani, zobrazit_do, text)
    values
        ('date(\'Y-m-d H:i:s\')', '$datum', '$text')
");

přičemž datum_pridani je typu datetime, zobrazit_do je typu date a text je typu longtext. Bohužel se mi nedaří přijít na to, jak donutit vkládat aktuální čas. Vždy se mi vloží 0000-00-00 00:00:00. Poradí mi někdo, prosím, čím nahradit 'date(\'Y-m-d H:i:s\')' tak, aby se vkládal aktuální datum a čas?
jenikkozak
Profil
Použij funkci NOW():
    insert into
        aktuality
        (datum_pridani, zobrazit_do, text)
    values
        (NOW(), '$datum', '$text')
llook
Profil
Buďto tu SQL funkci NOW(), nebo prostě ukonči řetězec a zavolej date(). Tak, jak jsi to napsal, nevoláš funkci date(), ale vkládáš řetězec date('Y-m-d H:i:s'), což si MySQL přebere jako "0000-00-00 00:00:00".

V každém případě hlavně nezapomeň ošetřit $datum a $text, aby ti do něj někdo nevložil nějakou SQL injection:

$datum = mysql_real_escape_string($datum);
$text = mysql_real_escape_string($text);

mysql_query("
    insert into
        aktuality
        (datum_pridani, zobrazit_do, text)
    values
        ('" . date(\'Y-m-d H:i:s\') . "', '$datum', '$text')
");

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: