Autor Zpráva
quickspider
Profil
Zdravím,
potřebuju ověřit správně zadané datum, ale nějak si s tím nemůžu poradit
funkci mám takto:
function kontrola_data()
{
$datum = trim(strtolower($_POST['datum']));
$text = trim($_POST['text']);
   if (EReg("^([0-9]{4}).([0-9]{2}).([0-9]{2})$", $datum)) { 
       echo 'Zadali jste nesprávné znaky.';
    }
    if (strlen($datum) > 10) {
        echo('datum může mít nejvýše 10 znaků.');
    }
    return $datum;
$query = "INSERT INTO k11_news SET datum = '$datum', text = '$text'";
$result = mysql_query ($query);

if ($result){
echo "údaje byly úspěšně vloženy!<br><br>";
} else {
echo "Bohužel se nepodařilo údaje vložit.<br><br>";
mysql_close();

}
}

vypisuje to chybu

Notice: Undefined index: datum in /home/httpd/html/users/xnovj102/u2/auth.php on line 88

Notice: Undefined index: text in /home/httpd/html/users/xnovj102/u2/auth.php on line 89

děkuju
mckay
Profil
quickspider:
Vypadá to, že neodesíláš žádný input se jménem datum, ani text.

$datum = trim(strtolower($_POST['datum']));
$text = trim($_POST['text']);


Zkontroluj, jestli formulář, přes který přistupuješ má opravdu takto pojmenované inputy.
quickspider
Profil
mckay:
Dokud jsem tam nezkusil tu kontrolu tak to fungovalo.

<form action="novinky.php" method="GET">
datum: <input type="text" name="datum" value=""> tvar: rrrr-mm-dd<br />
text: <input type="text" name="text" size="100" value="">
<div class="form_tlacitko">
<input type="submit" name="submit_vloz_novinky" value="vložit">
</div>
</form>


ještě k tomu patři toto z jiného souboru:
  if (isset($_GET['submit_vloz_novinky'])) {
kontrola_data();
    
}
fuckin
Profil
Dej tam var_dump($_POST); a uvidis co se ti odesila.
mckay
Profil
quickspider:
Když tam máš napsané method="get", už to nemáš uložené v proměnné $_POST, ale v $_GET
denCo
Profil
mckay:
ako vraví, takže všetko s $_POST prepíš na $_GET... a nepoužívaj funkciu ereg, použi funkciu preg_match, pretože funkcia ereg v php6 nebude podporovaná
AM_
Profil
denCo:
ako vraví, takže všetko s $_POST prepíš na $_GET
já bych to udělal obráceně a formuláři nastavil method="post". Představ si tu paseku, kdyby náhodou nějaký prohlížeč zaindexoval novinky.php?datum=1.1.20010&text=lorem+ipsum
fuckin
Profil
denCo:
Nebude lepsi kdyz napise method="post" ? Bude.
t4nn3r
Profil *
Formulare zasadne post, navic bych se poohlednul po nejakych uz hotovych validatorech, ty jsou daleko propracovanejsi.
quickspider
Profil
tak jsem to přepsal na post, změnil na fci preg_match, ale nevložilo to žádná data ani nevypsalo chybu. Tak jsem to vrátil do původní podoby, ale na serveru, kde to je to nenačítá data z db (na localhostu to funguje). Až zase budu mít čas tak se na to podívám, teď to musím odevzdat trochu funkční.

díky za snahu
t4nn3r
Profil
Postnete sem (popripade na pastebin) cely script zpracovavajici data z formulare. Jinak je pekne ze konrolujete jestli je predavan parametr z submit tlacitka, ale chybi tam rozhodne testovani isset na prvky formulare. Jinak co jsem se naucil s formularema, je podle meho nazoru vypisovat formular i ho zpracovavat v jednom souboru:
if (isset($_POST[..]) AND (isset....)
{
//zpracovani formulare
}
else
{
//zobrazeni formulare
}



Ma to vyhody:
Muzete jednoduse pri nevalidnim vyplneni vracet to co uzivatel zadal zpet do formulare.

Pri vytvoreni nejake IsValid fce, ktera testuje data z POST (treba cisla na isint() ) muzete zobrazovat na nejakem dekoratoru chyby zadani.

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: