Pagina 1 di 1

Ricerca su campi multipli

Inviato: 09/05/2014, 15:15
da killu
Salve,

Ho effettuato numerosi tentativi e numerose ricerche ma tutte senza esito.
Come da titolo avrei bisogno di creare una pagina php che fa la ricerca su 2 tabelle dello stesso DB.

In dettaglio:
ho un database "archivio" all interno di questo db ho delle tabelle "nome" "cognome"
e avrei bisogno di qualche suggerimento per impostare la ricerca digitando nome e cognome.

Ho creato una pagina di ricerca

Codice: Seleziona tutto

<center>
Inserisci il cognome, nome oppure il numero di cartella per effettuare la ricerca</p>
<form action="/archivio.php" method="get">
<label>Cognome: <input type="text" name="search"/></label>

<button type="submit">Ricerca</button>
</form>
</center>

                    </div>
ed una pagina di ricerca:

Codice: Seleziona tutto

<html>
<head>
<title>Recuperare i dati da un DB MySql</title>
</head>
<body>

<b><h1><center>ELENCO CARTELLE RICERCATE </center></h1></b>
<BR>
<br>
<br>
<center>Ritorna alla ricerca <a href="/registro/#.php">Ricerca</a></center>


<?
/* dichiariamo alcune importanti variabili per collegarci al database */
$DBhost = "localhost";
$DBuser = "root";
$DBpass = "";
$DBName = "archivio";

/* specifichiamo il nome della nostra tabella */
$table = "cartelle";
$search = $_GET['search'];

/* Connettiamoci al database */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server");
@mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");

/* impostiamo la query e cerchiamo...*/
$sqlquery = "SELECT * FROM `cartelle` WHERE cognome LIKE '%$search%'  ORDER BY NCARTELLA";

$result = mysql_query($sqlquery);
$number = mysql_numrows($result);
$i = 0;
  
if ($number < 1) {
  print "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
}else{
  while ($number > $i) {
 
$theanno = mysql_result($result,$i,"anno");
$thencartella = mysql_result($result,$i,"ncartella");
$thecognome = mysql_result($result,$i,"cognome");
$thenome = mysql_result($result,$i,"nome");
$thenascita = mysql_result($result,$i,"nascita");
$thefirma = mysql_result($result,$i,"firma");
$thedata = mysql_result($result,$i,"data");

   print " <td><tr><p><b>Cognome: </b>$thecognome <b>nome:</b>  $thenome <b>Data di Nascita: </b>$thenascita <b>Anno</b> $theanno  <b>Numero Cartella: </b> $thencartella     <b>Firmata?: </b>$thefirma            <b>Data Fotocopia:</b> $thedata<br>   </tr></td><br> "     ;
    

		$i++;
	
  }
}
?>
</form>
</body>
</html>

Se inserisco solo il cognome, la ricerca viene effettuata.
Ho provato con la funzione union, oppure inserendo and ma senza alcun risultato.

Spero che almeno voi sapiate aiutarmi.

Re: Ricerca su campi multipli

Inviato: 18/05/2014, 2:05
da supercapocc
Due tabelle o due campi? nel senso hai una tabella per i nomi e una per i cognomi? Oppure hai una tabella che chiamiamo UTENTI in cui hai un campo nome e un campo cognome?

Dal codice vedo che hai una sola tabella, CARTELLE. Se così fosse :

Prova con questa query

Codice: Seleziona tutto

$sql = 'SELECT anno, ncartella, cognome, nome, nascita, firma, data,  MATCH(nome, cognome) AGAINST("' . $search . '*" IN BOOLEAN MODE) AS relevance
        FROM CARTELLE
        WHERE MATCH(nome, cognome)
		AGAINST("' . $search . '*" IN BOOLEAN MODE)
		ORDER BY relevance DESC';