Autor Zpráva
max.max
Profil
Nevím si rady, jak můžu uložit datum, které napíšu dd.mm.yyyy a v databázi to bude vypadat yyyy-mm-dd.
Podobné téma jsem tady nalezl, ale je zamčené jak bude vypadat INSERT? Zkrátka, chci napsat datum, aby se mi uložilo, ne aby se ukládalo aktuální datum.

Tak vypadá aktuálně můj INSERT a nevím jak to tam vložit. Snažil jsem se to najít na internetu a nějak mi to nefungovalo.

    $sql = "INSERT INTO druzstva (id, druzstvo, datum, cas, propozice, jmeno, telefon, email, web, ikonka) 
                VALUES ('NULL','$druzstvo','$datum','$cas','$propozice','$jmeno','$telefon','$email','$web','$ikonka')";

V databázi mám "datum" nastavené na DATE a ukládá se to do zmíňovaného formátu yyyy-mm-dd a tak to přesně potřebují uložit. Děkují za pomoc
Someone
Profil
Date("Y-m-d",strtotime($datum));
Doporučuji escapovat, máte tam velkou bezpečnostní díru.
max.max
Profil
nevím jak to tam dostat....
Jan Tvrdík
Profil
max.max:
nevím jak to tam dostat.
$sql = "INSERT INTO druzstva (id, druzstvo, datum, cas, propozice, jmeno, telefon, email, web, ikonka) 
        VALUES ('NULL','$druzstvo','" . date("Y-m-d", strtotime($datum)) . "','$cas','$propozice','$jmeno','$telefon','$email','$web','$ikonka')";
max.max
Profil
nádhera děkují za radu, funguje to.
max.max
Profil
A ještě jeden menší problém... Jak udělat to, aby když nezadám žádnou hodnotu, neuložilo se 01.01.1970, ale NULL? Zkrátka, chci mít to pole prázdné...
Alphard
Profil
max.max [#6]:
Znáte podmínky? Znáte třeba empty()?
max.max
Profil
Nemám tušení, jak bych to mohl v praxi využit.
max.max
Profil
Jak bych mohl udělat to, aby když nevypíšu datum, se neuložilo 1.1.1970 ale byla ta kolonka prázdna? Předem děkují

$sql = "INSERT INTO druzstva (id, druzstvo, datum, cas, typ_souteze, propozice, jmeno, telefon, email, web, ikonka) 
        VALUES ('NULL','$druzstvo','" . date("Y-m-d", strtotime($datum)) . "','$cas','$typ_souteze','$propozice','$jmeno','$telefon','$email','$web','$ikonka')";
Tori
Profil
Neukládat ho. :) nastavte sloupeček na nulový (tj. aby mohl obsahovat kromě datumu i hodnotu NULL) a v dotazu přidejte podmínku:
$sql = "INSERT INTO druzstva (id, druzstvo, datum, cas, typ_souteze, propozice, jmeno, telefon, email, web, ikonka) 
        VALUES (NULL,'$druzstvo', "
  . ($datum ? "'".date("Y-m-d", strtotime($datum))."'" : "NULL") .
  ",'$cas','$typ_souteze','$propozice','$jmeno','$telefon','$email','$web','$ikonka')";
Případně druhým způsobem zápisu:
$sql = "INSERT INTO druzstva SET
    druzstvo = '$druzstvo', cas = '$cas', typ_souteze = '$typ_souteze', propozice = '$propozice', 
    jmeno = '$jmeno', telefon = '$telefon', email = '$email', 
    web = '$web', ikonka = '$ikonka'";
if ($datum)
    $sql .= ", datum = '".date("Y-m-d", strtotime($datum))."'";
A hodnota NULL pro id musí být buď bez uvozovek (je to klíč.slovo, ne řetězec), anebo ten sloupec úplně vynechte.
max.max
Profil
děkují, funguje, nevěděl jsem jak to nastavit s hodnotou NULL.
Alphard
Profil
Když je vstup prázdný, tak ten sloupec vůbec nevkládat, nebo explicitně vložit null, na to se hodí podmínky a empty(). Je to praktické využití podle mě.

To jak skládáte dotazy je celkově dost zpátečnické (spolu s neescapováním i nebezpečné) a tipuji, že postavené na dosluhující mysql extenzi, takže i nerozumné. Nemluvím hned o obřích ORM, ale i ta nejhloupější databázová vrstva má obvykle nějakou metodu, která přijme asociativní pole ve tvaru $insert = ['nazev_sloupce' => $hodnota, 'jiny_sloupec' => $jina_hodnota]; a vloží ho do db. S tím se pak pracuje mnohem lépe.

max.max [#9], Tori [#10]:
Sem přesouvám z duplicitního vlákna. Zakládání duplicit je zakázané, bude-li se opakovat, nebudeme vás tady vidět rádi.

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: