- Home
- Categorie
- Coding e Sistemistica
- PHP
- Select con IF
-
Select con IF
Ciao a Tutti,
Ho un problema per quanto riguarda la SELECT in sql.
Vorrei sapere come fare delle select con dentro una scelta tra 2 possibili valori.
Mi spiego meglio.
Io tramite html mi importo i valori dei vari form e ne faccio una select come segue:[PHP]mysql_select_db("biblioteca") or exit ("Errore nell'apertura del database");
$mate=$_POST['materia'];
$classe=$_POST['class'];
$codice=$_POST['codisbn'];
$titolo=$_POST['titolo'];
$autori=$_POST['autori'];
$editore=$_POST['editore'];$sqlcmd="SELECT * FROM libro WHERE ((Materia_Disciplina LIKE '%$mate%') and (Classe_Sezione LIKE '%$classe%') and (codice_volume LIKE '%$codice%') and (Titolo_Sottotitolo LIKE '%$titolo%') and (Autore1_Autore2_Autore3 LIKE '%$autori%') and (Editore LIKE '%$editore%'))";
$risultato=mysql_query($sqlcmd) or die (mysql_error());
if (! $risultato) exit ("Erorre nel comando SELECT");$riga=mysql_fetch_array($risultato);
while ($riga)
{
$id=$riga['IDLibro'];
$mate=$riga['Materia_Disciplina'];
$classe=$riga['Classe_Sezione'];
$codice=$riga['codice_volume'];
$titolo=$riga['Titolo_Sottotitolo'];
$autori=$riga['Autore1_Autore2_Autore3'];
$editore=$riga['Editore'];
$volume=$riga['Volume'];
$prezzo=$riga['Prezzo'];echo "$id, $classe, $mate, $codice, $autori ,$titolo, $volume, $editore, $prezzo <br>";
echo "<br>";$riga = mysql_fetch_array($risultato);
}?>[/PHP]
Nella stessa pagina creo un altra tabella dove inserire i NUOVI dati---
[HTML]<P><CENTER>INSERIRE L'ID LIBRO E I RELATIVI NUOVI CAMPI</CENTER></P>
<FORM ACTION=PERCORSO.php METHOD=POST><TABLE BORDER=3>
<tr>
<td>MATERIA </td><td COLSPAN=1><INPUT TYPE=text NAME="materia" MAXLENGTH=20 SIZE=21></td>
<td>CLASSE E SEZIONE </td><td COLSPAN=1><INPUT TYPE=text NAME="class" MAXLENGTH=20 SIZE=21></td>
<TR>
<td>CODICE ISBN </td><td><INPUT TYPE=text NAME="codisbn" MAXLENGTH=13 SIZE=14></td>
<td>TITOLO </td><td><INPUT TYPE=text NAME="titolo" MAXLENGTH=50 SIZE=21></td>
<tr>
<TD>AUTORI </td><TD><INPUT TYPE=text NAME="autori" MAXLENGTH=250 SIZE=51></td>
<td>PREZZO UNITARIO</td><td><INPUT TYPE=text NAME="prezzoun" MAXLEGHT=4 SIZE=5></td>
<tr>
<td>EDITORE </td><td><INPUT TYPE=text NAME="editore" MAXLENGTH=20 SIZE=21></td>
<td>NUMERO DI COPIE </td><td><INPUT TYPE=text NAME="dispon" MAXLENGTH=2 SIZE=3></td>
<TR>
<td>VOLUME </td><td><INPUT TYPE=text NAME="volu" MAXLENGTH=1 SIZE=1></td>
<td>IDLIBRO (obbligatorio) </td><td COLSPAN=1><INPUT TYPE=text NAME="id" MAXLENGTH=3 SIZE=3></td>
<TD COLSPAN=4>
<CENTER>
<INPUT TYPE=submit VALUE="modifica"> <INPUT type="reset">
</CENTER>[/HTML]Con questo creo un form dove inserito l'id della chiave primaria e i vari campi, si connette al DB e va a MODIFICARE i campi tramite questo codice:
[PHP]$id=$_POST['id'];
$mate=$_POST['materia'];
$classe=$_POST['class'];
$codice=$_POST['codisbn'];
$titolo=$_POST['titolo'];
$autori=$_POST['autori'];
$editore=$_POST['editore'];$sqlcmd="UPDATE libro SET ((Classe_Sezione = '$classe') (Materia_Disciplina = '$mate') WHERE id = '$id')";
$risultato=mysql_query($sqlcmd) or die (mysql_error());
if (! $risultato) exit ("Erorre nel comando SELECT");[/PHP]
Il problema è che se NON tutti i campi sono pieni mi va a inserire nel DB spazi vuoti, per questo nel comando UPDATE vorrei mettere una condizione dove: nel caso l'utente ha lasciato un campo vuoto, non modifica quel campo nel DB!
Spero che qualcuno possa aiutarmi in fretta.
Grazie a Tutti
-
Puoi provare semplicemente così:
[php]
foreach($_POST as $postvars){
if(empty($postvars)) {die ("Hai lasciato un campo vuoto!");}
}
[/php]
Questa soluzione è scomoda perchè, nel caso non vuoi rendere tutti i campi obbligatori, ti darà lo stesso errore...
Ti propongo quindi un'altra soluzione, che ho tratto da un mio script:
[php]
$error = "";//$error, variabile vuota se non si verificano errori
#######################################
#####GESTIONE DEGLI ERRORI#############
#######################################
/*
Sfrutta $error[] per riempire l'array
*/
if(isset($_POST['submit'])) {
if(empty($_POST['u_user'])) { $error[] = "Non hai riempito il campo <b>Username</b>!"; }
if(empty($_POST['u_pass'])) { $error[] = "Non hai riempito il campo <b>Password</b>!"; }
if(empty($_POST['gg'])) { $error[] = "Non hai riempito il campo <b>Giorno di nascita</b>!"; }
if(empty($_POST['mm'])) { $error[] = "Non hai riempito il campo <b>Mese di nascita</b>!"; }
if(empty($_POST['aaaa'])) { $error[] = "Non hai riempito il campo <b>Anno di nascita</b>!"; }
if(empty($_POST['u_nome'])) { $error[] = "Non hai riempito il campo <b>Nome!</b>"; }
if(empty($_POST['u_cognome'])) { $error[] = "Non hai riempito il campo <b>Cognome</b>!"; }
if(empty($_POST['s_mail'])) { $error[] = "Non hai riempito il campo <b>E-Mail</b>!"; }
if(empty($_POST['stato'])) { $error[] = "Non hai riempito il campo <b>Stato</b>!"; }
if((!empty($_POST['s_url'])) AND (substr($_POST['s_url'],0,6) == "http://")){
if(!checkurl($_POST['s_url'])) { $error[] = "L ' <b>URL</b> da te inserito non è valido!"; }
}else{
}
if(!checkmail($_POST['s_mail'])){ $error[] = "La <b>E-Mail</b> da te inserita non è valida!";}
if(!checkuser($_POST['u_user'])){ $error[] = "L '<b>UserName</b> da te inserito contiene caratteri non validi!";}
if(!checkuser($_POST['u_pass'])){ $error[] = "La <b>Password</b> da te inserita contiene caratteri non validi!";}
if(!(strlen($_POST['u_pass']) != 4)){$error[] = "La <b>Password</b> deve essere composta da almeno 4 caratteri!";}
if(!checkuser($_POST['u_nome'])){ $error[] = "Il <b>Nome</b> da te inserito contiene caratteri non validi!";}
if(!checkuser($_POST['u_cognome'])){$error[] = "Il <b>Cognome</b> da te inserito contiene caratteri non validi!";}
if(!is_numeric($_POST['mm'])) { $error[] = "Il campo <b>Giorno</b> deve essere numerico!"; }//Controllo pressapoco inutile, ma nel caso si manomettessero i dati mandati via post, può rivelarsi utile..
if(!is_numeric($_POST['gg'])) { $error[] = "Il campo <b>Mese</b> deve essere numerico!"; }
if(!is_numeric($_POST['aaaa'])) { $error[] = "Il campo <b>Anno</b> deve essere numerico!"; }
if(!empty($error)){
echo "<font color="red">ATTENZIONE!</font><br>\nSono stati riscontrati i seguenti errori: \n<br>\n";foreach($error as $err){
echo "<font color="red">".$err."</font><br>\n";//Fa un echo di ogni errore
}} else {
ecc....
}
[/php]Praticamente, ad ogni errore riscontrato, riempe un array e, tramite foreach, fa un echo di ogni errore....
-
Si, a me però servirebbe che dopo aver inviato i dati nel form in cui NESSUN dato è obbligatorio, si debba fare un UPLOAD nella tabella modificando SOLO i dati inseriti e lasciando intatti i campi in cui nn è stato inserito nulla.
Forse il tuo script è giusto, ma se lo è io non ho capito nulla