Toon posts:

Zoek woorden in kleur

Pagina: 1
Acties:
  • 33 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb een standaard PHP zoek scriptje aangepast voor mijn interne website om door een forum te zoeken. Nu lukt het zoeken wel ik krijg netjes het resultaat. Nu wil ik het woord waar ik op zoek wordt gehighlight in het resultaat. Ik zoek door een mysql database.
Wat heb ik al gedaan:
-gezocht op internet overal leuk scriptje gevonden voor zoekmachines maar die had ik al
-script aangepast met html code, werd een onwijze rotzooi
-gezocht op tweakers niets gevonden
Dit is mijn php scriptje
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<HTML>
<HEAD>
    <TITLE>Zoekresultaten</TITLE>
</HEAD>
<BODY>
<center>
<h2>Zoekresultaten van het dotproject forum</h2>
<a href="dotSearch.php">Dot search</a> 
<!--
<a href="toevoegen.php">Toevoegen</a> -
<a href="zoeken.php">Opnieuw zoeken</a>
-->
<hr>
</center>
<?php

// verbind met database-server en kies database
    include 'connect.php';

// de doorgegeven POST-variabele ophalen
    $zoekwoord = $_POST["zoekwoord"];

    echo "<center>";
    echo "Gezocht naar <b>".$zoekwoord." </b>.";

    
// zoek in kolom 'message_title' (heeft FULLTEXT-index)
//  $result = mysql_query("SELECT * FROM forum_messages WHERE MATCH (message_title) AGAINST ('$zoekwoord') ORDER BY message_date, message_id ASC") or die(mysql_error());
    $result = mysql_query("SELECT * FROM forum_messages WHERE message_title LIKE '%$zoekwoord%' or message_body LIKE '%$zoekwoord%' ORDER BY message_date, message_id ASC") or die(mysql_error());

$aantal_rijen = mysql_num_rows($result);

if ($aantal_rijen > 0)
    {
    echo " # gevonden: <b>".$aantal_rijen."</b>";
    echo "<hr></center>";
        
    for ($i = 0; $i < $aantal_rijen; $i++)
        {
        $message_id = mysql_result($result, $i, 'message_id');
        $message_title = mysql_result ($result, $i, 'message_title');
        $message_date= mysql_result($result, $i, 'message_date');
        $message_body = mysql_result($result, $i,'message_body');

    // ... en info uit elke rij afbeelden
        echo " <b>Message id</b>: ".$message_id." - ";
        echo " <b>Datum</b>: ".$message_date."<br>";
        echo " <b>Titel</b>: ".$message_title."<br>";
        echo " <b>Body</b>: ".$message_body."<br>";

        // doorklikkers naar verwijderen en veranderen
//      echo "<a href=\"verwijderen.php?&id=$id\">Verwijder</a> of ";
//      echo "<a href=\"veranderen.php?&id=$id\">Verander</a>";
        echo "<hr>";

        } // $i-de rij is afgehandeld
            
    } // next rij (if aantal_rijen groter dan 0)
    else
    {
    echo " - niets gevonden</center>";
    }
?>
</BODY>
</HTML>

  • JER00N
  • Registratie: Maart 2002
  • Niet online
Misschien iets als:

PHP:
1
$message_body = str_replace($zoekwoord, "<div style='background-color: green'>$zoekwoord</div>", $message_body);


Misschien kan je beter een wat uitgebreidere regexp gebruiken dan ik hierboven heb gegeven, maar tis maar een voorbeeld ;)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Zoek eens op het engels zoals wel gebruikelijk is bij programmeren:

"search highlight" bijvoorbeeld.. wedden dat je een berg topics vind?

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 15-05 22:53

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

JER00N: Waarom een regexp gebruiken als je de exacte string al hebt, en dus niet op zoek bent naar een patroon :? Regexpen zijn leuk, maar ook zwaarder dan een string opzoeken en vervangen, en totaal onnodig.

PHP:
1
$blabla = str_ireplace($zoekwoord, '<span class="highlight">'.$zoekwoord.'</span>', $blabla);


Let met name op de i, ik neem aan dat je niet case-sensitive zoekt?

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:05

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op woensdag 02 februari 2005 @ 14:53:
Ik heb een standaard PHP zoek scriptje aangepast voor mijn interne website om door een forum te zoeken. Nu lukt het zoeken wel ik krijg netjes het resultaat. Nu wil ik het woord waar ik op zoek wordt gehighlight in het resultaat. Ik zoek door een mysql database.
Wat heb ik al gedaan:
-gezocht op internet overal leuk scriptje gevonden voor zoekmachines maar die had ik al
-script aangepast met html code, werd een onwijze rotzooi
-gezocht op tweakers niets gevonden
Dit is mijn php scriptje
Als je P&W FAQ - De "quickstart" eens doorkijkt dan zie je dat dit niet de manier is op een topic te starten.
Ik mis bijv. wat je precies hebt geprobeerd en wat daar niet mee lukt. Je zou het ook eens kunnen vragen aan de maker van je script.
Daarnaast is het highlighten van een woord in HTML echt zo spannend niet, en met google is er toch echt wel het 1 en ander te vinden ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.