Motore di ricerca interno

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
Su cosa vuoi che effettui la ricerca?
Sulla pagina visualizzata? Su tutti i contenuti del sito?
 
In parte ho risolto, non mi da più errore ma non trova le parole nel sito anche se ci sono, questo è il codice:

http://gruppoalveo.altervista.org/index.php

PHP:
Parola cercata:
<?
    $testo = htmlspecialchars($_POST["testo"]);
    
    if (isset($testo) == false || $testo == " ")
    {
        echo "<span style=\"color:#008000;\">Nessun risultato</span>";
    }
    else
    {
        echo "<span style=\"color:#008000; font-family:verdana; font-style:italic;\">$testo</span>";
    }
     if (isset($testo) == false || $testo == "")
    {
       echo "<span style=\"color:#008000;\">???</span>"; 
?>
<p style="color:#ff0000;">Non hai inserito la parola da cercare!</p>
<?
    }
    else
    {
     $arr_txt = explode(" ", $testo);
        $db = "SELECT * FROM cerca_parole WHERE ";
        for ($i=0; $i<count($arr_txt); $i++)
        {
            if ($i > 0)
            {
                $db .= " AND ";
            }
            $db .= "(titolo LIKE '%" . $arr_txt[$i] . "%' OR descrizione LIKE '%" . $arr_txt[$i] . "%')";
        }
        $db .= " ORDER BY descrizione DESC";
        //echo $db; exit;
        $query = mysql_query($db, $connessione);
        $quanti = mysql_num_rows($query);
        if ($quanti == 0)
        {
?>
<p style="color:#ff0000;">Nessun risultato!</p>
<?
        }
        else
        {
            for($x=0; $x<$quanti; $x++)
            {
                $rs = mysql_fetch_row($query);
                $id = $rs[0];
                $titolo = $rs[1];
?>
<p><a href="leggi.php?id=<?echo $id?>"><?echo $titolo?></a></p>
<?
            }
        }
    }
?>
 
Ultima modifica:
ciao
prova a correggere così

PHP:
<?php
//....
$arr_txt = explode(" ", $testo);
$arr_txt = array_map("trim", $arr_txt);
$db = "SELECT * FROM cerca_parole WHERE 1=1 ";
for ($i=0; $i<count($arr_txt); $i++){
            //if ($i > 0)
            //{
                //$db .= " AND ";
            //}
	$db .= "AND (titolo LIKE '%" . $arr_txt[$i] . "%' OR descrizione LIKE '%" . $arr_txt[$i] . "%')";
}
$db .= " ORDER BY descrizione DESC";
        //echo $db; exit;
var_dump($db);//poi lo togli
$query = mysql_query($db, $connessione);
var_dump($query);//poi lo togli
//......
?>
e verifica i var_dump
 
ciao
prova a correggere così

PHP:
<?php
//....
$arr_txt = explode(" ", $testo);
$arr_txt = array_map("trim", $arr_txt);
$db = "SELECT * FROM cerca_parole WHERE 1=1 ";
for ($i=0; $i<count($arr_txt); $i++){
            //if ($i > 0)
            //{
                //$db .= " AND ";
            //}
	$db .= "AND (titolo LIKE '%" . $arr_txt[$i] . "%' OR descrizione LIKE '%" . $arr_txt[$i] . "%')";
}
$db .= " ORDER BY descrizione DESC";
        //echo $db; exit;
var_dump($db);//poi lo togli
$query = mysql_query($db, $connessione);
var_dump($query);//poi lo togli
//......
?>
e verifica i var_dump

Stampa questo:

Parola cercata: vitaminestring(126) "SELECT * FROM cerca_parole WHERE 1=1 AND (titolo LIKE '%vitamine%' OR descrizione LIKE '%vitamine%') ORDER BY descrizione DESC" resource(14) of type (mysql result)
 
Sembra che non trova le parole che ci sono nel sito, questo è il db

Img_01.jpg
 
Dai che risolviamo questa ultima cosetta e poi ti lascio in pace :fonzie:
 
