come effettuare la query se nella tendina non stato inserito nessun criterio?

Salve a tutti! vorrei sapere come fare se in una delle tendine l'utente non selezionasse nulla. Penserei di fare un "if" dicendo che se il valore a 0 allora selezionami escludi quella variabile (per esempio brand) ma siccome non conosco bene la sintassi non riesco a farlo mi aiutate? questo il codice:

<?php

// richiamo il file di configurazione

require 'config.php';  

// richiamo il file di connessione  

require 'cerca1.php';  

$db = mysql_connect('localhost', 'root', 'giuliano')                   

or die ("Impossibile connetresi al server $host");   

// preparo la query

$result = mysql_query("SELECT * FROM telefono where (Brand='".$_POST['Brand']."') and (Tipologia='".$_POST['Tipologia']."') and (Nome='".$_POST['Nome']."') order by descrizione ASC");  

$num_results = mysql_num_rows($result);

if ($num_results > 0){   

echo "<center><table border=1>

<tr> <th>CodiceTelefono</th>

<th>Tipologia</th>

<th>Brand</th>

<th>Nome</th>

<th>Descrizione</th>

<th>Prezzo</th>

<th>DotCode</th>

<th>SCode</th>

<th>Colore</th>

<th>FunCode</th> </tr>";    

while($row = mysql_fetch_array($result)) {

echo "<tr>";

echo "<td bgcolor=\"#c0e1ff\">" . $row['CodiceTelefono'] . "</td>";

echo "<td bgcolor=\"#a1e2ff\">" . $row['Tipologia'] . "</td>";

echo "<td bgcolor=\"#a2b6ff\">" . $row['Brand'] . "</td>";

echo "<td bgcolor=\"#a2b3ff\">" . $row['Nome'] . "</td>";

echo "<td bgcolor=\"#ffff00\">" . $row['Descrizione'] . "</td>";

echo "<td bgcolor=\"#c0e1ff\">" . $row['Prezzo'] . "</td>";

echo "<td bgcolor=\"#a1e2ff\">" . $row['DotCode'] . "</td>";

echo "<td bgcolor=\"#a2b6ff\">" . $row['SCode'] . "</td>";

echo "<td bgcolor=\"#a2b3ff\">" . $row['Colore'] . "</td>";

echo "<td bgcolor=\"#ffff00\">" . $row['FunCode'] . "</td>";

echo "</tr>"; }

echo "</table></center>";   }

else{  echo '-->File non trovato<--'; } 

// controllo l'esito if (!$result) {

die("Errore nella query $sql: " . mysql_error()); }    

// libero la memoria di PHP occupata dai record estratti con la SELECT

mysql_free_result($result);  

// chiudo la connessione a MySQL

mysql_close();

?>

Grazie a tutti!

inviato 4 anni fa
Gix02
Gix02
10
modificato 4 anni fa
Mario Santagiuliana
X 1 X

Ecco un modo per scrivere una query che filtra i risultati solo se il filtro presente:

se il parametro una stringa:

SELECT * FROM NOME_TABELLA WHERE
('$parametro' = '' OR NOME_CALONNA = '$parametro') AND ...

se il parametro un numero diverso da zero:

SELECT * FROM NOME_TABELLA WHERE
($parametro = 0 OR NOME_CALONNA = $parametro) AND ...
risposto 4 anni fa
Gianni Tomasicchio
modificato 4 anni fa
X 0 X X

In dati che ricevi in input da un array $_POST dovrebbero sempre essere controllati e varlidati prima di inserirli all'interno di una query SQL.

Il tuo script in questo modo molto debole.

Semplicemente fai:

if($_POST){

    if($_POST['var1'] != '' || $_POST['var1'] != 'quello che deve essere')

        $var1 = $_POST['var1'];

   // etc ....

   $query = "SELECT * FROM tabella $where";

}

Ti costruisci la variabile $where tramite le altre variabili create...con degli if.

risposto 4 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda