Kontrola formuláře

Ahoj všichni - píchnete mi plz s tímhle oříškem ? Už to ladím jak dlouho a poád to nefunguje - chci zajistit, aby uživatel MUSEL zadat nějaká data než se článek uloží do db. Na stránce kde data zadává mám

<script language="javascript">
function over() {
if((document.formular.popis.value=="") || (document.formular.misto.value=="") || (document.formular.email.value=="") || (document.formular.titulek.value=="")) {
window.location="insert_article.php";
};
}
</script>
*další text na stránce, i.e. ten formulář*
<input type="submit" value="Vlož do databáze" onclick="over()">

to by měla být jedna ochrana. A druhá pak je na stránce kde se data zpracovávají, a to

if(!isset($titulek) OR !isset($email) OR !isset($popis) OR !isset($zn) OR !isset($misto)) {
header("location: insert_article.php?chyba=nevyplneno&titulek=".$titulek."&datum_zan=".$datum_zan."&zn=".$zn."&email=".$email."&telefon=".$telefon."&popis=".$popis."&komentar=".$komentar);
};
if(($titulek=="") OR ($email=="") OR ($popis=="") OR ($zn=="") OR ($misto=="")) {
header("location: insert_article.php?chyba=nevyplneno&titulek=".$titulek."&datum_zan=".$datum_zan."&zn=".$zn."&email=".$email."&telefon=".$telefon."&popis=".$popis."&komentar=".$komentar);
};

Přesto to pořád bez debat propouští. Nevíte proč ? Já už jsem z toho jelen...
javascriptove fungujici reseni je
http://www.blueboard.cz/kniha_0.php?hid=2x41h330t69ix6k9diudao8usxjx5p
No netvrdím, že to jejich javascriptí ešení nefunguje, ale co je saa špatně na tom mým ?
Adam: mne jenom unika, proc pouzivas onclick u submitu, kdyz lepsi je podke me onsubmit u formu... podivam se na to, neco takovyho sem jednou resil, snad si vzpomenu.
<script type="text/javascript">
function over(formular) {
if((formular.popis.value=="")||
(formular.misto.value=="") ||
(formular.email.value=="") ||
(formular.titulek.value=="")) {
alert("Nejsou vyplnena vsechna pole");
return false;
}
else return true;
}
</script>

<form action='nejaky_skript.php' method="post" onsubmit="return over(this)">
<input type="text" name="titulek"><br />
<input type="text" name="email"><br />
<input type="text" name="misto"><br />
<input type="text" name="popis"><br />
<input type="submit" value="Vloz do databaze">
</form>
Dík, zkusím to. Proč ne u formuláře - nějak mne to nenapadlo, máš pravdu, že je to jednodušší. Jinak proč zadávám/š jako argument té funkci hodnotu this ? To je nějaká speciální hodnota která hodí jméno objektu ve kterém je volaná ?
Všechno špatně, nic nefunguje :( To zajištění na zpracovací stránce jsem tam nechal a předělal ten script na to, cos mi, Donny, radil, ale pořád to nefunguje... K vyzkoušení na adams.euweb.cz/zan/insert_article.php.
Tak,jak jsem to napsal, tak to funguje (Opera 8.51). Zkontroluj, jestli mas stejne popisky jako NAME u inputu a v tech podminkach v JS. To slovo this preda odkaz na objekt, jak rikas. Zkontroluj, jestli tam mas to RETURN. Nic jinyho me nenapada. A jeslti to nebude fungovat, tak tu nech _fungujici_ odkaz ;)
To je takové práce to zkopčit do adress baru ? :)
Neco takoveho sem potreboval taky a po pouziti toho co napsal Donny 23. 12. 2005 21:46 funguje bezvadne a bez nejakych velikych uprav... jen prepsat, jak pise ty nazvy podle NAME...
Já už jsem z toho jelen. Tady házím celý kód doslova tak jak je na stránkách. K přezkoušení, že to FAKT nejede je na http://adams.euweb.cz/zan/insert_article.php.

...
<script type="text/javascript">
function over(formular) {
if((formular.popis.value=="") ||
(formular.misto.value=="") ||
(formular.email.value=="") ||
(formular.titulek.value=="")) {
alert("Musíte vyplnit všechna povinná pole (titulek, kraj, email a popis) !");
return false;
};
else {
return true;
};
};
</script>

...

<form action="insert_article_execute.php" method="post" OnSubmit="return over(this)">
<b>Titulek:</b> <input type="text" name="titulek" <?php if((isset($titulek)) && ($titulek!="")){echo "value=\"".$titulek."\"";};?>><br>
Datum ztráty/nálezu: <font size="1">Formát YYYY-MM-DD</font> <input type="text" name="datum_zan"<?php if((isset($datum_zan)) && ($datum_zan!="")) {echo "value=\"".$datum_zan."\"";};?>><br>
<b>Kraj:</b> <SELECT name="misto">
<option value="Jihočeský">Jihočeský</option>
<option value="Jihomoravský">Jihomoravský</option>

...

</select><br>
Kategorie: <SELECT name="kategorie"><option value="Obecné">Obecné</option></select><br>
<b><input type="radio" name="zn" value="ztráta" <?php if($zn=="ztráta") {echo "checked=\"true\"";}; ?> > Ztráta <input type="radio" name="zn" value="nález" <?php if($zn=="nález") {echo "checked=\"true\"";}; ?> > Nález</b><br>
<b>Email:</b> <input type="text" name="email" <?php if((isset($email)) && ($email!="")) {echo "value=\"".$email."\"";};?>><br>
Telefon: <input type="text" name="telefon" <?php if((isset($telefon)) && ($telefon!="")) {echo "value=\"".$telefon."\"";};?>><br>
<b>Popis:</b> <textarea cols="40" rows="5" name="popis"><?php if((isset($popis)) && ($popis!="")) {echo $popis;};?></textarea><br>
Komentář: <input type="text" name="komentar" size="50" <?php if((isset($komentar)) && ($komentar!="")) {echo "value=\"".$komentar."\"";};?>><br>
<input type="submit" value="Vlož do databáze">
</form>

...
Co se týká javascriptu: v IE to fungovalo a pro Mozillu stačilo umazat středníky za těma složenýma závorkama.

if((formular.popis.value=="") ||
(formular.misto.value=="") ||
(formular.email.value=="") ||
(formular.titulek.value=="")) {
alert("Musíte vyplnit všechna povinná pole (titulek, kraj, email a popis) !");
return false;
}
else {
return true;
}