Form per ricerca multipla in MYsql

Paolo Lottini

Nuovo Utente
11 Nov 2012
2
0
0
Ciao a tutti,
ho un problemino su un form per ricerca multipla nel database Mysql.
Tutto bene se ricerco solo un campo, ma se faccio un form con la possibilità di ricercare per titolo opuure per autore o per editore, allora non riesco a farlo funzionare.

Guardando il forum (una benedizione) sono riuscito a preparare il codoce che allego. Premetto che non mastico PHP e che senza di voi non sarei mai potuto arrivare fino a questo punto e per me è già un successo, ma ora proprio non riesco ad andare avanti.

Il codice che allego, funziona bene se cerco un editore, ma se cerco per autore o titolo, mi stampa tutta la lista dei libri!!! perché???

Vista l'importanza della questione, ringrazio fin d'ora chi vorrà aiutarmi, e sono disponibile a elargire un compenso per risolvere il problema (ci possiamo accordare in privato).

Grazie ancora,
Paolo


PHP:
<form action='?ricerca=ok' method='POST'>
<table width="520" height="100" border="1" align="center">
<tbody>
<tr>
<td width="98" height="20">
<font size="4">  Titolo:</font>
</td>
<td width="320" height="20">
<input type="text" size="40" name="cercatitolo">
</td>
</tr>
<tr>
<td width="98" height="20">
<font size="4">  Autore:</font>
</td>
<td width="320" height="20">
<input type="text" size="40" name="cercaautore">
</td>
</tr>
<tr>
<td width="98" height="20">
<font size="4">  Editore:</font>
</td>
<td width="320" height="20">
<input type="text" size="40" name="cercaeditore">
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type='submit' value='Cerca'>
</td>
</tr>
</tbody>
</table>


<?php

// connessione al database

$db_host = "xxxxx";
$db_user = "xxxx";
$db_password = "xxxx";
$db_name = "xxxxxxx";

//connetto il database

$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');

// recupero il valore ricerca inviato con get

$ricerca = $_REQUEST['ricerca'];

// vediamo se è stato inviato, e quindi uguale a ok

if ( $ricerca == 'ok' ) {

// recupero ora le stringhe inviate con post

$cercatitolo = $_REQUEST['cercatitolo'];
$cercaautore = $_REQUEST['cercaautore'];
$cercaeditore = $_REQUEST['cercaeditore'];


// ora depuro la stringa da cercare sul database

$cercatitolo =  mysql_escape_string(stripslashes($cercatitolo));
$cercaautore =  mysql_escape_string(stripslashes($cercaautore));
$cercaeditore =  mysql_escape_string(stripslashes($cercaeditore));

// query per titolo

if ( isset ($cercatitolo)) { $query = "SELECT test_prefixLibri.Titolo, test_prefixAutori.Cognome, test_prefixEditori.Nome, test_prefixLibri.Pagine, test_prefixLibri.Collocazione FROM test_prefixLibri, test_prefixAutori, test_prefixEditori WHERE Titolo LIKE '%$cercatitolo%' AND test_prefixEditori.Id_Editore = test_prefixLibri.Id_Editore AND  test_prefixAutori.Id_Autore = test_prefixLibri.Responsabilità ORDER BY Titolo";

$risultato = mysql_query($query) or die (mysql_error());
$risposta = mysql_query($query) or die ("Utilizza termini più specifici!");
$dentro_la_query= mysql_fetch_assoc($risposta);}

// query per autore

if ( isset ($cercaautore)) { $query = "SELECT test_prefixLibri.Titolo, test_prefixAutori.Cognome, test_prefixEditori.Nome, test_prefixLibri.Pagine, test_prefixLibri.Collocazione FROM test_prefixLibri, test_prefixAutori, test_prefixEditori WHERE prefixAutori.Cognome LIKE '%$cercaautore%' AND test_prefixEditori.Id_Editore = test_prefixLibri.Id_Editore AND  test_prefixAutori.Id_Autore = test_prefixLibri.Responsabilità ORDER BY Titolo";

$risultato = mysql_query($query) or die (mysql_error());
$risposta = mysql_query($query) or die ("Utilizza termini più specifici!");
$dentro_la_query= mysql_fetch_assoc($risposta);}

// query per editore

if ( isset ($cercaautore)) { $query = "SELECT test_prefixLibri.Titolo, test_prefixAutori.Cognome, test_prefixEditori.Nome, test_prefixLibri.Pagine, test_prefixLibri.Collocazione FROM test_prefixLibri, test_prefixAutori, test_prefixEditori WHERE prefixAutori.Cognome LIKE '%$cercaautore%' AND test_prefixEditori.Id_Editore = test_prefixLibri.Id_Editore AND  test_prefixAutori.Id_Autore = test_prefixLibri.Responsabilità ORDER BY Titolo";

$risultato = mysql_query($query) or die (mysql_error());
$risposta = mysql_query($query) or die ("Utilizza termini più specifici!");
$dentro_la_query= mysql_fetch_assoc($risposta);}


// verifica dati

if ( $dentro_la_query == TRUE ) {

// stampa dati

echo "<table border width=”540″ border=”2″ frame=”void” cellpadding=”5″ cellspacing=”0″> 
<thead>
<tr><th>Titolo<th>Autore<th>Editore<th>Pagg.<th>Scaffale</th></tr>
</thead>";

while($row= mysql_fetch_assoc($risultato)) {

$Titolo = $row['Titolo'];
$Cognome = $row['Cognome'];
$Nome = $row['Nome'];
$Pagine = $row['Pagine'];
$Collocazione = $row['Collocazione'];

echo "  <tbody>
<tr bgcolor=”#00FF00″><td><h5>$Titolo</h6><td><h5>$Cognome</h5><td><h5>$Nome</h5><td><h5>$Pagine</h6><td><h5>$Collocazione</h5></tr>
</tbody>";
}
echo " </table>";
}
} else {

echo "Nessun temine alla ricerca trovato";

}



