Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854

    Query con più condizioni (motore di ricerca)

    Ciao Ragazzi,
    dovrei creare un mini motore di ricerca interno al sito, ho impostato un form ove e' possibile impostare quattro condizioni, ma al momento della select non va...
    Dovrei mettere OR secondo me, ma niente, con l'AND da tutti i valori della tabella...


    CODICE PHP:
    Codice PHP:
    if(isSet($_GET["ricerca"])){
        if($_GET["ricerca"]==1){
            include "pages/riassunto.php";
        $ins= mysql_query("SELECT * FROM immobili WHERE categoria=\"$_POST[categoria]\" OR nome=\"$_POST[alloggio]\" OR provincia=\"$_POST[provincia]\" OR citta=\"$_POST[citta]\" ");
            $result=mysql_fetch_array($ins);?>
            <div id="stiletitolo">Alloggi che soddisfano la tua ricerca!</div>

        
    <?php
        
    if($result[0]== ""){
            echo (
    "
    [b]<center>Nessun risultato per la tua ricerca!</center>[/b]"
    );}
        else{
        
    $eventomysql_query("SELECT * FROM immobili WHERE tipologia='affitto' ORDER BY tipologia");
        while(
    $result=mysql_fetch_array($evento)){
    ?>

            <table align="center">
            <tr>
                <td rowspan="4" width="133"><div align="center">[img]<?php echo $result[13];?>[/img]" alt="<?php echo $result[3];?>" width="150" height="100"></div></td>
                <td rowspan="2"></td>
                <td width="400" rowspan="2" id="sottotitolo"><?php echo $result[3]; ?></td>
                <td></td>
            </tr>
            <tr>
              <td>[url="index.php?page=17&amp;visualizza=<?php echo $result[0]; ?>"][img]images/lente.gif[/img][/url]</td>
              </tr>
            <tr>
              <td rowspan="2"></td>
                <td width="400" height="80" rowspan="2" valign="top">
                <?php
                $testo 
    $result[11];
                
    $lung_max 15;
                
    $finale " ....";
                
    $intro intro($testo$lung_max$finale);
                echo 
    $intro;
                
    ?> 
                </td>
                <td>[url="index.php?page=17&amp;modifica=<?php echo $result[0]; ?>"][img]images/mod.gif[/img][/url]</td>
            </tr>
            <tr>
              <td id="sottotitolo">[url="index.php?page=17&amp;cancella=<?php echo $result[0]; ?>"][img]images/canc.gif[/img][/url]</td>
              </tr>
            <tr>
                 <td colspan="4">[img]images/linea_div.jpg[/img]</td>
            </tr>
        <?php ?>
        </table>    
    <?php }}} ?>
    codice:
    <form method="POST" name="modulo" action="index.php?page=1&amp;ricerca=1" onSubmit="return formCheck(this)">
    <fieldset>
    <table border="0" align="center" cellpadding="10" cellspacing="0" width="300">
      <tr>
        <td id="sottotitolo">Categoria</td>
        <td id="sottotitolo">Nome struttura</td>
      </tr>
      <tr>
        <td align="center"><select name="categoria" size="1">
    			<?php $a=mysql_query("SELECT DISTINCT categoria FROM immobili WHERE tipologia='affitto' ORDER BY categoria");
    				  while($result=mysql_fetch_array($a)){?>
    				  <option value="<?php echo $result[0];?>"><?php echo $result[0]?></option>
    			<?php }?>
    		</select>	</td>
        <td align="center"><input type="text" name="alloggio" size="15"></td>
      </tr>
      <tr>
        <td id="sottotitolo">Provincia</td>
        <td id="sottotitolo">Paese</td>
      </tr>
      <tr>
            <td align="center">
    		<select name="provincia">
    		<option selected>Seleziona una provincia!</option>
    		<option value="Agrigento">Agrigento</option>
    		<option value="Caltanissetta">Caltanissetta</option>
    		<option value="Catania">Catania</option>
    		<option value="Enna">Enna</option>
    		<option value="Messina">Messina</option>
    		<option value="Palermo">Palermo</option>
    		<option value="Ragusa">Ragusa</option>
    		<option value="Siracusa">Siracusa</option>
    		<option value="Trapani">Trapani</option>
    		</select>	</td>
            <td align="center">
    		<select name="citta">
    		<option selected>Seleziona un paese!</option>
    			<?php $a=mysql_query("SELECT DISTINCT citta FROM immobili WHERE tipologia='affitto' ORDER BY citta");
    				  while($result=mysql_fetch_array($a)){?>
    				  <option value="<?php echo $result[0];?>"><?php echo $result[0]?></option>
    			<?php }?>
    		</select>	</td>
      </tr>
      <tr>
        <td colspan="2" align="center"><input type="submit" name="submit" value="Effetua la tua ricerca!"/></td>
      </tr>
    </table>
    </fieldset>
    <?php } ?>

  2. #2
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Se metto OR basta che una sola condizione e' verificata e mi visualizza tutto...
    Se metto AND devo essere verificare tutte e 4...
    Io voglio permettere all'utente di poter effettuare la ricerca o per Nome o per Citta o per Provincia o per Tipologia!

  3. #3
    Utente di HTML.it L'avatar di angelo85ct
    Registrato dal
    Dec 2007
    Messaggi
    322
    salve ragazzi, anche io ho un problema del genere.... am non riesco a risorvelo, qualcuno di voi sa come.....perfavore aiutateci entrambi

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Felino
    Se metto OR basta che una sola condizione e' verificata e mi visualizza tutto...
    Se metto AND devo essere verificare tutte e 4...
    Io voglio permettere all'utente di poter effettuare la ricerca o per Nome o per Citta o per Provincia o per Tipologia!
    Cioè vuoi che la ricerca sia effettuata solo per una delle quattro scelte possibili?

    Se caso come fai a decidere qual'è ordine di importanza?

  5. #5
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    A me interessa che se scelgo un campo solo, o due, o tre o tutti e quattro mi torna il risultato desiderato!

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Il problema sorge dal fatto che nella query tu butti i dati arrivati via post e quindi la query se compili un solo campo diventa qualcosa del tipo:

    SELECT * FROM tabella WHERE provincia="MI" AND categoria="" AND altro_campo=""

    Quello che devi fare è una cosa del genere:

    codice:
    $query = "SELECT * FROM tabella";
    $where = "";
    foreach($_POST as $key => $val) {
    
      if(in_array($key, array('citta', 'provincia', 'regione')) {  // qui controlli che ti arrivino solo i
                                                                               // parametri che vuoi 
         if($val) {
            if($where) {
               $where .= " AND ";
            }
            $where.= $key."='".$val."'";
         }
      }
    }
    
    if($where) {
      $query = $query ." WHERE ".$where;
    }

  7. #7
    Utente di HTML.it L'avatar di angelo85ct
    Registrato dal
    Dec 2007
    Messaggi
    322
    salve, io ho provato a fare cosi, ma non mi funziona, spete dove sta l'erore?

    Codice PHP:

    $evento
    ="SELECT * FROM immobili WHERE "
            if (
    "$_POST[categoria]"!=""){
            
    $evento.=$evento "AND categoria=\"$_POST[categoria]\" ";}
        if (
    "$_POST[alloggio]"!=""){
            
    $evento.=$evento "AND nome=\"$_POST[alloggio]\" ";}
        if (
    "$_POST[provincia]"!=""){
            
    $evento.=$evento "AND provincia=\"$_POST[provincia]\" ";}
        if (
    "$_POST[citta]"!=""){
            
    $evento.=$evento "AND citta=\"$_POST[citta]\" ";}    
        while(
    $result=mysql_fetch_array($evento)){ 
    ma mi da il seguente errore :
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programmi\EasyPHP 2.0b1\www\vacanzeinsicilia\pages\ricerca.php on line 16 il quale rigo sarbbe: while($result=mysql_fetch_array($evento)){

  8. #8
    Utente di HTML.it L'avatar di echoweb
    Registrato dal
    Sep 2008
    Messaggi
    419
    Ciao,

    allora facciamo finta che hai 4 campi: nome, cognome, telefono, citta.
    Per prima cosa ti crei la variabile condizione che verrà utilizzata nelle query a seconda dei campi che vengono selezionati nel post.

    Codice PHP:
    $condizione=' 1=1';

    if(
    $nome!=''$condizione.=" or nome_utente='$nome' ";
    if(
    $cognome!=''$condizione.=" or cognome_utente='$cognome' ";
    if(
    $telefono!=''$condizione.=" or telefono_utente='$telefono' ";
    if(
    $citta!=''$condizione.=" or citta_utente='$citta' "
    Alla fine nella query avrai una cosa simile....

    Codice PHP:
    $query="SELECT * FROM immobili WHERE $condizione "
    In questo modo la variabile condizione ha solo le condizioni che vuoi tu....


    "Non soffocare la tua ispirazione e la tua immaginazione,
    non diventare lo schiavo del tuo modello"

    Vincent van Gogh

  9. #9
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    echoweb prima di tutto grazie!

    però...perchè se scrivo:
    Codice PHP:
    $insmysql_query($query);
    while(
    $result=mysql_fetch_array($ins)){ 
    mi viene dato errore?

  10. #10
    Utente di HTML.it L'avatar di angelo85ct
    Registrato dal
    Dec 2007
    Messaggi
    322
    ciao, ho prpvato come hai detto tu con:

    Codice PHP:

        $categoria
    ="$_POST[categoria]";
        
    $nome="$_POST[alloggio]";
        
    $provincia="$_POST[provincia]";
        
    $citta="$_POST[citta]";
        
        
        
        
        
    $condizione=' 1=1';

    if(
    $categoria!=''$condizione.=" or categoria='$categoria' ";
    if(
    $nome!=''$condizione.=" or nome='$nome' ";
    if(
    $provincia!=''$condizione.=" or provincia='$provincia' ";
    if(
    $citta!=''$condizione.=" or citta='$citta' ";
        
        
    $query="SELECT * FROM immobili WHERE $condizione ";
                                    
        
    $insmysql_query($query); 
    solo che se seleziono uno specifico campo del form di ricerca o niente, appena clicco su effettua ricerca, mi seleziona tutto quello che ho nella tabella.

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.