login  Naam:   Wachtwoord: 
Registreer je!
 Forum

zoekfunctie geeft niets weer... (Opgelost)

Offline UpLink - 13/11/2010 00:55 (laatste wijziging 13/11/2010 01:23)
Avatar van UpLink... Ik ben met een zoekfunctie bezig om gegevens in de database te doorzoeken.

Nu heb ik ergens duidelijk iets verkeerd gedaan want ik krijg totaal niks op mijn scherm van zoekresultaten. Enkel het originele zoekformulier.

Mss dat iemand hier sneller ziet wat er niet juist is?

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4.  
  5. <style type="text/css">
  6. ul li{
  7. list-style-type:none;
  8. }
  9. </style>
  10.  
  11. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  12. <title>Zoeken naar chatters</title>
  13. </head>
  14. <body>
  15.  
  16. <h3>Zoekdetails</h3>
  17. <p>Zoeken op nickname, email of IP</p>
  18.  
  19. <form method="post" action="zoeken.php?go">
  20. <input type="text" name="zoek">
  21. <input type="submit" name="verzend" value="Zoeken">
  22. </form>
  23.  
  24. <p>
  25. <a href="?by=A">A</a> |
  26. <a href="?by=B">B</a> |
  27. <a href="?by=C">C</a> |
  28. <a href="?by=D">D</a> |
  29. <a href="?by=E">E</a> |
  30. <a href="?by=F">F</a> |
  31. <a href="?by=G">G</a> |
  32. <a href="?by=H">H</a> |
  33. <a href="?by=I">I</a> |
  34. <a href="?by=J">J</a> |
  35. <a href="?by=K">K</a> |
  36. <a href="?by=L">L</a> |
  37. <a href="?by=M">M</a> |
  38. <a href="?by=N">N</a> |
  39. <a href="?by=O">O</a> |
  40. <a href="?by=P">P</a> |
  41. <a href="?by=Q">Q</a> |
  42. <a href="?by=R">R</a> |
  43. <a href="?by=S">S</a> |
  44. <a href="?by=T">T</a> |
  45. <a href="?by=U">U</a> |
  46. <a href="?by=V">V</a> |
  47. <a href="?by=W">W</a> |
  48. <a href="?by=X">X</a> |
  49. <a href="?by=Y">Y</a> |
  50. <a href="?by=Z">Z</a> |
  51. </p>
  52.  
  53. <?php
  54. if(isset($_POST['verzend'])){
  55. if(isset($_GET['go'])){
  56. if(preg_match("/[A-Z | a-z]+/", $_POST['zoek'])){
  57. $name=$_POST['zoek'];
  58. $db=mysql_connect ("localhost", "***", "***") or die ('Kon geen connectie maken met de database. Foutmelding: ' . mysql_error());
  59. $mydb=mysql_select_db("***");
  60. $sql="SELECT id, username, email, ip FROM users WHERE username LIKE '%" . $zoek . "%' OR email LIKE '%" . $zoek ."%' OR ip LIKE '%" . $zoek ."%'";
  61. $result=mysql_query($sql);
  62.  
  63. while($row=mysql_fetch_array($result)){
  64. $id = $row['id'];
  65. $username = $row['username'];
  66. $email = $row['email'];
  67. $ip = $row['ip'];
  68.  
  69.  
  70. echo "<ul>\n";
  71. echo "<li>" . $id . " | " .$username . " | " . $email . " | " . $ip . "</li>\n";
  72. echo "</ul>";
  73. }
  74. }
  75.  
  76. else{
  77. echo "Vul iets in om te zoeken...";
  78. }
  79. }
  80. }
  81. ?>
  82.  
  83. </body>
  84. </html>

5 antwoorden

Gesponsorde links
Offline Sam - 13/11/2010 01:08 (laatste wijziging 13/11/2010 01:19)
Avatar van Sam PHP expert Het probleem zit hem in je if-constructies: De query wordt enkel en alleen uitgevoerd als je zowel een POST als 2 GET requests stuurt. Je moet voor elke geval appart een zoekstring opstellen om zo in de database te zoeken.

Edit:
  1. ...
  2. <?php
  3. if(isset($_POST['verzend'], $_GET['go']) || isset($_GET['by']))
  4. {
  5. if(isset($_POST['verzend'], $_GET['go']))
  6. {
  7. $zoekstr = mysql_real_escape_string($_POST['verzend']);
  8. }
  9. elseif(isset($_GET['by']))
  10. {
  11. $zoekstr = mysql_real_escape_string($_GET['by']);
  12. }
  13.  
  14. if(preg_match("/[A-Z | a-z]+/", $zoekstr))
  15. {
  16. $db = mysql_connect ("localhost", "***", "***") or die ('Kon geen connectie maken met de database. Foutmelding: ' . mysql_error());
  17. $mydb = mysql_select_db("***");
  18. $sql = "SELECT id, username, email, ip FROM users WHERE username LIKE '%" . $zoekstr . "%' OR email LIKE '%" . $zoekstr ."%' OR ip LIKE '%" . $zoekstr ."%'";
  19. $result = mysql_query($sql);
  20.  
  21. while($row = mysql_fetch_array($result))
  22. {
  23. $id = $row['id'];
  24. $username = $row['username'];
  25. $email = $row['email'];
  26. $ip = $row['ip'];
  27.  
  28. echo "<ul>\n";
  29. echo "<li>" . "<a href=\"zoeken.php?id=" . $id . "\"> " . $id . " " .$username . " " . $email . " " . $ip . "</a></li>\n";
  30. echo "</ul>";
  31. }
  32. }
  33.  
  34. else
  35. {
  36. echo "Vul iets in om te zoeken...";
  37. }
  38. }
  39. ?>
  40. ...

Nog iets dat ik vreemd vond: Je zoekt in je database ook op IP, maar je regex voorkomt dat je zoekstring cijfers mag bevatten...
Offline UpLink - 13/11/2010 01:30 (laatste wijziging 13/11/2010 01:36)
Avatar van UpLink ... ja, ik ben nog bezig met alles goed onder de knie te krijgen...
Dus ik maak nog wel fouten die ik niet meteen zelf vind  

Nu heb ik geprobeerd wat jij hier gezet hebt...
Maar ik kan niets doen...

ik krijg het volgende:

  1. Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'chat2me'@'localhost' (using password: NO) in zoeken.php on line 62
  2.  
  3. Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in zoeken.php on line 62


Of zou dit komen omdat er in mijn gebruikersnaam een underscore ( _ ) zit?
Offline Kevin - 13/11/2010 09:10
Avatar van Kevin Crew Ajax/REST Nou het lijkt erop dat je een foutieve user/pass gebruikt?
Offline UpLink - 13/11/2010 11:53
Avatar van UpLink ... de gegevens voor de database zijn wel correct... maar sinds die mysql_real_escape_string() er mee in verwerkt zit, heb ik dat probleem... en ik denk dat dat komt omdat ik in mijn databasenaam en gebruikersnaam een underscore heb zitten... zou ander niks kunnen bedenken...
Offline Sam - 13/11/2010 13:03
Avatar van Sam PHP expert Dat komt omdat mysql_real_escape_string een database connectie nodig heeft en jouw verbinding wordt pas later gemaakt. Je kan je verbinding beter aan het begin van je script maken.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.213s