Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

Søge funktion i php

Forord

Dette 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
  1. <form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>?q=<?php echo $q;?>" />
  2. <input type="text" name="q" value="Search"  /><br />
  3. <input type="submit" value="S&oslash;g" />
  4. </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.
  1. <?php
  2. include('connect.php');
  3. if($_GET['q']){
  4. $q = $_GET["q"];
  5. $query = mysql_query("SELECT * FROM MyTable WHERE sider LIKE '%$q%' ORDER BY id DESC")or die(mysql_error());
  6. $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.
  • LIKE '%$q%'
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.

  • echo "Serveren fandt ".$antal." resultater<br /><br />";
Nu udskriver vi på din skærm hvor mange resultater er blev fundet.
Hvor vi bruger $antal som vi lavede tidligere.

  1. while($row = mysql_fetch_array($query)){
  2. echo "<a href=\"".$row['id'].".html\">".$row['side']."</a><br />";
  3. }
  4. ?>
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
  1. <a href="1.html">side 1</a><br />
  2. <a href="2.html">side 2</a><br />
  3. <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:
  1. <?php
  2. include('connect.php');
  3. if($_GET['q']){
  4. $q = $_GET["q"];
  5. $query = mysql_query("SELECT * FROM users WHERE brugernavn LIKE '%$q%' ORDER BY id DESC")or die(mysql_error());
  6. $antal = mysql_num_rows($query);
  7. echo "Serveren fandt ".$antal." resultater<br /><br />";
  8. while($row = mysql_fetch_array($query)){
  9. echo "<a href=\"".$row['id'].".html\">".$row['brugernavn']."</a><br />";
  10. }
  11. }else{
  12. ?>
  13. <form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>?q=<?php echo $q;?>" />
  14. <input type="text" name="q" value="Search"  /><br />
  15. <input type="submit" value="S&oslash;g" />
  16. </form>
  17. <?php
  18. }
  19. ?>
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 (;
Oprettet af:
  Mail
19:35 13/05/2009
Der er fejl: LIKE '%q%' skal vel være LIKE '%$q%'
Oprettet af:
  Mail
09:43 17/05/2009
Prøv at læse det ordenligt. der står faktisk.
  • $query = mysql_query("SELECT * FROM users WHERE brugernavn LIKE '%$q%' ORDER BY id DESC")or die(mysql_error());
Oprettet af:
  Mail
17:45 19/05/2009
Hov havde ikk set at det var der undskylder.

Fejlen er rettet nu :)
Oprettet af:
  Mail
15:20 01/06/2009
Nice artilkel :D
Oprettet af:
  Mail
19:24 04/10/2009
Ok artikel. 4/5.. :)
Oprettet af:
  Mail
11:07 14/03/2010
thx :D
Oprettet af:
  Mail
13:36 04/06/2010
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-10 | Alle rettigheder forbeholdes