Avatar billede BrJoe Nybegynder
27. august 2009 - 02:04 Der er 5 kommentarer og
1 løsning

WHERE statement problemer

Jeg sidder og laver en søgefunktion og har denne kode:

$query = mysql_query("SELECT * FROM brugere WHERE position LIKE '%$search%' ORDER BY id DESC")or die(mysql_error());

Det virker også fint, men jeg vil gerne kunne søge i flere rækker i min tabel som feks. firstname og lastname osv.

Så ville koden se sådan ud ikke?

$query = mysql_query("SELECT * FROM brugere WHERE position AND firstname AND lastname LIKE '%$search%' ORDER BY id DESC")or die(mysql_error());

Har også prøvet dette:

$query = mysql_query("SELECT * FROM brugere WHERE position AND firstname OR lastname LIKE '%$search%' ORDER BY id DESC")or die(mysql_error());


Men kan simpelthen ikke få det til at virke, er der nogen der har en idé om hvad jeg skal gøre?

Tak på forhånd.
Avatar billede xicrow Nybegynder
27. august 2009 - 02:58 #1
Hey BrJoe.

For det første vil jeg nok mene at spørgsmålet hører til under SQL, evt. MySQL kategorien (hvis der er sådan en).

For det andet, så skal din forespørgsel se således ud:
SELECT *
FROM brugere
WHERE position LIKE '%$search%' AND
      firstname LIKE '%$search%' AND
      lastname LIKE '%$search%'
ORDER BY id DESC

Nu skriver jeg mine forespørgsler på en lidt anden måde, men håber da du kan se forskellen.

/xicrow
Avatar billede BrJoe Nybegynder
27. august 2009 - 11:53 #2
Ja det har du egentlig ret i, at det hører under MySQL - sorry.

Jeg prøvede som du sagde men det lader heller ikke til at virke ordenligt.

Du kan lige se min samlede kode her:

<?php
      include('_config.php');
     
      if($_GET['search']){
      $search = $_GET["search"];
      $query = mysql_query("SELECT * FROM brugere WHERE firstname LIKE '%$search%' AND lastname LIKE '%$search%' AND position LIKE '%$search%' ORDER BY id DESC")or die(mysql_error());
      $antal = mysql_num_rows($query);
     
      echo "<a href=\"index.php\">Tilbage til forsiden</a><br /><br />";
      echo "Serveren fandt ".$antal." resultat(er) for \"".$search."\"<br /><br />";
      while($row = mysql_fetch_array($query)){
      echo "<a href=\"description.php?profile=".$row['id']."\">".$row['firstname']."</a><br />";
      echo "".$row['description']."<br /><br />";
     
      }
      }else{
?>
      <form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>?search=<?php echo $search;?>" />
      <input type="text" name="search" class="textFields" value=""  />
      <input type="submit" class="btnStyleSearch" value="Søg" />
      </form>
<?php
}
?>
Avatar billede BrJoe Nybegynder
27. august 2009 - 11:55 #3
Den echo'er bare ud at den fandt 0 resultater uanset hvad jeg søger på som ligger i min tabel.
Avatar billede xicrow Nybegynder
27. august 2009 - 11:58 #4
Du skal nok lave din forespørgsel om til at bruge OR i stedet for AND.

Lige nu søger den i din database på om firstname, lastname og position alle sammen indeholder $search.

Sådan her skal den se ud i stedet:
SELECT * FROM brugere WHERE firstname LIKE '%$search%' OR lastname LIKE '%$search%' OR position LIKE '%$search%' ORDER BY id DESC
Avatar billede BrJoe Nybegynder
27. august 2009 - 12:16 #5
Det virkede hehe.. Tak skal du have for hjælpen - det sætter jeg pris på!
Avatar billede xicrow Nybegynder
27. august 2009 - 12:21 #6
Det var så lidt, er glad for at kunne hjælpe.
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