Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    [php mysql] aiuto con query dinamica

    salve a tutti.
    avrei bisogno di costruire una query in base ai dati che arrivano da un form, tutti questi dati (in totale 4) possono arrivare alla pagina della query al db o vuoti o pieni, in base a ciò devo costruire dinamicamente la query che contiene una WHERE clause ed i vari AND.
    facendo una ricerca ho trovato questo esempio che mi va a pennello.
    Codice PHP:
    $whereClause "";
    if (! empty(
    $stato_sel)) {
     
    $whereClause "stato='$stato_sel'";
    }
    if (! empty(
    $corso_sel)) {
     if (! empty(
    $whereClause)) {
      
    $whereClause .= " and ";
     } 
     
    $whereClause .= "corso='$corso_sel'";
    }
    if (! empty(
    $whereClause)) {
     
    $whereClause " where ".$whereClause;
    }
    $queryvar "select * from tabella $whereClause "
    il problema è che qui la query si costruisce con 2 variabili in arrivo dal form. io invece ne ho 4. sto facendo la figura del somaro lo so, il funzionamento l'ho capito, ma continuo a sbagliare i vari if annidati e non ne vengo mai a capo. potete darmi una mano?
    Grazie.

  2. #2
    codice:
    $whereClause = "";
    if (! empty($stato_sel)) { 
     $whereClause = " AND stato='$stato_sel' "; 
    } 
    
    if (! empty($secondo_sel)) { 
     $whereClause = " AND stato='$secondo_sel' "; 
    } 
    
    if (! empty($terzo_sel)) { 
     $whereClause = " AND stato='$terzo_sel' "; 
    } 
    
    if (! empty($quarto_sel)) { 
     $whereClause = " AND stato='$quarto_sel' "; 
    } 
    
    $queryvar = "select * from tabella WHERE 1 $whereClause ";

  3. #3
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    ehm no ... non mi sono spiegato bene...
    i dati sono 4 ed anche i campi della tabella sono 4.

    se tutti i dati sono pieni la query da inviare al db potrebbe essere:

    SELECT * FROM tabella WHERE stato = 'italy' AND corso = 'nomecorso' AND amm = '1' AND sede = 'Roma'

    io sono arrivato a stato e corso ma mi manca amm e sede.
    spero di essermi spiegato bene.

  4. #4
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    up

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    9
    Mi dispiace non riesco ad aiutarti.
    Anzi ho io il tuo stesso problema.

    Sto cercando di costruire una funzione di ricerca per la ns. casa editrice dove le variabili provenienti dal form sono 5: (isbn_10, autore, titolo, collana, argomento).
    Se dovessi risolvere ti sarei grato. Non credo che sarà difficile adattar il codice da 4 a 5 variabili.

    Ciao

  6. #6
    non credo di aver capito benissimo ma comunque provo

    Codice PHP:
    $whereClause ""
    if (! empty(
    $stato_sel)) { 
     
    $whereClause "stato='$stato_sel'"

    if (! empty(
    $corso_sel)) { 
     if (! empty(
    $whereClause)) { 
      
    $whereClause .= " and "
     }  
     
    $whereClause .= "corso='$corso_sel'"
    }
    if (! empty(
    $amm_sel)) { 
     if (! empty(
    $whereClause)) { 
      
    $whereClause .= " and "
     }  
     
    $whereClause .= "amm='$amm_sel'"
    }
    if (! empty(
    $sede_sel)) { 
     if (! empty(
    $whereClause)) { 
      
    $whereClause .= " and "
     }  
     
    $whereClause .= "sede='$sede_sel'"

    if (! empty(
    $whereClause)) { 
     
    $whereClause " where ".$whereClause

    $queryvar "select * from tabella $whereClause "
    se non è questo che intendi, spiegami meglio cosa devi fare perchè come l'hai scritto non capisco che differenza ci sia tra il codice che hai mesos tu e quello di margherite.

    Errare e' umano, ma per fare veramente casino serve la password di root.
    Coltiva Linux........Tanto windows si impianta da solo!!!!!
    PHP 4 Ever

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    9
    Credo che Base abbia un problema simile al mio:
    Io ho 1 database "edizioni".
    1 tabella "edizioni"
    5 colonne "isn_10", "autore", "titolo", "collana", "argomento"
    Ho creato la pagina web dal quale il cliente può effettuare la ricerca in base a 1 o più dei 5 elementi della tabella.

    Vorrei riuscire a scivere un codice che renda i risultati della ricerca del cliente.
    Per maggiore chiarezza aggiungo la pagina da dove si effettua la ricerca:

    /////////////////////////////////////////////////////////////////////
    <html>
    <head>
    <title>Catalogo on line</title>
    <style type="text/css">
    TD{color:#353535;font-family:verdana}
    TH{color:#FFFFFF;font-family:verdana;background-color:#336699}
    .Stile1 {font-family: Verdana, Arial, Helvetica, sans-serif}
    </style>
    </head>
    <body>

    <div align="left" class="Stile1">
    <div align="center">IL NOSTRO CATALOGO EDITORIALE
    </div>
    </div>
    <form action="select2.php" method="post">
    <table border="0" width="750" cellspacing="1" cellpadding="3"
    bgcolor="#353535" align="center">
    <tr>
    <td bgcolor="#FFFFFF" width="30%">ISBN 10</td>
    <td bgcolor="#FFFFFF" width="70%">
    <input type="TEXT" name="isbn_10">
    </td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF" width="30%">AUTORE</td>
    <td bgcolor="#FFFFFF" width="70%">
    <input type="TEXT" name="autore">
    </td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF" width="30%">TITOLO</td>
    <td bgcolor="#FFFFFF" width="70%">
    <input type="TEXT" name="titolo">
    </td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">collana</td>
    <td bgcolor="#FFFFFF">
    <select name="MovieType">
    <option value="" selected>collana...</option>
    <option value="master">Master Diritto della Navigazione</option>
    <option value="ccsdd">ccsdd</option>
    <option value="poesia">poesia</option>
    </select>
    </td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">argomento</td>
    <td bgcolor="#FFFFFF">
    <select name="MovieType">
    <option value="" selected>argomento...</option>
    <option value="giuridico">giuridico</option>
    <option value="letteratura">letteratura</option>
    <option value="chimica">chimica</option>
    <option value="economia">economia</option>
    <option value="medicina">medicina</option>
    </select>
    </td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF" colspan=2 align="center">
    <input type="submit" name="Submit" value="Cerca">
    </td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    /////////////////////////////////////////////////////////////////////

    Vi chiedo scusa per la banalità della questione, ma vi sarei grato se poteste girermi l'intero codice. Studio PHP/MySQL da 2 settimane e già al lavoro mi chiedono cose per me complicate!

  8. #8
    allora per quelloc he vuoi fare tu il codice di margerite andava bene, però nel tuo html c'è una cosa che non và: al posto di MovieType nei menu a discesa devi mettere collana e argomento.
    Codice PHP:
    $whereClause "";  
    if (! empty(
    $_GET['isbn_10'])) {  
     
    $whereClause "isbn_10='$_GET['isbn_10']'";  
    }  
    if (! empty(
    $_GET['autore'])) {  
     if (! empty(
    $whereClause)) {  
      
    $whereClause .= " and ";  
     }   
     
    $whereClause .= "autore='$_GET['autore']'";  

    if (! empty(
    $_GET['titolo'])) {  
     if (! empty(
    $whereClause)) {  
      
    $whereClause .= " and ";  
     }   
     
    $whereClause .= "titolo='$_GET['titolo']'";  

    if (! empty(
    $_GET['collana'])) {  
     if (! empty(
    $whereClause)) {  
      
    $whereClause .= " and ";  
     }   
     
    $whereClause .= "collana='$_GET['collana']'";  

    if (! empty(
    $_GET['argomento'])) {  
     if (! empty(
    $whereClause)) {  
      
    $whereClause .= " and ";  
     }   
     
    $whereClause .= "argomento='$_GET['argomento']'";  
    }  
    if (! empty(
    $whereClause)) {  
     
    $whereClause " where ".$whereClause;  
    }  
    $queryvar "select * from tabella $whereClause "
    questo codice ricava i cinque dati mandati dalla form html e ti crea la query da eseguire.

    Errare e' umano, ma per fare veramente casino serve la password di root.
    Coltiva Linux........Tanto windows si impianta da solo!!!!!
    PHP 4 Ever

  9. #9
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    ha ragione mix... non ho poiù risposto xchè andava bene lo script di margherite. all'inizio non lo avevo capito. poi lo adattato.

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    9
    Mi dispiace dover tornare sull'argomento, ma il codice copiato da MIX, mi restituisce errore alla riga:
    codice:
    $whereClause = "isbn_10='$_GET['isbn_10']'";
    Io nel mio form avevo messo action"post", ma sostituendo con "get" non cambia nulla.
    Non è che mi aiutereste a scrivere il codice intero così come va scritto (compreso l'array) per vedere al video il risultato della ricerca?


    P.S. Ho sostituio "MovieType" con "argomento" e "collana"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.