Avatar billede -kenner- Nybegynder
17. november 2005 - 04:46 Der er 8 kommentarer og
1 løsning

Hjaelp til soegefunktion!

hej eksperter,

Jeg har arbejdet lidt paa en soegefunktion, men jeg ved dog ikke hvordan jeg skal faa den til at udskrive fra databasen, men den tekst hvor soegeordet/soegeordene optraeder flest gange.

Saa kunne jeg ogsaa taenke mig at hvis brugeren skriver + eller taster space imellem ordene, saa soeger den paa begge/ dem alle.

- Er det noget i kan hjaelpe med?

Kode:
<?php
if(isset($_POST['search']))
{
    include("db.php");
    $search = mysql_escape_string($_POST['sSearch']);
    $query = mysql_query("SELECT * FROM driver WHERE type LIKE '%".$search."%' OR navn LIKE '%".$search."%' OR tekst LIKE '%".$search."%' OR link LIKE '%".$search."%'");

    {
        //Vi fandt noget...
        while($row = mysql_fetch_array($query))
        {
                echo $row['type'] . "<br>";
        echo $row['navn'] . "<br>";
        echo $row['tekst'] . "<br>";
        echo "<a href=\"" . $row['link'] . "\">". $row['link'] ."</a><br>";

        }
    }
    else
    {
        //Vi fandt ikke noget...
        echo "Vi fandt desværre ikke: " . $search . " i vores database, prøv igen!";
    }
}

echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n";
echo "<input type=\"text\" name=\"sSearch\">\n";
echo "<input type=\"submit\" name=\"search\" value=\"Søg\">\n";
echo "</form>\n";

?>
Avatar billede jakobdo Ekspert
17. november 2005 - 08:33 #1
Det med at sortere efter den som er fundet mest eller flest, det tror jeg du skal kode i php.
Avatar billede nielle Nybegynder
17. november 2005 - 18:56 #2
Hvis du har mulighed for at lave et fulltext-index over din tabel, så er det lige det der skal til:

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

Hvis du først undersøger om det er muligt, kan vi tilpasse din kode bagefter. :^)
Avatar billede galle2 Nybegynder
18. november 2005 - 02:55 #3
Hey Kenned fra US....
Kan du ikke bruge noget i denne stil????  Har ikke testet, så jeg ved ikke om det virker. Det skulle gerne løse dit problem med at finde den række i din tabel hvor søgestrengen forekommer flest gange....
Hvis du vil implementere din +/mellemrumsfunktion kan du måske splitte søgestrengen op og udskifte pluser og mellemrum med "AND...et eller andet" (brug php's strreplace funktion), så din SQL sætning tager højde for det. Det har jeg ikke lige overskud til at tænke igennem nu :-).


<?php
if(isset($_POST['search']))
{
    include("db.php");
    $search = mysql_escape_string($_POST['sSearch']);
    $query = mysql_query("SELECT * FROM driver WHERE type LIKE '%".$search."%' OR navn LIKE '%".$search."%' OR tekst LIKE '%".$search."%' OR link LIKE '%".$search."%'");
   
    $maxCount = 0;   
    $result = array();
   
    //Vi fandt noget...
    while($row = mysql_fetch_array($query))
    {
          $tempCount = substr_count($row['type'],'$search') + substr_count(echo $row['navn'],'$search') + substr_count(echo $row['tekst'],'$search');
          if($tempCount > $maxCount){
            $result['type'] = $row['type'];
          $result['navn'] = $row['navn'];
            $result['tekst'] = $row['tekst'];
            $result['link'] = "<a href=\"" . $row['link'] . "\">". $row['link'] ."</a><br>";
            $maxCount = $tempCount;           
          }
    }
    if($result){
        //udskriv resultatet...
        echo $result['type']."<BR>";
        //....osv osv.....   
    }
}
else
{
    //Vi fandt ikke noget...
    echo "Vi fandt desværre ikke: " . $search . " i vores database, prøv igen!";
}


echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n";
echo "<input type=\"text\" name=\"sSearch\">\n";
echo "<input type=\"submit\" name=\"search\" value=\"Søg\">\n";
echo "</form>\n";

?>
Avatar billede galle2 Nybegynder
18. november 2005 - 02:57 #4
Hov, du skal selvfølgelig ikke anvende "echo" inde i substr_count funktionen..... Copy paste fejl fra min side...
Avatar billede -kenner- Nybegynder
19. november 2005 - 00:04 #5
Yep, det virker, men hvordan faar jeg den til at udskrive alle de tekster der indeholder soegeordet?
Avatar billede -kenner- Nybegynder
20. november 2005 - 23:18 #6
Det funker, saa send du bare et svar lille crimmy.
Avatar billede nielle Nybegynder
21. november 2005 - 17:29 #7
1) Hvem er "crimmy"?

2) Hvad virker? Såvidt jeg kan se har du endnu ikke fået løst nogen af de to ønsker du havde til din løsning.

3) Har du kigget på fulltekst-indeks endnu?
Avatar billede -kenner- Nybegynder
21. november 2005 - 23:26 #8
Jeg fik en loesning jeg kunne bygge videre paa, og nu virker det.
Avatar billede -kenner- Nybegynder
06. august 2006 - 12:38 #9
Lukket
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