| 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: 15 let
|
|||
0