phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Ricerca su campi multipli

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Rispondi
killu
Utente
Utente
Messaggi: 3
Iscritto il: 09/05/2014, 15:05
Sesso: Maschio

Ricerca su campi multipli

Messaggio da killu » 09/05/2014, 15:15

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.

supercapocc
Utente
Utente
Messaggi: 4
Iscritto il: 20/11/2013, 0:29
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.27
Database: mysql

Re: Ricerca su campi multipli

Messaggio da supercapocc » 18/05/2014, 2:05

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';

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti