- Home
- Categorie
- Coding e Sistemistica
- Coding
- Select con IF
- 
							
							
							
							
							
Select con IFCiao 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 