Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: consiglio if annidiati

  1. #1
    Utente bannato L'avatar di payens88
    Registrato dal
    Jun 2010
    Messaggi
    235

    consiglio if annidiati

    raga devo effettuare una ricerca su un db mysql tramite un form ed ho questi parametri
    autore
    titolo
    anno di pubblicazione

    e poi tre radio
    disponibili
    in prestito
    tutti

    La cosa più semplice da fare è quelle di fare degli if annidiati del tipo
    codice:
    if(!empty(autore)){ 
    if (empty($titolo) && empty($annoPubb)&& $radio==1){  
    } else
    if (empty($titolo) && empty($annoPubb)&& $radio==2){  
    }else 
    if (empty($titolo) && empty($annoPubb)&& $radio==3){  
    }
    }
    logicamente devo fare questo mare di if in tutte le combinazioni e non mi sembra efficiente...
    avete qualche idea su come potrei gestire questo problemino??
    grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    bisogna vedere anche come sono le tabelle, cmq non servono tutti questi if... semplicemente creare una stringa da usare per generare la query in base ai parametri, tipo (sequenza di if, ma volendo si possono anche NON usare if):

    Codice PHP:
    $where ''// supponendo che i parametri siano già prelevati ed "escappati"
    if ($autore != ''$where .= "(AUTORE = '$autore') AND ";
    ...
    if (
    $radiobutton!='tutti'$where .= "(DISPONIBILE = '$radiobutton') AND ";
    ... 

  3. #3
    Utente bannato L'avatar di payens88
    Registrato dal
    Jun 2010
    Messaggi
    235
    le tabelle sono
    autore titolo anno_pubblicazione disponibile

    mi puoi fare un esempio pratico perchè non ben capito come fare
    grazie comunque per l'aiuto

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    l'ho fatto l'esempio pratico... raccogli i valori del form nelle variabili e poi posta un pezzo di codice dove generi la query, magari

  5. #5
    Utente bannato L'avatar di payens88
    Registrato dal
    Jun 2010
    Messaggi
    235
    questo è il pezzo di codice equivalente a lla ricerca fatta solo con l'autore e selezionando tutti sul radiobutton
    codice:
    $autore=$_POST["autore"];
     $titolo=$_POST["titolo"]; 
    $annoPubb=$_POST["annoPubb"];
     $radio=$_POST["radio"];  
    $connection=mysql_connect("127.0.0.1","root",""); 
    $selezioneDB=mysql_select_db("archivio");
      if(!empty($autore)){ 	
    if (empty($titolo) && empty($annoPubb)&& $radio==3){ 		
    	$risultato=mysql_query("SELECT * FROM libri WHERE autore='$autore'"); 	
    		$result=mysql_fetch_array($risultato); 	
    		
    		foreach ($result as $var_temp){ 	
    			echo "La ricerca ha portato il seguente risultato"."
    ".$var_temp; 		
    	} 
    	}

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    il problema è che tu usi mysql_query passando come parametro una stringa già composta, invece in base ai dati ricevuti dal form devi creare dinamicamente la query come nell'esempio che ti ho mandato

  7. #7
    Utente bannato L'avatar di payens88
    Registrato dal
    Jun 2010
    Messaggi
    235
    non riesco a capire come funziona il tuo esempio

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Dal tuo esempio...

    Codice PHP:
    $autore=$_POST["autore"];
    $titolo=$_POST["titolo"]; 
    $annoPubb=$_POST["annoPubb"];
    $radio=$_POST["radio"];  
    $connection=mysql_connect("127.0.0.1","root",""); 
    $selezioneDB=mysql_select_db("archivio");

    // Qui cambia la cosa:
    $where "(1=1)";
    if (
    $autore != ''$where .= " AND (autore='$autore')";
    // ... e così via per tutte le condizioni...

    $query "SELECT * FROM libri WHERE $where";
    // Qui torna come prima...

            
    $result=mysql_fetch_array($risultato);     
            
            foreach (
    $result as $var_temp){     
                echo 
    "La ricerca ha portato il seguente risultato"."
    "
    .$var_temp;         
        } 
        } 
    L'importante è definire le condizioni...

  9. #9
    Utente bannato L'avatar di payens88
    Registrato dal
    Jun 2010
    Messaggi
    235
    grazie mille risolto

  10. #10
    Utente bannato L'avatar di payens88
    Registrato dal
    Jun 2010
    Messaggi
    235
    mi sorge un problema quando dico di stamapre a video i libri che non sono in prestito, mi stampa solo il primo come mai?

    codice:
    $autore=$_POST["autore"];
     $titolo=$_POST["titolo"];
     $annoPubb=$_POST["annoPubb"];
     $radio=$_POST["radio"];
      $connection=mysql_connect("127.0.0.1","root",""); $selezioneDB=mysql_select_db("archivio");
       $search_par=''; if(!empty($autore)){ 	
    $search_par.="(autore='$autore') AND ";
     }
     if (!empty($titolo)){ 	
    $search_par.="(titolo='$titolo') AND "; 
    }
     if (!empty($annoPubb)){ 	
    $search_par.="(anno_pub='$annoPubb') AND ";
     }
     if($radio!='Tutti'){ 	
    $search_par.="(disponibile='$radio')";
     }
     $query=mysql_query("SELECT * FROM libri WHERE $search_par"); $result=mysql_fetch_assoc($query);
     echo "La ricerca ha portato il seguente risultato:"."
    "; 
    foreach ($result as $var_temp){ 	
    			echo "
    ".$var_temp;
     }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.