Søge funktion i php
ForordDette er min første artikel så det bliver nok ikke den bedste :(
Men vi vil lave en søge funktion i php og mysql. Først skal vi lave selve HTML formen.
search.php
Men som det første skal vi lige indkludere vores connect.php
<form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>?q=<?php echo $q;?>" />
<input type="text" name="q" value="Search" /><br />
<input type="submit" value="Søg" />
</form>
Først laver vi formen og sætter method til get fordi at hvis vi bruge post kan man fx. ikke se hvad man søger på i url'en men også fordi at hvis man søger rundt og man så trykker på linket og trykker tilbage bliver den nød til at gensende de data som man postede.
Altså derfor get.
Så laver vi en action og sætter den til $_SERVER['PHP_SELF'] det er for at gå til den side som vi er på.
q er vores query altså vores indtastede data.
Så laver vi input feltet til at skrive vores data, og sætter name til q fordi det er den vi bruger i vores action. Og naturligvis vores submit knap.
Så nu skal vi i gang med PHP.
<?php
include('connect.php');
if($_GET['q']){
$q = $_GET["q"];
$query = mysql_query("SELECT * FROM MyTable WHERE sider LIKE '%$q%' ORDER BY id DESC")or die(mysql_error());
$antal = mysql_num_rows($query);
Først starte vi php. Så laver vi en if med q hvor vi siger at kun hvis q findes i url'en skal den lave vores query. Så laver vi en variabel med q hvor vi trækker data fra q ud.
Så laver vi vores query hvor vi siger til computeren hvad den skal simde ud på skærmen.
Dette betyder at den skal det som minder om det man skriver. DVS. hvis jeg søger på rowl og i min database ligger der en der hedder rowl.dk vil den også finde den.
Nu udskriver vi på din skærm hvor mange resultater er blev fundet.
Hvor vi bruger $antal som vi lavede tidligere.
while($row = mysql_fetch_array($query)){
echo "<a href=\"".$row['id'].".html\">".$row['side']."</a><br />";
}
?>
Nu kommer vi hertil hvor vi udskriver hvad der blev fundet.
Vi bruger while fordi den så gentager sig. dvs. hvis der fx er 3 resultater vil den i HTML skrive
<a href="1.html">side 1</a><br />
<a href="2.html">side 2</a><br />
<a href="3.html">side 3</a><br />
$row laver vi inde i vores while sætning.
Vores samlede script skulle nu gerne være føglende:
<?php
include('connect.php');
if($_GET['q']){
$q = $_GET["q"];
$query = mysql_query("SELECT * FROM users WHERE brugernavn LIKE '%$q%' ORDER BY id DESC")or die(mysql_error());
$antal = mysql_num_rows($query);
echo "Serveren fandt ".$antal." resultater<br /><br />";
while($row = mysql_fetch_array($query)){
echo "<a href=\"".$row['id'].".html\">".$row['brugernavn']."</a><br />";
}
}else{
?>
<form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>?q=<?php echo $q;?>" />
<input type="text" name="q" value="Search" /><br />
<input type="submit" value="Søg" />
</form>
<?php
}
?>
Som du kan se har jeg indsat en ekstra }else{ for at den kun skal vise vores HTML form hvis man ikke bruger q. Sidst redigeret 15:19 01/06/2009 |
Oprettet af:
PHP
Point modtaget: 250
Rate:
17:08 13/05/2009
|
Kommentarer
Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
Ser fint nok ud, der er nogle steder hvor du godt kunne uddybe forklaringen lidt. Koden er ikke just køn, men da den formodentlig er henvendt til nybegyndere er det vel fint nok :)
4/5 (; |
19:35 13/05/2009
|
|
Der er fejl: LIKE '%q%' skal vel være LIKE '%$q%' |
09:43 17/05/2009
|
Prøv at læse det ordenligt. der står faktisk.
|
17:45 19/05/2009
|
Hov havde ikk set at det var der undskylder.
Fejlen er rettet nu :) |
15:20 01/06/2009
|
|
Nice artilkel :D |
19:24 04/10/2009
|
|
Ok artikel. 4/5.. :) |
11:07 14/03/2010
|
Du skal være oprettet og logget ind for at kommentere en artikel