ciao
prova a correggere
PHP:
<?php
//.....
	if(mysql_num_rows($query)== 0){
?>
	<p style="color:#ff0000;">Nessun risultato!</p>
<?php	
	}else{
		while($rs = mysql_fetch_array($query)){
			$id = $rs['id'];
			$titolo = $rs['titolo'];
			echo "<p><a href=\"leggi.php?id= $id\">$titolo</a></p>";
		}
	}
//.....
?>
poi NON usare gli shorttag <? ma <?php
 
ciao
prova a correggere
PHP:
<?php
//.....
	if(mysql_num_rows($query)== 0){
?>
	<p style="color:#ff0000;">Nessun risultato!</p>
<?php	
	}else{
		while($rs = mysql_fetch_array($query)){
			$id = $rs['id'];
			$titolo = $rs['titolo'];
			echo "<p><a href=\"leggi.php?id= $id\">$titolo</a></p>";
		}
	}
//.....
?>
poi NON usare gli shorttag <? ma <?php

Non trova niente

PHP:
Parola cercata:
<?php
    $testo = htmlspecialchars($_POST["testo"]);
    
    if (isset($testo) == false || $testo == " ")
    {
    echo "<span style=\"color:#008000;\">Nessun risultato</span>";
    }
    else
    {
    echo "<span style=\"color:#008000; font-family:verdana; font-style:italic;\">$testo</span>";
    }
     if (isset($testo) == false || $testo == "")
    {
    echo "<span style=\"color:#008000;\">?????</span>"; 
?>
<p style="color:#ff0000;">Non hai inserito la parola da cercare!</p>
<?php
    }
    else
    {
    $arr_txt = explode(" ", $testo); 
    $arr_txt = array_map("trim", $arr_txt); 
    $db = "SELECT * FROM cerca_parole WHERE 1=1 "; 
    for ($i=0; $i<count($arr_txt); $i++){ 
            //if ($i > 0) 
            //{ 
                //$db .= " AND "; 
            //} 
    $db .= "AND (titolo LIKE '%" . $arr_txt[$i] . "%' OR descrizione LIKE '%" . $arr_txt[$i] . "%')"; 
} 
    $db .= " ORDER BY descrizione DESC"; 
//var_dump($db); poi lo togli 
    $query = mysql_query($db, $connessione); 
//var_dump($query); poi lo togli 
  if(mysql_num_rows($query)== 0){ 
?> 
    <p style="color:#ff0000;">Nessun risultato!</p> 
<?php     
    }else{ 
        while($rs = mysql_fetch_array($query)){ 
            $id = $rs['id']; 
            $titolo = $rs['titolo']; 
            echo "<p><a href=\"leggi.php?id= $id\">$titolo</a></p>"; 
        } 
    } 
}
?>
 
ciao
eppure i var_dump dicono che la query viene eseguita.

dimenticavo:
ti dice:Nessun risultato!
oppure non vedi nulla?
sei sicuro che le parole siano giuste? es cerca e Cerca?
inoltre vedo che metti
htmlspecialchars($_POST["testo"])
per fare delle prove togli htmlspecialchars
 
Ultima modifica:
ciao
questo devi saperlo tu, se è vuoto è evidente che non trova nulla, prova a vedere la tabella con il phpmyadmin
Certo che è vuoto, io ho creato le tabelle coma da post #10 dentro non c'è niente, non so nemmeno a cosa servano 2, ho seguito le istruzioni dell'articolo che c'è su questo forum.
 
ciao
guarda che gli articoli sono un esempio, non possono sapere come uno denomina le tabelle e i relativi campi.
la ricerca devi farla sulla/e tua/tue tabella/e (non mi ricordo come si chiamano)
 
ciao
guarda che gli articoli sono un esempio, non possono sapere come uno denomina le tabelle e i relativi campi.
la ricerca devi farla sulla/e tua/tue tabella/e (non mi ricordo come si chiamano)
Allora c'è qualcosa che non capisco io, questo è il db, dimmi cosa fare

Img_01.jpg
 
ciao
la ricerca devi farla sulle tue tabelle, quella dell'articolo è solo un esempio.
come detto non mi ricordo i nomi delle tuo tabelle e dei campi dove hai messo i tuoi dati.
devi cambiare il nome della tabella da cerca_parole con il nome della tua e (se serve) i nomi dei campi.
la tabella cerca_parole NON ti serve
 

Discussioni simili