Autor | Zpráva | ||
---|---|---|---|
kozusnik.jan Profil * |
#1 · Zasláno: 18. 4. 2011, 19:46:11
Ahoj, mám problém, který se týká kontroly. Mám zdrojový kód (viz. níže). Článek se pokud je všechno v pořádku odešle, když ne, tak se neodešle, ale při špatném zadání se mi má vypsat, co bylo špatně, a zde je zádrhel - nic se nevypisuje. Mohli byste to prolétnout a zkusit mi pomoct tento problém vyřešit? Moc děkuji
<form method="post" name="frm_tvorba"> <input type="text" name="nazev_tvorba" maxlenght="30" width="500" />Název<br> <br><input type="hidden" name="autor_tvorba" value=""/> <br> <textarea maxlenght="1000" rows="10" id="popis_tvorba" name="popis_tvorba" value="<?php if(isset($_POST['popis_tvorba'])) echo $_POST['popis_tvorba'];?>" /></textarea> <textarea maxlenght="9999999" rows="15" id="text_tvorba" name="text_tvorba" value="<?php if(isset($_POST['text_tvorba'])) echo $_POST['text_tvorba'];?>"/></textarea> <input type="hidden" name="odkaz_tvorba" value="...." /><br> <br><input type="submit" name="vytvor_tvorba" id="vytvor_tvorba" value="Odeslat" /> <?php $kontrola=true; if (isset($_POST['vytvor_tvorba'])) function clanekvdb($nazev) { $vysledek=mysql_query("select * from clanky where nazev='".$nazev."'"); return (boolean) mysql_num_rows($vysledek); } if (clanekvdb($_POST["nazev_tvorba"])) echo "<br>Článek s tímto názvem již existuje!"; elseif ((strlen ($_POST["nazev_tvorba"])>50) | strlen ($_POST["nazev_tvorba"])<3)echo "<br>Název clánku musí mít 3-50 znaku<br> <script type='text/javascript'>alert('Název clánku musí být dlouhý 3-50 znaku!'); </script>"; elseif ((strlen ($_POST["popis_tvorba"])>1000) | strlen ($_POST["popis_tvorba"])<10) echo "<br>Popis clánku musím být dlouhý 10 - 1000 znaku<br> <script type='text/javascript'> alert('Text popisu musí být dlouhý 10-1000 znaku!'); </script>"; elseif ((strlen ($_POST["text_tvorba"])>9999999) | strlen ($_POST["text_tvorba"])<100) echo "<br>Text clánku musím být dlouhý 100 - 9999999 znaku<br> <script type='text/javascript'> alert('Text clánku musí být dlouhý 100-9999999 znaku'); </script>"; else { echo "<script type='text/javascript'> alert('Článek byl vytvoren!'); </script>"; // kontolou jsme prošli $kontrola=false; {..........}} ?> |
||
Taps Profil |
#2 · Zasláno: 18. 4. 2011, 20:03:26
kozusnik.jan:
první čeho jsem si všiml je to že máš chybně operátory http://www.linuxsoft.cz/article.php?id_article=183 .... elseif ((strlen ($_POST["nazev_tvorba"])>50) || strlen ($_POST["nazev_tvorba"])<3)echo "<br>Název clánku musí mít 3-50 znaku<br> ... |
||
peta Profil |
#3 · Zasláno: 20. 4. 2011, 15:52:47
kozusnik.jan:
Nevidim konec tagu form. ""select * from " No, ale kdyz te zajima pocet radku, proc selectovat vsechny data a nepouzit SELECT COUNT(*) ... nebo SELECT COUNT(id) ... pro sloupec. Takto napsane to muze byt dost pomale. Navic to prevadis na boolean. Cili bez COUNT bych to limitoval LIMIT 1, pokud najde aspon 1 zaznam. Protoze tam nemas zadne osetreni chyb, aspon trim(), tak staci uvest nazev = "ahoj" a priste nazev = "ahoj " (s mezerou). Pak je tam ten operator | vs. || , viz Taps. Ty chybove hlasky bych dal do pole. $hlasky = array('nazev'=>'...','popis'=>'...','text'=>'...'); echo "<br>".$hlasky['nazev']."<br><script>alert('".$hlasky['nazev']."')</script>"; |
||
kozusnik.jan Profil * |
#4 · Zasláno: 22. 4. 2011, 14:43:18
No, v tom operátoru || chyba nebude, protože to samé používám u jiné kontroly a je to v pohodě
|
||
Alphard Profil |
#5 · Zasláno: 22. 4. 2011, 15:19:45
kozusnik.jan:
„No, v tom operátoru || chyba nebude“ Víte vůbec, co | dělá? Ten kód vypadá hrozně, teď jsem se ho podruhé pokusil přečíst a zase jsem skončil po pár řádcích. Kdybyste to vhodně strukturoval, problémy by vyplynuly snadněji na první pohled. |
||
Časová prodleva: 3 dny
|
|||
kozusnik.jan Profil * |
#6 · Zasláno: 25. 4. 2011, 13:56:56
Aha :D Když nad tím tak uvažuji, tak chyba by neměla být v kódu, ale někde jinde, protože ten samý kód je u jiného webu a funguje. Nenapadá vás něco?
|
||
Časová prodleva: 13 let
|
0