Ik heb een simpele mySQL zoekmachine gebouwd.
Op dit moment werkt alles naar behoren maar ik wil dat in de zoekresutaten het woord waarop is gezocht een andere kleur krijgt.
Nu heb ik een functie gevonden.
Maar ik heb geen idee hoe ik deze moet toepassen.

Het gaat om de volgende functie:

<?
function colorResult($zoekterm,$theOutput) {
$zoekterm_nieuw = strtolower($zoekterm);
$zoekterm_nieuw = strtolower($theOutput);
$zoekterm_nieuw = str_replace($zoekterm_nieuw,"<b><font color=red>$zoekterm_nieuw</font></b>",$theNewOutput);
return $theNewOutput;
}
?>

Deze moet worden gebruikt in de volgende pagina:

<?
include ("inc_connect.php");
//-- $HTTP_POST_VARS[] is de <?naam van het zoekveld in het formulier
$sql = "SELECT id,auteur,titel,bericht FROM tblnieuws WHERE bericht LIKE '%$HTTP_POST_VARS[zoekterm]%'";

//-- voer de SQL code uit en zet dit in een variabele zodat we zometeen kunnen
//-- kijken of er een resultaat is
$res = mysql_query($sql);


//-- bekijk nu of er een resultaat is, of het zoekwoord dus gevonden is of niet
if (mysql_num_rows($res) >= 1)
{
//-- er is een resultaat gevonden, toon de resultaten via een while () loop
while ($row = mysql_fetch_array($res))


{

echo "<p>Bericht door: <b>$row[auteur]</b><br>";
echo "Titel: <b>$row[titel]</b><br>";
echo "Bericht: <b>$row[bericht]</b></p>";
}

echo "<a href=\"index.php\" title=\"terug\">terug</a>";
}
//-- als er geen resultaat is gevonden, dus als het zoekwoord niet gevonden is:
else
{
echo "<p>Er is niets gevonden op jouw zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";

echo "<p><a href=\"index.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>

Ik hoop dat iemand me kan helpen.
Je moet tijdens het afbeelden van je resultaten de functie gebruiken.

<?
echo "<p>Bericht door: <b>".colorResult($_POST['zoekterm'], $row['auteur'])."</b><br>";
?>

enz.
Ik probeer nu al een paar uur de highlight voor gevonden zoekwoorden in orde te krijgen, maar ik krijg het niet voor elkaar....

Dit is mijn php code:

<?php
include("config.php");
// Highlight functie
$query = mysql_query("SELECT en,nl FROM content WHERE MATCH (en,nl) AGAINST ('".$_GET['q']."' IN BOOLEAN MODE)");
// Highlight search words in document passed on from local search

function colorResult($q,$theOutput) {
$zoekterm_nieuw = strtolower($q);
$zoekterm_nieuw = strtolower($theOutput);
$zoekterm_nieuw = str_replace($zoekterm_nieuw,"<b><font color=red>$zoekterm_nieuw</font></b>",$theNewOutput);
return $theNewOutput;
}

if (mysql_num_rows($query) >= 1) {
while ($row = mysql_fetch_array($query)) {
echo "English Results:<br />";
echo "<b>".colorResult($_POST["q"],$row["en"])."</b><br />";
echo "<hr noshade />";
echo "Nederlandse Resultaten:<br />";
echo "<b>".colorResult($_POST["q"],$row["nl"])."</b><br />";
}
} else {
echo"Er zijn geen overeenkomsten gevonden.<br />There are no results to return.";
}
?>

Wat gaat er hier nu fout dan??? (de q wordt dus uit de url gehaald met ?q=)
ik heb het al voor elkaar :)

Reageren