Newsgroup: it.comp.www.php
Titolo: Form - Campi Obbligatori!

Ho impostato un form nel quale immetto i dati da inviare al mio DB MySql.
Il tutto funziona ma ho bisogno di inserire una struttura di controllo
(credo un if (?) ) con il quale verificare che tutti i campi del form siano
stati riempiti.
In pratica vorrei che, se anche un solo campo della form č vuoto, venga
visualizzato un messaggio (tipo una dialog box di avviso di windows ma...va
bene anche un'altra forma purchč funzionale ;-)  ) che mi informi che non ho
inserito dei campi  (magari l'elenco...!) e mi riporti al form stesso in
modo che possa inserire i campi mancanti.
GrAzIe MoLtE in anticipo!
ALE

 campi del form siano stati riempiti.
$campi = array ('email', 'password', 'commento');
$error = false;
foreach ($campi as $campo) {
	if (!array_key_exists ($campo, $_POST)) {
		$error = true;
		break;
	}
}
if ($error) {
	// print errore
} else {
	// inserisci in MySQL
}
Utilizza $_GET al posto di $_POST a seconda del metodo della form.
Prova anche:
http://www.phpclasses.org/browse/package/1368.html
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 GrAzIe MoLtE in anticipo!
Potresti farlo anche con javascript in client side.. così in OnSubmit=return controlla('nomeform') fai un controllo prima ancora che i dati vengano spediti... e nella funzione "controlla()" fai un onFocus sul campo che è vuoto... trovi mille esempi in rete...
CIAO

Grazie Setec!Come al solito gran dritta.
Come avrai capito ho una pagina html con il form che passa i dati del form 
(con GET) ad una pagina PHP che controlla che tutte le varibili trasmesse 
siano valorizzate (con ciclo che mi hai suggerito) e, in caso positivo 
riepiloga i dati forniti e li inserisce nel db altrimenti mostra un 
messaggio del tipo:
echo "Attenzione! Tutti i campi del form ..etc etc. Premi il pulsante 
indietro del browser per tornare al modulo."
Ora la domanda č se con PHP č possibile generare un qualcosa d piů 
"elegante", tipo appunto il msg box cui accennavo nel thread sopra, magari 
validanto il form nel momento che si preme il pulsante di invio del modulo.
Spero di averti chiarito l'idea e... ti ringrazio da subito!
ALE

CIAO
Grazie ma... io ho già più o meno grossi problemi col php visto che ho 
iniziato da poco e non ho sempre molto tempo da dedicargli che... pensar 
anche al java script mi sembra improbo!
All'inizio usavo script presi qua e la ma ora sto cercando di sostituire 
quanto più codice possibile con altro "hand made"!
Comunque grazie anche perchè da quel che ho capito la soluzione Jscript che 
mi proponi dovrebbe proprio rispondere a quel che ho anche richiesto 
poc'anzi rispondendo a Setec nel thread qua sopra!
Magari do uno sguardo oppure se puoi mandami qualcosa da studiare... intanto 
di auguro una buona giornata!ALE

 invio del modulo.
PHP e' lato server, non puoi validare lato client. Per fare quello che
chiedi ti devi affidare ad una tecnologia lato client (es. come
suggerito da fernik - L'Ignorante potresti utilizzare JS).



Prova così:
inserisci nella pagina dove hai il form:
<script language="javascript">
 <!--
  function Controlla() {
    //metti tutti i campi che hai 
    var nome = document.modulo.nome.value;
     var cognome = document.modulo.cognome.value;
     var user= document.modulo.user.value;
      if (nome == "") {
           alert("Il campo Nome è obbligatorio.");
           document.modulo.nome.focus();
           return false;
        }
if (cognome == "") {
           alert("Il campo Cognome è obbligatorio.");
           document.modulo.cognome.focus();
           return false;
        }
if (user == "") {
           alert("Il campo User è obbligatorio.");
           document.modulo.user.focus();
           return false;
        }
//-->
</script> 
e il form:
<form action="..." method="..." nome="modulo">
<input type="text" name="nome">
.....
<input type="button" value="Invia" onClick="return Modulo()">
</form>
Non l'ho testato... ma la dinamica è questa.
CIAO

X favore non ridete e non chiedetemi perchč ma..:
$oggapp = $HTTP_GET_VARS["oggapp"];
$codarea = $HTTP_GET_VARS["codarea"];
$codint = $HTTP_GET_VARS["codint"];
print "$oggapp , $codarea , $codint";
$campi = array ($codarea, $codint, $oggapp);
$error = false;
foreach ($campi as $campo) {
if (!array_key_exists ($campo, $_POST)) {
$error = true;
break;
}
}
if ($error) {
echo "<p align='center'><i><b><font color='#FF0000' 
size='4'>ATTENZIONE!</font></b></i></p>
<p align='center'>&nbsp;</p>
<p align='center'><b><font color='#0000FF'>TUTTI I CAMPI DEL FORM PRECEDENTE
SONO OBBLIGATORI!</font></b></p>
<p align='center'>&nbsp;</p>
<p align='center'><b>Questo messaggio indica che non hai riempito tutti i 
campi
della scheda di inserimento di un nuovo appalto.</b></p>
<p align='center'><b>Premi il pulsante indietro del browser per ripetere
l'immissione.</b></p>";
} else {
$sql="INSERT INTO tblappalti (email,password,commento) values  ('$email', 
'$password', '$commento')";
mysql_query($sql) or print(mysql_error());
}
non funziona piů!
Eppure ieri son riuscito ad inserire un record!
questa č la scringa inviata dal form con GET: 
http://127.0.0.1/Scripts/vAuthenticate/members/schede/ins.php?codarea=Centro&codint=3&ogg=prova
Il print da il risultato corretto delle tre variabili.
Se escludo la porzione di codice tra:
$campi = array ($codarea, $codint, $oggapp);
e
} else {
l'inserimento avviene correttamente!
Se inceve utilizzo "tutto" il codice ottengo sempre la risposta prevista 
quando $error=true!
Non so dove mettere le mani sono due pre che ci sbatto!Presuppongo un 
qualche errore di sintassi in qualche parte ma non lo trovo!
Eppure il codice č relativamente breve!
Boh...help!
ALE 



 if (!array_key_exists ($campo, $_POST)) {
Se utilizzi $_GET come methodo dovresti scrivere:
if (!array_key_exists ($campo, $_GET)) {



Già fatto prima, mi ero sbagliato a riscrivere nel post per il ng.
Risultato: non va!
Mi sembra incredibile...!
Ale

[X Setec]
PS: stavo guardando il tuo sito.
Come sei arrivato nella PHP Maraton?
Stavo cercando di trovare sul sito di riferimento la classifica completa e 
eventualmente cosa avete presentato.
Te sei semplicemente "setec"?
;-) 

 Mi sembra incredibile...!
Nell'array dei campi da verificare devi mettere il nome del campo non
il relativo valore.



Hai ragione!
cosi funziona $campi=array('codarea','codint','oggapp');
a dir il vero l'avevo notato e corretto ma mi andava=!
Probabilmente è dipeso dal fatto che stavo facendo un sacco di modifiche che 
si son mal sovrapposte!
Grazie ancora una volta per l'aiuto!
Buon weekend!
:-)

 cosi funziona $campi=array('codarea','codint','oggapp');
 cancello tutto!
Inserisce anche se non tutti i campi son stati riempiti!

Panico!Continua a non funzionare!
Inserisce i dati nel db anche se non tutti campi del form sono stati
compilati!
ES:
http://.../ins.php?codarea=Centro&codint=3&ogg=prova
Inserisce i dati! [OK]
http://.../ins.php?codarea=Centro&codint=&ogg=prova
Inserisce ugialmente i dati! [ERRATO!]
 
Please!Qualche suggerimento!
Perchè in entrambi i casi suddetti !array_key_exists è sempre true???
Ho provato e riprovato...!
Sto per sclerare!
HELP!
Ale
------------- codice: ------------------
<?php
$conn = mysql_connect("host", "dbuser", "dbpwd") or die ("Connessione non
riuscita: " . mysql_error());
mysql_select_db('prova');
$codarea = $_GET["codarea"];
$codint = $_GET["codint"];
$oggapp = $_GET["oggapp"];
// verifica variabili
print "$oggapp , $codarea , $codint";
$campi=array('codarea','codint','oggapp');
$error = false;
foreach ($campi as $campo) {
if (!array_key_exist($campo, $_GET)) {
$error = true;
break;
}
}
if ($error) {
echo "Errore!Tutti i campi sono obbligatori!";
} else {
$sql="INSERT INTO tblprova (oggapp,codarea,codint) VALUES
('$oggapp','$codarea','$codint')";
mysql_query($sql) or print(mysql_error());
$nID=mysql_insert_id();
echo ("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><font face=\"Bold\"
color=\"#FF0000\">Inserimento nel database eseguito!</p></font><p
align=\"center\">L'identificativo univoco associato è il n.$nID");
}
?>
------------------------- fine codice ------------------------
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Perchè in effetti la chiave esiste. Non devi verificare che esista ma 
che non sia vuota! O meglio, entrambe le cose:
if (!array_key_exist($campo, $_GET) || $_GET[$campo] === '') {
...
