Avatar billede JJ77 Juniormester
19. januar 2006 - 13:11 Der er 7 kommentarer og
1 løsning

søgefunktion på hjemmeside

Hej Eksperter. Er det muligt at lave en søgefunktion øverst på en side.. Jeg havde tænkt mig at lave en side som hedder soeg.php, som så altid skal vises øverst på nogle bestemte sider.. med en form for kald.
Søgefunktionen skal bestå af et tomt felt hvor man kan skrive et søgeord, og så et dropdown-felt hvor man kan vælge hvilken tabel den skal søge i?
Avatar billede dmdisco Nybegynder
19. januar 2006 - 13:22 #1
<form action="" method="post">
<input type="text" name"search">
<select name="tabel">
  <option value="dintabel 1">dintabel 1</option>
  <option value="dintabel 2">dintabel 2</option>
  <option value="dintabel 3">dintabel 3</option>
</select>
<input type="submit" name="submit" value="Søg">
</form>
<?php
if ($_POST['search']) {
    // indsæt din database connection
    $result = mysql_query("SELECT * FROM ".$_POST['tabel']." WHERE felt1 LIKE '%".$_POST['search']."%'") or die(mysql_error())
    while ($row = mysql_fetch_array($result)) {
        print "der er fundet ".$_POST['search']." i "$row['felt1'];
    }
} elseif ($_POST['submit']) {
    print "Du skal skrive et søgeord";
}
?>
Avatar billede dmdisco Nybegynder
19. januar 2006 - 13:23 #2
hov

<form action="" method="post">
<input type="text" name"search">
<select name="tabel">
  <option value="dintabel 1">dintabel 1</option>
  <option value="dintabel 2">dintabel 2</option>
  <option value="dintabel 3">dintabel 3</option>
</select>
<input type="submit" name="submit" value="Søg">
</form>
<?php
if ($_POST['search']) {
    // indsæt din database connection
    $result = mysql_query("SELECT * FROM ".$_POST['tabel']." WHERE felt1 LIKE '%".$_POST['search']."%'") or die(mysql_error())
    while ($row = mysql_fetch_array($result)) {
        print "der er fundet ".$_POST['search']." i ".$row['felt1']."<br>\n";
    }
} elseif ($_POST['submit']) {
    print "Du skal skrive et søgeord";
}
?>
Avatar billede JJ77 Juniormester
19. januar 2006 - 20:59 #3
er det muligt at lave én seperat side som indeholder søgefunktionen, som man så kan kalde med et form for kald øverst på nogle andre sider?
Avatar billede JJ77 Juniormester
19. januar 2006 - 21:01 #4
altså.. søgefeltet med mulighederne skal stå øverst på nogle bestemte sider, og koden som så bliver kørt når man trykker på søg ligger på en side for sig selv?
Avatar billede dmdisco Nybegynder
19. januar 2006 - 21:59 #5
indsæt dette hvor du vil have formen

<form action="search.php" method="post">
<input type="text" name"search">
<select name="tabel">
  <option value="dintabel 1">dintabel 1</option>
  <option value="dintabel 2">dintabel 2</option>
  <option value="dintabel 3">dintabel 3</option>
</select>
<input type="submit" name="submit" value="Søg">
</form>

----- search.php -----
<?php
if ($_POST['search']) {
    // indsæt din database connection
    $result = mysql_query("SELECT * FROM ".$_POST['tabel']." WHERE felt1 LIKE '%".$_POST['search']."%'") or die(mysql_error())
    while ($row = mysql_fetch_array($result)) {
        print "der er fundet ".$_POST['search']." i "$row['felt1'];
    }
} elseif ($_POST['submit']) {
    print "Du skal skrive et søgeord";
}
?>
Avatar billede JJ77 Juniormester
31. januar 2006 - 20:10 #6
hmmm.. virker ikke...
er det muligt at sætte det ind på den samme side som koden stå, altså i nedenstående kode? ved godt der er meget kode, men det ville være super cool hvis man kunne sætte en søgefunktion ind, som brugte den samme opsætning:=)

<style>
a:link {
    color: #4682B4;
}
a:visited {
    color: #000000;
}
a:active {
    color: #FF0000;
}
a:hover {
    color: #000000;
}
</style>
<style>
<!--
                .stor{
                        color:#000000;
                        font:18 px Times New Roman,helvetica,tahoma,Georgia,verdana,arial,Courier New;
                        text-decoration: none;
                        font-style: normal;                   
                        font-weight: bold;
                       
                }
        -->
          <!--
                .mellem{
                        color:#000000;
                        font:14 px Times New Roman,helvetica,tahoma,Georgia,verdana,arial,Courier New;
                        text-decoration: none;
                        font-style: normal;                   
                        font-weight: bold;
                       
                }
        -->
        <!--
                .lille{
                        color:#585858;
                        font:12px Helvetica,sans-serif, Georgia,;
                        text-decoration: none;
                }
        -->
          <!--
                .lilleS{
                        color:#000011;
                        font:12px Helvetica,sans-serif, Georgia,;
                        text-decoration: none;
                }
        -->
        <!--
                .mini{
                        color:#FFFFFF;
                        font:2px Helvetica,sans-serif, Georgia,;
                        text-decoration: none;
                }
        -->
</style>

<table width="560" border="0" cellspacing="5" cellpadding="0" bgcolor="#FFFFFF">
<tr>
        <td width="360" valign="top"><span class="stor"><b><u>Annonce</u></b></span></td>
        <td width="70" align="center" valign="top"><span class="stor"><b><u>Pris</u></b></span></td>
        <td width="130" align="center" valign="top"><span class="stor"><b><u>Område</u></b></span></td>
    </tr>
    </table>
