Query per ricerca

alexgentili

Utente Attivo
15 Lug 2010
39
0
0
Ciao a tutti.
Il mio problema da principiante di php è questo:

Ho una tabella che si chiama magazzino che contiene i dati:

id | tipo_negozio | genere
1 | negozio_1 | jeans
2 | negozio_2 | maglia


Ho fatto 2 select che mi propongono i risultati estratti da altre 2 tabelle del db:

$query_tipo = "SELECT * FROM tipo_negozio ORDER BY id";
$result_tipo = mysql_query($query_tipo) or die("Errore...");
$numrows_tipo = mysql_num_rows($result_tipo);
//Realizzo un ciclo for che si ripete per il numero di occorrenze trovate
for($x=0; $x<$numrows_tipo; $x++){
//Recupero il contenuto di ogni record trovato
$resrow_tipo = mysql_fetch_row($result_tipo);
//Stampo il risultato come link in una riga di tabella
echo stripslashes("<option value=\"$resrow_tipo[1]\">".
$resrow_tipo[1]."</option>");
}
}

$query_tipo = "SELECT * FROM genere ORDER BY id";
$result_tipo = mysql_query($query_tipo) or die("Errore...");
$numrows_tipo = mysql_num_rows($result_tipo);
//Realizzo un ciclo for che si ripete per il numero di occorrenze trovate
for($x=0; $x<$numrows_tipo; $x++){
//Recupero il contenuto di ogni record trovato
$resrow_tipo = mysql_fetch_row($result_tipo);
//Stampo il risultato come link in una riga di tabella
echo stripslashes("<option value=\"$resrow_tipo[1]\">".
$resrow_tipo[1]."</option>");
}
}

Ora devo fare una query che mi permetta di ricercare all'interno della tabella magazzino i dati che l'utente vuole estrarre.

Questa ricerca deve poter essere fatta sia dalla prima select da sola( quindi filtrando solo i negozi), sia dalla seconda select da sola, filtrando solo il genere, oppure da tutte e 2 le select assieme, filtrando contemporaneamente ( tipo_negozio e genere ).

Quello che sono arrivato a fare io è la segente query che pero' mi filtra solo le 2 select assieme con la funzione (AND ) oppure una sola select alla volta con la funzione ( OR ) .

$query = "SELECT * FROM magazzino WHERE tipo_negozio='$tipo_negozio' AND genere='$genere ";
$result = mysql_query($query) or die("Errore su esecuzione delle query...");
//conto il numero di occorrenze trovate nel db
$numrows = mysql_num_rows($result);
//se il database è vuoto lo stampo a video
if ($numrows==0) echo "<center><br>"."Nessun articolo trovato !"."</center>";
//Se invece trovo delle occorrenze...

//Realizzo un ciclo for che si ripete per il numero di occorrenze trovate
for($x=0; $x<$numrows; $x++){
//Recupero il contenuto di ogni record trovato
$resrow = mysql_fetch_array($result);
//Stampo il risultato come link in una riga di tabella
$prog_list++;

grazie a chi volesse aiutarmi.
 

micio86

Utente Attivo
Non ho capito molto...

Allora la struttura del db è errata perchè i generi devono avere una loro tabella "generi" con id e descrizione ad esempio, mentre in magazzino avrai il campo id_genere (chiave esterna 1 a N).

Credo ke il tuo sia il solito problema di ricerca no?
Tipo: L'utente ha 2 select in cui ci sono in una tutti i generi e nell'altra tutti i tipi_negozi.
Tu vuoi fare una semplice ricerca che: se l'utente non seleziona nulla vede tutto, se seleziona una delle select filtra.

E' molto semplice, devi praticamente comporre la query a seconda dei casi e poi eseguirla:

Nel form hai 2 select così
HTML:
<select name="tipo_negozio"><?php
//qui cè la $query_tipo
?>
</select>

<select name="genere"><?php
//qui cè la $query_genere!!! Non tipo!
?>
</select>

Qui componi ed esegui la query:
PHP:
//Così selezioni tutto
$q="SELECT * FROM magazzini WHERE 1=1";
if($tipo_negozio=$_POST['tipo_negozio']) {
     $q.=" AND tipo_negozio='$tipo_negozio'";
}
if($genere=$_POST['genere']) {
     $q.=" AND id_genere='$genere'";
}
$q.=" ORDER BY tipo_negozio ASC";
//Qui poi la esegui e fai la nuova lista coi risultati

Capito + o - ???
 
Discussioni simili
Autore Titolo Forum Risposte Data
T Query per ricerca ritardo evento MS Access 7
A [RISOLTO] Query per ricerca campo timestamp MySQL 2
E Aiuto per query PHP 8
V Query per una somma PHP 2
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
Alex_70 actor film query per php PHP 1
G [PHP] Selezionare OGGI anno precedente per query sql PHP 2
elpirata [PHP] Query per ricercare stringa in più colonne PHP 5
S Il metodo $.getJSON() e <select> che non si popola di dati per query troppo grandey Ajax 0
sandropochi [PHP] Query per estrarre record con data successiva a quella odierna PHP 2
Trapano Query in php come ordinare per data e anche per ora PHP 7
M Query mysql per selezioni random in categorie mirate PHP 4
M Access-Query per creare una tabella con la data nel nome tabella MS Access 0
L Vanno bene queste due query per estrarre da due tabelle? MySQL 6
M Query Join per 2 colonne MySQL 1
otto9due Piccolo aiutino per una query.. PHP 3
F Miglior metodo per contare le righe di una query MySQL 2
M query per distinct su data timestamp Database 1
K query per popolare una select tramite ajaxc php e xml ! Ajax 14
N Chronoform: query UPDATE passando per il Confirmation Page Joomla 0
A [risolto] aiuto integrazione query per db calcistico MySQL 2
P [Access 2000] Export query in tanti file (uno per ogni record) MS Access 0
L radio button scattenare get per la query PHP 4
R passare una variabile in query per ORDER BY PHP 6
ivarello Raggruppare Query per mese PHP 1
J Aiuto per una query di eliminazione PHP 5
K creare uno script in php , per generare in modo automatico query PHP 2
Trapano Query per data PHP 1
Trapano Query semplicissima ma non per me :-( PHP 5
EffeElle Problema per una query di aggiornamento record php PHP 35
R Aiutino per query MySql PHP 8
P Query Mysql per inserimento multiplo MySQL 4
F aiuto per query UNIONE mysql MySQL 2
A Query per l'estrazione di occorrenze identiche PHP 1
A Il risultato di una query diviso per lettera PHP 2
L Query per fascie di età Classic ASP 0
E Aiuto per query PHP 8
E due query per due tabelle MySQL 22
grottafelix Query per estrazione record "a settimana" Classic ASP 1
Z query sql e script php per ordinamento dati tabella PHP 2
M query per paginazione record PHP 9
F query per ordine alfabetico ma... PHP 1
A Aiuto, query per Access 2003 MS Access 5
O query per db access PHP 0
giorgione_tg Per eseguire una query... PHP 6
max75 query su due tabelle e dati doppioni MS Access 2
E Query differenza tra tabelle MySQL 5
E Query Alias PHP 4
T Query con date MS Access 1
K Inserimento query Errore 1366 PHP 4

Discussioni simili