Autor | Zpráva | ||
---|---|---|---|
quickspider Profil |
#1 · Zasláno: 5. 1. 2010, 18:38:02
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 |
#2 · Zasláno: 5. 1. 2010, 18:52:14
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 |
#3 · Zasláno: 5. 1. 2010, 19:13:04
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 |
#4 · Zasláno: 5. 1. 2010, 19:15:10
Dej tam var_dump($_POST); a uvidis co se ti odesila.
|
||
mckay Profil |
#5 · Zasláno: 5. 1. 2010, 19:42:00
quickspider:
Když tam máš napsané method="get", už to nemáš uložené v proměnné $_POST, ale v $_GET |
||
denCo Profil |
#6 · Zasláno: 5. 1. 2010, 20:11:20
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 |
#7 · Zasláno: 5. 1. 2010, 20:26:03
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 |
#8 · Zasláno: 5. 1. 2010, 20:26:50
denCo:
Nebude lepsi kdyz napise method="post" ? Bude. |
||
t4nn3r Profil * |
#9 · Zasláno: 5. 1. 2010, 22:12:20
Formulare zasadne post, navic bych se poohlednul po nejakych uz hotovych validatorech, ty jsou daleko propracovanejsi.
|
||
quickspider Profil |
#10 · Zasláno: 6. 1. 2010, 12:40:22
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 |
#11 · Zasláno: 6. 1. 2010, 18:50:33
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. |
||
Časová prodleva: 13 let
|
0