Avatar billede tlunde Nybegynder
05. oktober 2005 - 12:47 Der er 6 kommentarer og
1 løsning

Hvordan laves en søgefunktion i PHP?

Hejsa,
Jeg har lavet en annonce del til en stor portal, og skal nu igang med at lave både en simpel søgning og en avanceret søgning på annoncerne, men hvordan skal jeg egentlig gøre? Har aldrig rigtigt rodet med at lave en søgefunktion i PHP?

Jeg vil starte med at lave den simple søgning, og her skal man kunne søge på emne kombineret med geografi, og der skal være en fritekstsøgning...

Nogen det kan hjælpe mig igang med den simple søgning?
Avatar billede Slettet bruger
05. oktober 2005 - 13:13 #1
Den simple må jo bare være:

<?php
if ($_GET['sogeord'])
{
    $query = mysql_query("select `title`, `text` from `annoncer`
                          where `felt` like '%" . $_GET['sogeord'] . "%'") or die (mysql_error());
    if (mysql_num_rows($query) >= 1)
    {
        echo "<strong>Vi fandt følgende:</strong><br /><br />";
        while ($foo = mysql_fetch_object($query))
        {
            echo "<h1>" . $foo->title . "</h1><br />";
            echo "<a href=\"annoncer.php?id=" . $foo->id . "\">" . substr($foo->text, 0, 200) . " ...</a>";
            echo "<hr />";
        }
    } else {
        echo "Ingen annoncer var at finde.";
    }
} else {
    // form
}
?>
Avatar billede Slettet bruger
05. oktober 2005 - 13:15 #2
og formen:

echo "<form method=\"get\">";
echo "<label for=\"sogeord\">Søgeord:</label><br />";
echo "<input type=\"text\" name=\"sogeord\" />";
echo "<input type=\"submit\" name=\"submit\" value=\"search!\" />";
echo "</form>";
Avatar billede tlunde Nybegynder
05. oktober 2005 - 13:23 #3
har lavet fritekstsøgning, det må vel bare være sådan her:

          <?
if ($seek) {

db_con();

$sql = mysql_query("select * from annoncer WHERE overskrift like '%$seek%' OR underkategori like '%$seek%'");
$number = mysql_num_rows($sql);
print  "Din s&oslash;gning p&aring;: <b>$seek</b> gav $number resultater";

while ($row = mysql_fetch_array($sql)) {
print "<li><a href=annoncer_vis.php?id=$row[id]>$row[overskrift]</a></li>";
}
} elseif ($sog) {
print "Du skrev ikke noget s&oslash;geord!!";
} else {
}
?>
Avatar billede Slettet bruger
05. oktober 2005 - 13:32 #4
Hvad spørger du om? Hvis du vil have emne med i, så prøv således:

<?php
if ($_GET['sogeord'])
{
    $query = mysql_query("select `id`, `overskrift`, `text` from `annoncer`
                          where `overskrift` like '%" . $_GET['sogeord'] . "%'
                          && `underkategori` = '" . $_GET['emne'] . "'") or die (mysql_error());
    $total = mysql_num_rows($query);
    if ($total >= 1)
    {
        echo "<strong>Vi fandt ialt " . $total . " annoncer, der matchede din søgning:</strong><br /><br />";
        while ($foo = mysql_fetch_object($query))
        {
            echo "<h1>" . $foo->overskrift . "</h1><br />";
            echo "<a href=\"annoncer.php?id=" . $foo->id . "\">" . substr($foo->text, 0, 200) . " ...</a>";
            echo "<hr />";
        }
    } else {
        echo "Ingen annoncer var at finde.";
    }
} else {
    echo "<form method=\"get\">";
    // Emne
    echo "<select name=\"emne\">";
    echo "<option>geografi</option>";
    echo "<option>geografi</option>";
    echo "<option>geografi</option>";
    echo "<option>geografi</option>";
    echo "</select>";
    // Søgeord
    echo "<label for=\"sogeord\">Søgeord:</label><br />";
    echo "<input type=\"text\" name=\"sogeord\" />";
    // Submit-knap
    echo "<input type=\"submit\" name=\"submit\" value=\"search!\" />";
    echo "</form>";
}
?>
Avatar billede tlunde Nybegynder
11. oktober 2005 - 15:10 #5
har opgivet, men takker for interessen...
Avatar billede Slettet bruger
12. oktober 2005 - 12:34 #6
:S så lidt
Avatar billede nkolle Nybegynder
08. januar 2009 - 14:55 #7
Hej gandso.
Jeg ville bare lige sige at din kode har været en stor hjælp for mig.
Stort tak fra mig af.
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