Autor | Zpráva | ||
---|---|---|---|
mirio Profil |
#1 · Zasláno: 3. 11. 2006, 11:55:23
Ahoj,
napsal jsem si primitivní miniscript pro ověření "neprázdnosti" formuláře, ale nedělá mi to vůbec nic a přitom myslím, že je to správně. Co s tím? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Testovací stránka | Test page</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <script language="javascript" type="text/javascript"> <SCRIPT LANGUAGE="JavaScript"> <!-- function Kontrola() { if (document.formular.jmeno.value == "") { document.formular.jmeno.focus(); alert ("Nezadali jste vaše jméno"); return false; } alert ("Formulář byl odeslán. Nenalezena chyba."); } // --> </SCRIPT> </head> <body> <form name="formular" action="komentar_add.php" method="POST" onsubmit="return Kontrola();"> <input type=hidden name="id" value="<? echo $id ?>"> <div align="center"> <p class="formular"><input type="text" name="jmeno" size="30"> Jméno</p> <p class="formular"><input type="text" name="email" size="30"> E-mail</p> <p class="formular"><input type="text" name="url" size="30"> Www</p> <p class="formular"><input type="text" name="predmet" size="30"> Předmět</p> <p class="formular">Váš komentář, prosím:</p> <p class="formular"><textarea rows="3" name="text" cols="30"></textarea></p> <p class="formular"><input type="submit" value="Odeslat"></p> </div> </form> </body> </html> Tady je to v celé své nefunkční "kráse": http://mirio.borec.cz/pomoc/test.php |
||
Anonymní Profil * |
#2 · Zasláno: 3. 11. 2006, 12:51:26
přdpokládam, že formulář zpracováváš pomocí PHP, tak pole kontroluj pomocí jeho a hlášku vypiš pomocí echa nebo printu. Tenhle JS fungovat nemůže už jen pro to, že se ti nikdy nespustí - ničim ho nezpouštíš.
|
||
roberta Profil |
#3 · Zasláno: 3. 11. 2006, 12:51:47
máš 2x definíciu javascriptu v heade, takže 6. riadok vymaž, alebo ukonči tag "script"
6ty riadok: <script language="javascript" type="text/javascript"> |
||
roberta Profil |
#4 · Zasláno: 3. 11. 2006, 12:53:19
Anonymní
on sa ho snaží spustiť týmto: <form name="formular" action="komentar_add.php" method="POST" onsubmit="return Kontrola();"> ale keďže má nesprávne definovaný JS v heade, tak mu to padá... |
||
mirio Profil |
#5 · Zasláno: 3. 11. 2006, 12:56:46
přdpokládam, že formulář zpracováváš pomocí PHP, tak pole kontroluj pomocí jeho a hlášku vypiš pomocí echa nebo printu. Tenhle JS fungovat nemůže už jen pro to, že se ti nikdy nespustí - ničim ho nezpouštíš.
Nerozumím, a tohle: onsubmit="return Kontrola();" je potom co? |
||
Anonymní Profil * |
#6 · Zasláno: 3. 11. 2006, 12:56:47
je sorry, to jsem přehlídnul, tak jako tak je lepší to úž rovnou spojit s PHP protože pak je kontrola jistá ikdyž má někdo JS vypnutý
|
||
mirio Profil |
#7 · Zasláno: 3. 11. 2006, 12:58:42
je sorry, to jsem přehlídnul, tak jako tak je lepší to úž rovnou spojit s PHP protože pak je kontrola jistá ikdyž má někdo JS vypnutý
To je fakt, ale v PHP si na to netroufám. Nějaké pošťouchnutí správným směrem, prosím? :-) |
||
mirio Profil |
#8 · Zasláno: 3. 11. 2006, 12:59:50
máš 2x definíciu javascriptu v heade, takže 6. riadok vymaž, alebo ukonči tag "script"
6ty riadok: <script language="javascript" type="text/javascript"> Ano, to bylo ono! Jak jsem to jen mohl přehlídnout? Dělám deset věcí naráz a pak to tak dopadá... Díky. |
||
Anonymní Profil * |
#9 · Zasláno: 3. 11. 2006, 13:01:01
a jak ten formulář spracováváš? hoď sem ten script
|
||
Anonymní Profil * |
#10 · Zasláno: 3. 11. 2006, 13:05:26
nebo tě jen nakopnu:
if (($jmeno=="") or ($url=="") or ($predmet=="") or ($email=="")): |
||
mirio Profil |
#11 · Zasláno: 3. 11. 2006, 13:29:17
Mno, já to měl takto:
<p class="formular"><input type="text" name="jmeno" size="30" value=" <? if ($jmeno=="" || $email=="" || $text==""): echo $jmeno; endif; ?> "> Jméno</p> <p class="formular"><input type="text" name="email" size="30" value=" <? if ($jmeno=="" || $email=="" || $text==""): echo $jmeno; endif; ?> "> E-mail</p> atd. Jenže mi to nefungovalo a v JS je to tak jednoduché, ale zase strašně lehce občůratelné... |
||
peta Profil * |
#12 · Zasláno: 3. 11. 2006, 16:25:01
mirio
"Jenže mi to nefungovalo" :) Zalezi na tom, co jsi chtel docilit. PHP je nastroj, ktery vygeneruje HTML stranku, tu posle uzivateli, kde uz zadne PHP nefiguruje a se neprovadi! JS proti tomu je soucasti HTML stranky, takze je mozne nejake funkce spustit zvlast u uzivatele, treba kontrola zadanych udaju. U PHP bys tentyz system mohl pouzit za predpokladu, ze stranku odesles na server a ten vygeneruje novou. A to je ten zpusob, jak to mas napsane, ze predpoklada navrat na stejny formular. <input type="text" name="jmeno" size="30" value=" <? if ($jmeno=="" || $email=="" || $text==""): echo $jmeno; endif; ?> "> Jméno</p> Jenze toto predpoklada, ze mas globalni promenne v PHP aktivni, coz vetsina hostingu (php.ini) z duvodu bezpecnosti nema. Znamena to asi tolik, ze $jmeno = $_POST["jmeno"] = $_GET["jmeno"] (to GET=POSt, tim si nejsem jistej) a mam pocit, ze se to rovna i $_SESSION["jmeno"] A jestlize toto pravidlo neplati, pak kazda z techto promennych ma jinou hodnotu. Dale posilas stranku na: action="komentar_add.php" , coz ja nevim, jestli je ta sama stranka. Predpokladejme, ze ano. V tom pripade ti to bude fungovat, jestlize misto $jmeno a pod pouzijes $_POST["jmeno"] Dalsi problem nastava pri nastaveni error_reportingu (http://cz2.php.net/error_reporting) na hodnotu ALL. Pak ti $_POST["jmeno"] bude hlasit jako chybu, protoze pri prvnim nacteni stranky je $_POST prazdny, resp. neni definovany. Cili podminku je nutne rozsirit o existenci: ( isset($_POST["jmeno"]) && $_POST["jmeno"]!=="" ) A uz to zacina byt celkem dost komplikovane, proto si ja zakladam pole, ktere na zacatku zkontroluji a dole jen vypisuji vysledky. A jeste je tu takova zalezitost se syntaxi: <?=$aaa?> <? echo $aaa; ?> <?php echo $aaa; ?> je vesmes totez, 100% by mel fungovat posledni radek. Opet zalezi na nastaveni hostingu (php.ini) cili v mem pripade by to vypadalo nejak takto: <?php $data = array(); $a = "jmeno"; $data[$a] = ( isset($_POST[$a]) && $_POST[$a]!=="" ) ? $_POST[$a] : ""; $a = "email"; $data[$a] = ( isset($_POST[$a]) && $_POST[$a]!=="" ) ? $_POST[$a] : ""; ?> .......... <input type="text" name="jmeno" size="30" value="<?=$data["jmeno"]?>"/> <input type="text" name="email" size="30" value="<?=$data["email"]?>"/> A protoze kdyz neni nic nastavene, ma se vypssat prazdny retezec, tak nevim proc bych kontroloval, zda je hodnota rovna prazdnemu retezci??? S pouzitim pole: <?php $x = array("jmeno","email"); foreach ($x as $key => $value) {$y = isset($_POST[$value]) ? $_POST[$value] : ""; echo "\n<input type=\"text\" name=\"$value\" size=\"30\" value=\"$y\"/>"; } ?> |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0