?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
prova in questo modo
PHP:
<?php
//......
$cercatitolo =  mysql_escape_string(stripslashes(trim(($cercatitolo)));//metti un trim per evitare spazi vuoti o solo spazi
$cercaautore =  mysql_escape_string(stripslashes(trim($cercaautore)));
$cercaeditore =  mysql_escape_string(stripslashes(trim($cercaeditore)));
//inizializzi una variabile per il where
$wh = " WHERE 1=1 ";
//poi fai una query sola
if($cercatitolo !=""){
	$wh .= " AND t.Titolo LIKE '%$cercatitolo%' ";//concateno
}
if($cercaautore !=""){
	$wh .= " AND a.Cognome LIKE '%$cercaautore%' ";
}
//hai ripetuto due volte la query cercautore e non hai messo l'editore (hai il nome dell'editore?)
if($cercaeditore !=""){
	$wh .= " AND e.Editore LIKE '%$cercaeditore%' ";
}
//poi costruisci la query con la tua join
$query = "SELECT * FROM test_prefixLibri AS t, test_prefixAutori AS a, test_prefixEditori AS e $wh
		AND e.Id_Editore = t.Id_Editore AND  a.Id_Autore = a.Responsabilità ORDER BY a.Titolo";
//qui puoi mettere un var_dump($query); per vedere se la query vuene scritta come dovrebbe
$risult=mysql_query($query);
if (mysql_num_rows($risult) ==0 ){
	echo "devi affinare la ricerca"; // e troni al form di ricerca
}else{
	//estrat i risultai e li mostri
}
//....
?>
sappimi dire se funzia e se non funzia quli errori da

p.s.
comunque un consiglio: evita di usare le maiuscole nei nomi dei campi (e variabili) si evitano diversi errori
 

Paolo Lottini

Nuovo Utente
11 Nov 2012
2
0
0
Fantastico!
Dopo le tue modifiche gira che è una meraviglia...

solo una parentesi in più dopo il trim in questa riga
PHP:
$cercatitolo =  mysql_escape_string(stripslashes(trim(($cercatitolo)));

Mi hai risparmiato qualche notte insonne e qualche litro di caffè.
Grazie di cuore,
Paolo
 
Discussioni simili
Autore Titolo Forum Risposte Data
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
K [WordPress] Plugin per inserire un form per la ricerca in un database.. come si fa? WordPress 1
U [PHP] form per ricerca multipla: Unknown column 'undefined' in 'where clause' PHP 2
L form immagini per il database PHP 0
U PHP bottone per invio mail o ritorno al form PHP 15
T [PHP] Creare Honeypot per form contatti PHP 10
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
I Guida/Tutorial configurare PHPMailer per inviare mails tramite contact form? PHP 2
M [PHP] Framework per form complessi (configuratore prodotto) PHP 6
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Z [MySQL] Campi corretti per form... MySQL 2
S Concatenare due campi di un form per creare un indirizzo web valido Javascript 7
xone Form completo Testi + multiple image per inserimento Annunci PHP 0
C Come posso integrare il bottone "paga adesso" di paypal e un form php per invio dati? PHP 1
A Form per modifica record database PHP 9
F aiuto per funzionamento sito responsive e form contatti HTML e CSS 29
elpirata Idee per personalizzare form HTML e CSS 9
L errore mysql per form di registrazione PHP 3
E Correzione per form PHP/HTML PHP 3
B Problema form mail per invio doppio allegato PHP 1
P Recupero dati per select form PHP 9
A Problema orario invio mail per form PHP 4
A consiglio uso jquery php per mostrare parte di un form PHP 6
A consiglio uso jquery per mostrare parte di un form jQuery 0
A Aiuto per Select form dinamica PHP 0
L come passare il campo allegato dal file html al fiel php per spedirlo con un form PHP 12
S Form per mandare la mail HTML e CSS 2
M [risolto] Script ajax per form e mappe Ajax 6
B aiuto per Form di eliminazione record PHP 21
asevenx form per formattare testo e inserirlo in databse PHP 1
U form mail per inviare tracciabilità corriere PHP 0
L Aiuto per ultimazione form invio email PHP 3
F Controlli form per Registrazione utenti PHP 9
A Pulsante per compilare una form php in automatico con dati presi da un db PHP 6
F Crear un form Contatti, per un Bed&Breakfast, dinamico, con Wordpress WordPress 3
A form in php o html per raccolta mail PHP 4
A da dove incominciare per fare vari form PHP 2
M Problema con form per accesso area riservata ai soci PHP 2
A problema con un semplice form per un loggin in php PHP 2
M Sicurezza dati form per insert e select in database PHP 11
C Aiuto per form PHP 5
A Aiuto per form email con allegato PHP 4
YellowMan Form mail per WordPress in italiano WordPress 2
P Mercatino Form annunci per regione Classic ASP 8
A Un input di tipo button deve per forza essere contenuto in un Form ?? HTML e CSS 6
R Altri controlii per windows form .NET Framework 2
asevenx problema con funzione per far apparire e scomparire un form di commenti PHP 1
G Inserire un campo mysql in un select per form PHP 3
L Problema e consiglio per form contatti particolare Classic ASP 2
T Form per offerte di lavoro PHP 5

Discussioni simili