Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problema con script php usato come motore di ricerca su campi multipli

    Salve, sono nuovo della programmazione php.
    Ho scritto, aiutandomi a destra e sinistra, una pagina php che dovrebbe andare fare una query su un database.
    Ecco il codice
    Codice PHP:
    <?php
        $connessione 
    mysql_connect("localhost""...""...") or die(mysql_error()); 
        
    mysql_select_db("...");

            
            
    $tabella addslashes($_POST["tabella"]);
            
    $campo1 addslashes($_POST["campo1"]);
            
    $campo2 addslashes($_POST["campo2"]);
            
    $campo3 addslashes($_POST["campo3"]);
            
    $campo4 addslashes($_POST["campo4"]);
            
    $opzione1 addslashes($_POST["opzione1"]);
            
    $opzione2 addslashes($_POST["opzione2"]);
            
    $opzione3 addslashes($_POST["opzione3"]);
            
    $opzione4 addslashes($_POST["opzione4"]);
            
    $opzione5 addslashes($_POST["opzione5"]);
            
            
            
    $query=mysql_query("SELECT $campo1,$campo2,$campo3,$campo4 FROM $tabella WHERE $campo1 LIKE '%$opzione1%' OR $campo2 LIKE '%opzione2%' OR $campo3 LIKE '%opzione3%'OR $campo4 LIKE '%opzione4%'"$connessione);

            
    $total mysql_num_rows($query);

              if(
    $total == 0) {
                  echo 
    'Non è stato trovato niente'
        
                } else {

                while(
    $r mysql_fetch_array($query)){ 
                print (
    $r["$campo1"]) . "<table>" " ";
            print (
    $r["$campo2"]). " ";
            print (
    $r["$campo3"]). " ";
            print (
    $r["$campo4"]) . " " ."</table>";
               }         
            
    }


    ?>

    <form method="POST">


    Search: </p>
    Tabella:<input type="text" name="tabella" id="tabella" />

    Campo1:<input type="text" name="campo1" id="campo1" />

    Campo2:<input type="text" name="campo2" id="campo2" />

    Campo3:<input type="text" name="campo3" id="campo3" />

    Campo4:<input type="text" name="campo4" id="campo4" />

    Opzione1:<input type="text" name="opzione1" id="opzione1" />

    Opzione2:<input type="text" name="opzione2 id="opzione2" />

    Opzione3:<input type="text" name="opzione3" id="opzione3" />

    Opzione4:<input type="text" name"opzione4" id="opzione4" />

    <input type="submit" name="query" id="query" value="Search" /><
    </form>
    Ora se si inseriscono i criteri in tutti e quattro i campi con le relative opzioni di ricerca il tutto funziona egregiamente, ma se voglio fare una ricerca utilizzando, ad esempio, solo il campo 1 con la relativa opzione1 la query mi dice "Non è stato trovato niente". Da quanto ne ho capito succede perchè lo script posta tutti i campi anche se questi sono vuoti e dunque crea un errore nella sintassi di mysql, allora come faccio ad eliminare questo problema e ad inviare i campi che sono effettivamente stati inseriti?
    Inoltre nella riga dove è definita la variabile $total la funzione mysql_num_rows mi da questo warning

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in .../search.php on line 20
    eppure la sintassi della funzione mi sembra corretta...
    Grazie per l'aiuto...

  2. #2
    Ho risolto in parte il mio problema: ho pensato di inserire una nuova variabile $send che funziona sotto condizione if: se i campi non sono riempiti allora la variabile $send dà in pasto alla query sql una stringa di condizioni già scritte, ecco come:

    Codice PHP:
    <?php
        $connessione 
    mysql_connect("localhost""""") or die(mysql_error()); 
        
    mysql_select_db("");

            
            
    $tabella addslashes($_POST["tabella"]);
            
    $campo1 addslashes($_POST["campo1"]);
            
    $campo2 addslashes($_POST["campo2"]);
            
    $campo3 addslashes($_POST["campo3"]);
            
    $campo4 addslashes($_POST["campo4"]);
            
    $opzione1 addslashes($_POST["opzione1"]);
            
    $opzione2 addslashes($_POST["opzione2"]);
            
    $opzione3 addslashes($_POST["opzione3"]);
            
    $opzione4 addslashes($_POST["opzione4"]);
            
    $opzione5 addslashes($_POST["opzione5"]);
            
        If (
    $campo2 VUOTO AND $campo3 VUOTO AND $campo4 VUOTO) {
            
    $send =  ("$campo1 LIKE '%$opzione1%' ");
            }

            
    $query=mysql_query("SELECT * FROM $tabella WHERE $send"$connessione);

            
    $total mysql_num_rows($query);

              if(
    $total == 0) {
                  echo 
    'Non &eacute stato trovato niente'
        
                } else {

                while(
    $r mysql_fetch_array($query)){ 
                echo 
    "<table>" .  ($r["$campo1"]) . ($r["$campo2"]) . ($r["$campo3"]) . ($r["$campo4"]) . "
    "</table>";
           
               }         
            
    }


    ?>

    <form method="POST">


    Search: </p>
    Tabella:<input type="text" name="tabella" id="tabella" />

    Campo1:<input type="text" name="campo1" id="campo1" />

    Campo2:<input type="text" name="campo2" id="campo2" />

    Campo3:<input type="text" name="campo3" id="campo3" />

    Campo4:<input type="text" name="campo4" id="campo4" />

    Opzione1:<input type="text" name="opzione1" id="opzione1" />

    Opzione2:<input type="text" name="opzione2 id="opzione2" />

    Opzione3:<input type="text" name="opzione3" id="opzione3" />

    Opzione4:<input type="text" name"opzione4" id="opzione4" />

    <input type="submit" name="query" id="query" value="Cerca" />
    <input type="reset" name="reset" Value="reset" />
    </form>
    Il problema sta nel fatto che non so come si dice a if che i campi sono vuoti, altrimenti funzionerebbe (credo)!!!
    please help

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