Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Motore Ricerca con termine trovato in grassetto

    Ciao a tutti,
    Ho installato il motore un motore di ricerca trovato su freephp.it (se non sbaglio è di Saibal)

    Tutto bene ho fatto anche qualche piccola aggiunta.

    Vorrei però che la parola ricercata venisse visualizzata in grassetto.
    Esempio cerco Micio e vorrei che una tutte le volte che micio è presente nel testo o nel titolo dell'articolo apparissero in grassetto.

    Questa la form per la ricerca
    Codice PHP:
    <?
    include("../include/top_foot.inc.php");
    include(
    "config.inc.php");
    top();
    ?>
    <form method=post action=result.php>
    <input type=text name=chiave>

    <input type=submit value=cerca>

    </form>
    <?
    foot
    ();
    ?>

    Questo il file dei risultati
    Codice PHP:
    <?
    include("../include/top_foot.inc.php");
    include(
    "config.inc.php");
    top();
    $db mysql_connect($db_host$db_user$db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $keys explode (","$_POST['chiave']);
    $termine $_POST['chiave'];

    $query "";
    reset ($keys);
    while (list(,
    $parola) = each ($keys)) 
    $parola trim($parola);
    if (
    $parola != "")
    $query .= "Titolo LIKE '%$parola%' OR Testo LIKE '%$parola%' OR name LIKE '%$parola%' OR ";

    }
    $query .= "0";
    $query "SELECT ID, Titolo, Testo, name, surname, DATE_FORMAT(Data,'%d.%m.%Y') as data_art FROM articoli WHERE " $query;
    $result mysql_query($query$db);
    echo 
    "Chiave di ricerca: [b] $termine [/b]
    "
    ;
    $valori mysql_num_rows($result);
    echo 
    "Trovati [b]$valori[/b] risultati

    "
    ;
    while (
    $row mysql_fetch_array($result))

    echo 
    "<a href=\"view.php?id=$row[id]\">" "$row[data_art]"$row[name]"$row[surname]" - $row[Titolo]</a>
    "
    "$row[Testo]"."

    "

    }
    foot();
    ?>
    Ho trovato qualche cosa nel forum ma non ci sono riuscito.
    Grazie in anticipo

  2. #2
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Innanzi tutto ti consiglio di sostiture questo codice
    Codice PHP:
    $keys explode (","$_POST['chiave']);
    $termine $_POST['chiave'];

    $query "";
    reset ($keys);
    while (list(,
    $parola) = each ($keys)) 
    $parola trim($parola);
    if (
    $parola != "")
    $query .= "Titolo LIKE '%$parola%' OR Testo LIKE '%$parola%' OR name LIKE '%$parola%' OR "


    con questo

    Codice PHP:
    $keys explode (","$_POST['chiave']);
    $termine $_POST['chiave'];

    foreach (
    $keys as $parola)
    {
      
    $parola trim($parola);
      if (
    $parola != ""$query .= "Titolo LIKE '%$parola%' OR Testo LIKE '%$parola%' OR name LIKE '%$parola%' OR "

    perchè ti dico questo, perché poi lo devi rifare per far ciò che dici...Dentro il while della query, prima di fare l'echo dei dati, fai:

    Codice PHP:
    foreach ($keys as $parola)
    {
      
    $parola trim($parola);
      if (
    $parola != "")
      {
        
    $row['Titolo'] = ereg_replace("(".$row['Titolo'].")","[b]\\\\1[/b]",$row['Titolo'])
        
    $row['testo'] = ereg_replace("(".$row['testo'].")","[b]\\\\1[/b]",$row['testo'])
      } 

    sincercamente non so se è giusto, però il principio è quello

  3. #3
    Ok grazie,
    adesso purtroppo devo andare.
    Provo e ti farò sapere.
    Ciao e arigrazie

  4. #4
    Ho effettuato la prima modifica che mi ha suggerito
    E fino a qua continua a funzionare

    Forse non ho capito cosa fare quando mi dici
    codice:
    perchè ti dico questo, perché poi lo devi rifare per far ciò che dici...Dentro il while della query, prima di fare l'echo dei dati, fai:
    
        PHP:
        foreach ($keys as $parola)
        {
          $parola = trim($parola);
          if ($parola != "")
          {
            $row['Titolo'] = ereg_replace("(".$row['Titolo'].")","\\1",$row['Titolo'])
            $row['testo'] = ereg_replace("(".$row['testo'].")","\\1",$row['testo'])
          } 
        }
    
    
    
    sincercamente non so se è giusto, però il principio è quello
    intendo dire dove apportare le seconde modifiche che mi dici

  5. #5
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Codice PHP:
    //....
    $result mysql_query($query$db);
    echo 
    "Chiave di ricerca: [b] $termine [/b]
    "
    ;
    $valori mysql_num_rows($result);
    echo 
    "Trovati [b]$valori[/b] risultati

    "
    ;
    while (
    $row mysql_fetch_array($result))

    /*
    INIZIO HIGHLIGHTER
    */
    foreach ($keys as $parola)
    {
      
    $parola trim($parola);
      if (
    $parola != "")
      {
        
    $row['Titolo'] = ereg_replace("(".$row['Titolo'].")","[b]\\1[/b]",$row['Titolo'])
        
    $row['testo'] = ereg_replace("(".$row['testo'].")","[b]\\1[/b]",$row['testo'])
      } 
    }
    /*
    FINE HIGHLIGHTER
    */
    echo "<a href=\"view.php?id=$row[id]\">" "$row[data_art]"$row[name]"$row[surname]" - $row[Titolo]</a>
    "
    "$row[Testo]"."

    "

    }
    foot();
    ?> 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.