Autor Zpráva
Peto
Profil *
Ahoj, chci přes php vložit do databáze libovolné datum, ale stále mi to v databázi piše 0000-00-00, ale pokud použiji fci date(), tak je to vše v pohodě.

příklad:
$datum = $post[datum];
$today = date( "Y-n-j");
$sql = "INSERT INTO test SET zvolene ='$datum', dnesni='$today';"

Výpis z databáze pak vyjde takto: 0000-00-00 a 2010-06-29

Kde může být zakopaný čokl???
Taps
Profil
Peto:
zkus

$datum = $_POST['datum'];
Peto
Profil *
Tak ani tím to není :-(
xmark
Profil
Ukaž co máš v tom $sql.
Peto
Profil *
<?php
function dotaz($sql) {
                $dotaz = mysql_query($sql) or die("Chyba databaze. Zkuste prosim akci opakovat pozdeji.");
                return $dotaz;
}
$userid = $_SESSION['id'] ;
$jname = $_SESSION['jmeno'];
$lastn = $_SESSION['prijmeni'] ;
$datum = $_POST['datum'];
if(isset($_POST['ok'])){
dotaz("INSERT INTO zpravy SET userid ='$userid',  napsal= '$jname $lastn',  cas ='$datum';");         
header("Location: ../private/prispevky.php"); 
}
echo"
<form action='/private/prispevky.php?akce=pridat' method='post' enctype='multipart/form-data'>
<input class='inputText' type='text' name='datum' ><br>
<input class='inputText'  type='submit' name='ok' value='Vložit' />
</form>";
?>" 

Výsledek je takový, že se zapíše vše ale datum je v databázi 0000-00-00 i když to zadám ve správnem tvaru
Tori
Profil
Peto:
Co třeba
$datum = date("Y-m-d", strtotime($_POST['datum'])); 

- uživatel pak může zadat 2010-06-30, 30.6.2010, 30 Jun 2010 atd. (viz přehled podporovaných formátů).

Pokud ten formulář budou vyplňovat různí uživatelé, šlo by použít i nějakou validaci, v jakém tvaru to datum můžou zadat. Třeba
$userid = $_SESSION['id'] ;
$jname = $_SESSION['jmeno'];
$lastn = $_SESSION['prijmeni'] ;

if (isset($_POST['ok'])) {
  $timestamp = strtotime($_POST['datum']);  // vrací buď timestamp, nebo FALSE
  if ($timestamp === false)  {   // = datum není v žádném standardním formátu. Formulář se zobrazí znovu, 
                                                           // v poli 'datum' bude předvyplněná ta chybná hodnota.
    $chybovaHlaska = '<b>Zadali jste nečitelné datum. Napište ho znovu podle vzoru d.m.r.</b>';
  }
  else {
    $datum = date("Y-m-d", $timestamp);
    dotaz("INSERT INTO zpravy SET userid ='$userid',  napsal= '$jname $lastn',  cas ='$datum';");         
    header("Location: ../private/prispevky.php");
  }
}
echo"
$chybovaHlaska
<form action='/private/prispevky.php?akce=pridat' method='post' enctype='multipart/form-data'>
<input class='inputText' type='text' name='datum' value='{$_POST['datum']}' /><br>
<input class='inputText'  type='submit' name='ok' value='Vložit' />
</form>";

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:

0