Motore di ricerca, nuovo problema

  • Creatore Discussione Creatore Discussione Sargon
  • Data di inizio Data di inizio

Sargon

Utente Attivo
22 Mar 2012
45
0
0
Ciao a tutti! domanda di programmazione banale ! vorrei inserire nel mio motore di ricerca (si veda il codice) un echo dove, se i risultato sono 0, faccia comparire una scritta di avviso. Ho provato ad utilizzare questo modo ma non funzia!! grazie anticipatamente!:book:

PHP:
<div id="Layer3">
<form action='prova.php' method='post'>
<p class="Stile1">Free Search (All fields).</p>
<p>

<input name='key' type='text' size="100" />


</p>
<p>
<input name="submit" type='submit' value='Search' />
</p>
</form>
<p><font face="Arial" size="2">
<?php

$key = $_POST['key'];
class Search 
{ 
#CONFIGURA 
#Parametri ricerca 
var $fulltext = "author,year,title,"; 
var $table = ""; 
#parametri db 
var $host = "";
var $password = "";
var $user = "";
var $db = "";
#
var $pf = "f"; 
#
#
var $key; 
var $conn; 
var $res; 
var $total; 

function Search($key) 
{ 
$this->key = $key; 
} 

function DbConnectAndSelect() 
{ 
$this->conn = @mysql_connect($this->host, $this->user, $this->password) or die ("Impossibile stabilire una connessione con il server.<br>MySql risponde: " . mysql_error() . "<br>Il codice errore é:" . mysql_errno()); 

@mysql_select_db($this->db, $this->conn) or die ("Impossibile connettersi al database $this->db.<br>MySql risponde: " . mysql_error() . "<br>Il codice errore é:" . mysql_errno()); 
// 
mysql_set_charset('utf8'); // 
} 

function GetResource() 
{ 



$this->DbConnectAndSelect(); 
$sql = "SELECT *, MATCH($this->fulltext) AGAINST('$this->key' IN BOOLEAN MODE) AS tot FROM $this->table WHERE MATCH($this->fulltext) AGAINST('$this->key' IN BOOLEAN MODE) ORDER BY autore DESC"; 
$this->res = mysql_query($sql, $this->conn); 

} 

function CalcScore($tot) 
{ 
switch($this->pf) 
{ 
case "f": 
$key_array = explode(" ", $this->key); 
$this->total = count($key_array); 
return $tot . " / " . $this->total; 
break; 
case "p": 
$key_array = explode(" ", $this->key); 
$this->total = count($key_array); 
$output = intval($tot / $this->total * 100) . "%"; 
return $output; 
break; 
default: 
$key_array = explode(" ", $this->key); 
$this->total = count($key_array); 
return $tot . " / " . $this->total; 

} 
} 

}


$search = new Search($key); 
$search->GetResource(); 


$autore=$row['autore'];
$anno=$row['anno'];
$titolo=$row['titolo'];




while ($row = mysql_fetch_array($search->res)) 
{ 




echo $row['autore']; 
echo $row['anno']; 
echo $row['titolo']; 






}
if(mysql_num_rows($this->res)==0) 
{ 
echo "Nessun risultato trovato"; 
} 



?>
 
Ma funziona? Cioè se trova qualcosa viene stampato a video?
Perché (sono da cellulare quindi scusami se sbaglio) non vedo la riga che da un valore all'array $row[].
Il metodo per contare le righe è giusto..prova a mettere il valore restituito dalla mysql_num_rows() in una variabile e fai una echo per vedere il suo contenuto.
 
ho aggiunto alla fine

}
if(mysql_num_rows($this->res)==0)
{
echo "Nessun risultato trovato";
}


ma non funzia...:-(
 
Prova così:
PHP:
$variabile=mysql_num_rows($this->res);
echo $variabile;
E dimmi cosa ti stampa a video.
 

Discussioni simili