[PHP] Ricerca nel database

  • Creatore Discussione Creatore Discussione titano
  • Data di inizio Data di inizio

titano

Nuovo Utente
29 Ago 2018
2
0
1
Salve,
Ho un piccolo problema con la mia ricerca nel database per i miei libri.
Dopo aver creato e inserito i dati, il database non crea problemi.
Adesso ho creato le pagine html. Attualmente ho un problema con la seguente pagina html/php:
non vedo i dati del primo record, mentre se faccio la richiesta con il nome dell'autore e sono presenti diversi libri, alla fine mi manca sempre 1, cioè il primo. Lo so, perché la ricerca conta i record trovati e mi da il risultato. Quando poi conto nella tabella i libri presenti, mi manca sempre uno.
Vi ringrazio dell'aiuto.
Antonio

Codice html/php:
PHP:
<form method="post" action="cerca.php">
    <input type="text" name="testo" /><br  />
    <input type="submit" value="CERCA"  />
    </form>

<!DOCTYPE html><html>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<head>
<title>Recuperare i dati da un DB MySQL</title>
</head>
<body>
 
<h2 class="intestazione">Risultati della tua ricerca</h2>
<?php include('gestione/config.php'); ?>
<?php

    $hostname="localhost";
   $username="--";
   $password="--";
   $dbname="Libri";
   $usertable="Lista_Libri";
 
   mysql_connect($hostname,$username, $password) or die ("html>script language='JavaScript'>alert('Unable to connect to database! Please try again later.'),history.go(-1)/script>/html>");
   mysql_select_db($dbname);

//recupero quello che hanno scritto
$testo = $_POST['testo'];


//query mysql
$sql_cerca = mysql_query("SELECT * FROM Lista_Libri WHERE (Titolo LIKE '%" . $testo . "%') OR (Sottotitolo LIKE '%" . $testo . "%') OR (Autore LIKE '%" . $testo . "%') OR (ISBN LIKE '%" . $testo . "%')");

//trovati
$trovati = mysql_num_rows($sql_cerca);

//se ci sono risultati
if($trovati >= 0)
{

 echo "<p class='desc' style='margin-left:25px;'>Trovate $trovati voci per il termine <b>".stripslashes($testo)."</b></p>\n";

//inizio il loop
while($row = mysql_fetch_array($sql_cerca)) {

echo "<table border='1'>";
echo "<tr> <th>Titolo</th> <th>Sottotitolo</th> <th>Autore</th> <th>ISBN</th></tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $sql_cerca )) {
   // Print out the contents of each row into a table
   echo "<tr><td>";
   echo $row['Titolo'];
   echo "</td><td>";
   echo $row['Sottotitolo'];
   echo "</td><td>";
   echo $row['Autore'];
   echo "</td><td>";
   echo $row['ISBN'];
   echo "</td></tr>";
}

echo "</table>";

  } //fine LOOP valori trovati

  } //fine risultati if

  else{ //se non ci sono risultati

  // notifica in caso di mancanza di risultati
  echo "Al momento non sono stati pubblicati post/articoli che contengano i termini cercati.";

  }//fine else
mysql_close();
?>

</body>
</html>
Struttura:
Database Libri
Tabella Lista_Libri
Campi titolo, sottotitolo, autore, isbn
 
Ultima modifica di un moderatore:
@titano
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code.gif
quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box inserisci 2.png.JPG

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 
Salve,
In allegato vi mando il codice senza i comandi per creare la tabella nella pagina.

PHP:
<form method="post" action="cerca.php">
    <input type="text" name="testo" /><br  />
    <input type="submit" value="CERCA"  />
    </form>

<h2 class="intestazione">Risultati della tua ricerca</h2>
<?php include('gestione/config.php'); ?>
<?php

    $hostname="localhost";
    $username="---";
    $password="---";
    $dbname="Libri";
    $usertable="Lista_Libri";
    
    mysql_connect($hostname,$username, $password) or die ("html>script language='JavaScript'>alert('Unable to connect to database! Please try again later.'),history.go(-1)/script>/html>");
    mysql_select_db($dbname);

//recupero quello che hanno scritto
$testo = $_POST['testo'];


//query mysql
$sql_cerca = mysql_query("SELECT * FROM Lista_Libri  WHERE (Titolo LIKE '%" . $testo . "%') OR (Sottotitolo LIKE '%" . $testo . "%') OR (Autore LIKE '%" . $testo . "%')");

//trovati
$trovati = mysql_num_rows($sql_cerca);

//se ci sono risultati
if($trovati > 0)
{

echo "<p class='desc' style='margin-left:25px;'>Trovate $trovati voci per il termine <b>".stripslashes($testo)."</b></p>\n";


//inizio il loop
while($row = mysql_fetch_array($sql_cerca)) {

echo '<p>' . $row['Titolo'] . '</p>';
echo '<p>' . $row['Sottotitolo'] . '</p>';
echo '<p>' . $row['Autore'] . '</p>';
echo '<p>' . $row['Editore'] . '</p>';
echo '<p>' . $row['ISBN'] . '</p>';


  } //fine LOOP valori trovati

  } //fine risultati if

  else{ //se non ci sono risultati

  // notifica in caso di mancanza di risultati
  echo "Al momento non sono stati pubblicati post/articoli che contengano i termini cercati.";

  }//fine else

?>

Funziona correttamente.
Grazie.
Antonio
 

Discussioni simili