Autor Zpráva
kozusnik.jan
Profil *
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
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
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 *
No, v tom operátoru || chyba nebude, protože to samé používám u jiné kontroly a je to v pohodě
Alphard
Profil
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.
kozusnik.jan
Profil *
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?

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: