- Home
- Categorie
- Coding e Sistemistica
- PHP
- Motore di ricerca con MATCH e AGAINST
-
Motore di ricerca con MATCH e AGAINST
Salve a tutti,
una cosa molto semplice: siccome ancora non ho dimestichezza con la versione 5 di PHP, avevo scaricato uno script per un motore di ricerca interno, solo che non riesco a far passare la variabili POST in key. Qualcuno mi può gentilmente aiutare?pagina 1:
[HTML]<form name='ricerca' method='post' action='ricerca.php'>
<input name="key" type="text" id="mostraricerca" placeholder="Parola chiave..." size="20" maxlength="20" ><input type="submit" name="ricerca" value="Cerca"></form>[/HTML]pagina 2:
[PHP]$key=$_POST['mostraricerca'];class Search { #CONFIGURA #Parametri ricerca var $fulltext = "titolo"; var $table = "database"; #parametri db var $host = "localhost"; var $password = ""; var $user = "root"; var $db = "database"; #metodo score -> p in percentuale, f in frazione var $pf = "f"; #FINE CONFIGURAZIONE #NON EDITARE OLTRE QUESTA LINEA 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()); } 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 tot 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(); while ($row = mysql_fetch_array($search->res)) { echo $row['titolo'] . " score: " . $search->CalcScore($row['tot']); } [/PHP]
-
Ci sono diversi errori nella classe e il suo approccio non è del tutto corretto.
Fai una bella cosa:
prendi la porzione di codice che fa la richiesta sql e provala. Se funziona, la classe è errata ( ci sono almeno 2 errori ).