Avatar billede -kenner- Nybegynder
03. august 2006 - 16:06 Der er 1 kommentar

Finpudsning af søgefunktion

Hej Eksperter,

Jeg har denne søgefunktion, som jeg gerne vil have lavet nogle justeringer på, men jeg er ikke sikker på hvordan og hvorledes det skal gøres, så hvis i vil hjælpe mig igennem det ville det være lækkert.

Først og fremmest vil jeg have funktionen til at søge i to tableller og udskrive dem i rækkefølge af hvor mange gange søgeordet optrådte i Beskrivelsen, titlen og koden.

Der ud over vil jeg også have fjernet den funktion er highligther søgeordet, da det ikke apsser ind i mit design.

Source.

<form action="index.php?H=Home&U=9" method="POST">
<table width="100%"><tr><td valign="center">
<input type="text" name="sSearch" value="<?php if(isset($_POST['sSearch'])) echo $_POST['sSearch'];?>" style="width: 85%">
<input type="submit" name="search" value="Søg" class="knap" style="width:35px"> <input type="button" name="help" value=" class="knap" style="width:15px"onclick="window.open('pop-up.php?Titel=Søgning&Tekst=For at søge paa mere end et ord skal du lave et MELLEMRUM imellem ordene!<br><br>Du kan ikke bruge X som seperator ved søgning på flere ord!','Eksempel','width=400,height=250');"><br>
</td></tr></table></form>
<?php
if(!empty($_POST['sSearch'])) {
$search_org=$_POST['sSearch'];
$search_titel="LOWER(Titel) LIKE '%".str_replace(" ", "%' OR LOWER(Titel) LIKE '%", $search_org)."%'";
$search_beskrivelse = "LOWER(Beskrivelse) LIKE '%".str_replace(" ", "%' OR LOWER(Beskrivelse) LIKE '%", $search_org)."%'";
$search_kode="LOWER(Kode) LIKE '%".str_replace(" ", "%' OR LOWER(Kode) LIKE '%", $search_org)."%'";
$query=mysql_query("SELECT * FROM koder WHERE $search_titel OR $search_beskrivelse OR $search_kode AND Godkendt = 'Y'") or die(mysql_error());
if(mysql_num_rows($query)>0) {
  $tCount=0;
  $oOutput="<table width='100%' border='0' cellspacing='0' cellspan='0'>";

  $search=explode(" ",$search_org);
  while($row = mysql_fetch_array($query)) {
  $iCount=0;
  $Beskrivelse=$row['Beskrivelse'];
  for($k=0; $k<count($search); $k++) {
    $reg_exp1="/^(|.*\W{1})".strtolower($search[$k])."(\W{1}.*|)$/";
    if(preg_match($reg_exp1, strtolower($row['Beskrivelse']))) {
    $iCount+=substr_count(strtolower($row['Beskrivelse']),$search[$k]);
    $Beskrivelse=str_replace(strtolower($search[$k]),"<b>".strtolower($search[$k])."</b>",$Beskrivelse);
    $iCount+=substr_count(strtoupper($row['Beskrivelse']),$search[$k]);
    $Beskrivelse=str_replace(strtoupper($search[$k]),"<b>".strtoupper($search[$k])."</b>",$Beskrivelse);
    $iCount+=substr_count(ucwords($row['Beskrivelse']),$search[$k]);
    $Beskrivelse=str_replace(ucwords($search[$k]),"<b>".ucwords($search[$k])."</b>",$Beskrivelse); }
    if(preg_match($reg_exp1, strtolower($row['Titel']))) {
    $iCount+=substr_count(strtolower($row['Titel']), $search[$k]); }
    if(preg_match($reg_exp1, strtolower($row['Kode']))) {
    $iCount+=substr_count(strtolower($row['Kode']), $search[$k]); } }

    if($iCount!=0) {
    $oOutput.="<tr>\n<td class='tekst'><b>".$row['Titel']."</b><br>\n";
    $oOutput.=$Beskrivelse."<br>\n";
    $oOutput.="<a href='index.php?H=Koder&K=".$row['ID']."'>Gå til koden »</a></td>\n</tr>";
    $tCount+=$iCount; } }

  if($tCount>0) {
  $oOutput.="<tr>\n<td class=\"tekst\">Der blev fundet ialt ".$tCount." matches på : ".$search_org."</td>\n</tr></table>";
  } else {
  $oOutput="<table width='100%' border='0' cellspacing='0' cellspan='0' class=\"tekst\"><tr><td>Der var ingen matches på : ".$search_org."</td></tr></table>";
      }
  } else {
  $oOutput="<table width='100%' border='0' cellspacing='0' cellspan='0' class=\"tekst\"><tr><td>Der var ingen matches på : ".$search_org."</td></tr></table>";
      }
echo $oOutput;
  }
if(!isset($oOutput)){
    echo"Du skal intaste et søgeord.";
    }
?>

</body>
</html>
Avatar billede -kenner- Nybegynder
03. august 2006 - 19:16 #1
Tabellerne:

koder
- ID
- Titel
- Beskrivelse
- Kode

tutorial
- ID
- Titel
- Beskrivelse
- Kode
- Kode_ID
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester