[ peromalosutra @ 31.12.2007. 13:02 ] @
Pravim neki manji CMS i zapeo sam na veoma glupoj i iritantnoj sitnici. Znači imam neku admin formu koja sluzi za uplodovanje novog sadržaja na sajt i funkciju insert koja ubacuje sadržaj. Da bi uploadovanje bilo uspješno moraju sva polja u formi da budu popunjena i upravo to bi trebalo da provjerava ovaj if uslov. Medjutim on uvijek vrati TRUE (tj. uvijek se poziva f-ja insert) bez obzira da li je neko polje ostavljeno prazno.

Code:

/* ako podaci nisu popunjeni prikaži formu, inače ih ubaci u bazu */
if (isset($_POST['naslov']) and isset($_POST['opis']) and isset($_POST['tekst']) and isset($_POST['kategorija']) and isset($_POST['link']))
    insert($_POST['naslov'], $_POST['opis'], $_FILES['tekst']['tmp_name'], $_POST['kategorija'], $_POST['link'], $_SESSION['username']);
else
    forma();


Ovako izgleda sama forma:

Code:

<form action= <?php echo substr(strrchr($_SERVER['PHP_SELF'],"/"),1) ?> method="post"; >
    Naslov članka: <input type="text" name="naslov"> <br />
    Kategorija: <input type="text" name="kategorija"> <br />
    Link: <input type="text" name="link"> <br />
    Kratak opis: <input type="text" name="opis"> <br />
    Putanja do sadržaja: 
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <input type="file" name="tekst" /> <br />
    <input type="submit" value="pošalji">
    </form>


Pokušao sam onaj gore uslov napisati i malo drugačije, kao

Code:

if (!isset($_POST['naslov'] or !isset($_POST['opis']) ...


ali se ništa ne mijenja.
[ peromalosutra @ 31.12.2007. 13:33 ] @
Da sam sebi odgovorim, stavio sam
Code:
/* ako podaci nisu popunjeni prikaži formu, inače ih ubaci u bazu */
if (!empty($_POST['naslov']) and !empty($_POST['opis']) and !empty($_POST['tekst']) and !empty($_POST['kategorija']) and !empty($_POST['link']))
    insert($_POST['naslov'], $_POST['opis'], $_FILES['tekst']['tmp_name'], $_POST['kategorija'], $_POST['link'], $_SESSION['username']);
else
    forma();

i tako radi, ali i dalje mi nije jasno zašto nije radio onaj prvi način.
[ Miroslav Ćurčić @ 31.12.2007. 13:46 ] @
Da si u form/method stavio "get", pritiskom na submit bi video da su svi "text" inputi ipak preneti (definisani) iako sa vrednošću praznog stringa. Dakle trebao si da testiraš dali je njihova vrednost različita od "".

Treba da znaš šta su uspešne a šta neuspešne kontrole (mislim da se u školama to tako zove).
Kontrola je uspešna ako prilikom submita prenese neku vrednost pa makar bila i prazan string.

Dakle,
checkbox-ovi će biti uspešni ako su bili čekirani pre submita,
radio dugmad su sva neuspešna osim onog jednog koji je selektovan,
text polja su uvek uspešna, isto i textarea i hidden,
dugme su uspešno samo kad se submit okinut priskom na njega, a ne recimo javaskriptom ili drugim dugmetom.
[ peromalosutra @ 31.12.2007. 14:47 ] @
Hvala na pomoći, zato sam i stavio ovu provjeru sa empty jer sam mislio da je nešto takvo u pitanju, ali nisam bio siguran.