<?php
require_once("../members/common.php");
//  Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", )
// str klip(str tekst, int længde, int tolerance)

function klip($tekst, $laengde = 200, $tolerance = 10) // $laengde og $tolerance kan udelades
{
    $punktum  = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum
    $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum
    $mere      = "..."; // punktummer hvis mere tekst

    if (strlen($tekst) <= $laengde + $tolerance) {
        $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance
        $mere = ""; // ikke andet
    } elseif ($punktum !== false) {
        $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum
    } elseif ($mellemrum !== false) {
        $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum
    } else {
        $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over)
    }

    return substr($tekst, 0, $slut_pos) . $mere; // udskriv del + evt. punktummer
}

echo "<table border=\"0\" cellspacing=\"5\" cellpadding=\"0\"><tr><td>";

$pr_side = "20"; //Definerer antal resultater pr. side

if (!isset($s)) {
    $s = "0"; //Tjekker om $s - som står for start - er sat, hvis ikke sættes den
}

$g_total = mysql_query("select count(id) as total from salgAfProdukt") or die(mysql_error());
$total = mysql_result($g_total,0);
if($total>$pr_side)
{
if ($total > $s+5){
##
#Find ud af om derskal være et Forrige link
##
if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side
    $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes 
    echo "<a href='?s=$previous_s'><font color=\"#4682B4\">Forrige</font></a> "; //Udskriver linket
}

##
#Find ud af hvis/hvor mange sider der er rows til
##
$page = 1; //Definerer hvor sidetal skal starte
for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere
    if ($start != $s) { //Tjekker om linket vil komme til at pege på den side man er på
        echo "<a href='?s=$start'><font color=\"#4682B4\">$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page
    } else { //Ellers, dvs. hvis linket vil pege på den side man er på..
        echo "<font color=\"#000000\">$page </font>"; //...udskrives værdien af $page bare, altså ikke som link
    }
    $page++; //Lægger en til $page til næste gang løkken køres
}

##
#Find ud af om der skal være et næste link
##
if ($total > $s+$pr_side) { //Tjekker om der er flere sider
    $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes
    echo "<a href='?s=$next_s'><font color=\"#4682B4\">Næste</font></a>"; //Udskriver linket "næste"
}
}
}
echo "</tr></td></table>";
  echo "  <table width=\"560\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"bgcolor=\"#CAD9EA\">
            <tr>
                    <td><span class=\"mini\">&nbsp;</span></td>
                </tr>
        </table>";
$query = mysql_query("select * from salgAfProdukt left join postnr on salgAfProdukt.postNr = postnr.postnr order by id desc limit $s,$pr_side") or die(mysql_error());

while($row = mysql_fetch_array($query)){
   
echo "
  <table width=\"560\" border=\"0\" cellspacing=\"5\" cellpadding=\"0\" bgcolor=\"#FFFFFF\">
  <tr>
  <td width=\"360\" valign=\"top\"><span class=\"mellem\"><a href=\"visSalgsannoncer.php?id=$row[Id]\" target=\"vs\">$row[produkt]</a></span> <br><span class=\"lille\">".klip($row['supplerendeTekst'])."</span></td>
  <td width=\"70\" align=\"center\" valign=\"top\"><span class=\"lilleS\">".$row['pris']." Kr.</span></td>
  <td width=\"130\" align=\"center\" valign=\"top\"><span class=\"lilleS\">".$row['bynavn']."</span></td></tr></table>


<table width=\"560\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"bgcolor=\"#CAD9EA\">
            <tr>
                    <td><span class=\"mini\">&nbsp;</span></td>
                </tr>
        </table>";
   

}

echo "<table border=\"0\" cellspacing=\"5\" cellpadding=\"0\"><tr><td>";

$total = mysql_result($g_total,0);
if($total>$pr_side){

##
#Find ud af om derskal være et Forrige link
##
if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side
    $previous_s = $s-$pr_side; //Regner ud hvor mysql skal starte hvis forrige side kaldes 
    echo "<a href='?s=$previous_s'><font color=\"#4682B4\">Forrige</font></a> "; //Udskriver linket
}

##
#Find ud af hvis/hvor mange sider der er rows til
##
$page = 1; //Definerer hvor sidetal skal starte
for($start=0; $total > $start; $start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere
    if ($start != $s) { //Tjekker om linket vil komme til at pege på den side man er på
        echo "<a href='?s=$start'><font color=\"#4682B4\">$page</font></a> "; //...hvis ikke, udskrives link med værdien af $page
    } else { //Ellers, dvs. hvis linket vil pege på den side man er på..
        echo "<font color=\"#000000\">$page </font>"; //...udskrives værdien af $page bare, altså ikke som link
    }
    $page++; //Lægger en til $page til næste gang løkken køres
}

##
#Find ud af om der skal være et næste link
##
if ($total > $s+$pr_side) { //Tjekker om der er flere sider
    $next_s = $s+$pr_side; //Regner ud hvor mysql skal starte hvis næste side kaldes
    echo "<a href='?s=$next_s'><font color=\"#4682B4\">Næste</font></a>"; //Udskriver linket "næste"
}
}
echo "</tr></td></table>";

?>
Avatar billede JJ77 Juniormester
02. februar 2006 - 04:05 #7
smider du ikke et svar... jeg har nu fået det til at virke, men der er nu bare kommet et nyt problem.. så jeg har oprettet et nyt spg. :)
Avatar billede dmdisco Nybegynder
07. februar 2006 - 10:04 #8
svar
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