login  Naam:   Wachtwoord: 
Registreer je!
 Forum

leden zoek script (Opgelost)

Offline daanlaan - 16/02/2009 15:37 (laatste wijziging 16/02/2009 15:37)
Avatar van daanlaanMySQL interesse ik was bezig aan een scriptje om alle leden uit de database weer te geven en ook de mogelijkheid om er te zoeken.
er zit momenteel 1 gebruikersnaam in tabel gebruikers en ik heb de volgende code maar hij zegt toch telkens dat daanlaan niet in de DB zit
  1. <form method="POST">
  2. <table><tr><td>Een gebruiker zoeken</td><td><input type="text" name="zoeknaam" />&nbsp;<input type="submit" name="zoeken" value="zoeken" /></td></tr></table>
  3. </form>
  4. <?php
  5. if(isset($_POST['zoeken']))
  6. {
  7. $qchecknaam = mysql_query("SELECT id, gebruikersnaam FROM gebruikers WHERE gebruikersnaam LIKE '%".$_POST['zoeknaam']."%' ");
  8. $aantal=0;
  9. foreach($qchecknaam as $q){$aantal++;}
  10. if($aantal == 0)
  11. {
  12. echo '<font color="red">'.$_POST['zoeknaam'].' is niet gevonden tussen alle gebruikers. </font>';
  13. }

6 antwoorden

Gesponsorde links
Offline Wim - 16/02/2009 15:44
Avatar van Wim Crew algemeen $qchecknaam is een resource, geen array!

Neem eens een kijkje naar PHP.net: mysql_num_rows en MySQL.com: count, deze dingen zijn hiervoor bedoeld!

Vergeet ook niet je query te beveiligen tegen injecties: PHP.net: mysql_real_escape_string
Offline Arnold - 16/02/2009 19:46 (laatste wijziging 16/02/2009 22:58)
Avatar van Arnold Nieuw lid
  1. $qchecknaam = mysql_query("SELECT id, gebruikersnaam FROM gebruikers WHERE gebruikersnaam LIKE '%".$_POST['zoeknaam']."%' ");
  2.  
  3. if(mysql_num_rows($qchecknaam) > 0 {
  4.  
  5. echo '<font color="red">'.$_POST['zoeknaam'].' is gevonden tussen alle gebruikers. </font>';
  6. }


Als eerst initialiseer je de query mbv mysql_query(), daarna kijk je of het aantal rijen dat terugkomt groter is dan 0 (dus dan bestaat hij) met mysql_num_rows()
Offline marten - 16/02/2009 19:47
Avatar van marten Beheerder Arnold graag meer informatie over je script. Waarom is het beter? Waarom zo? Iets meer onderbouwen
Offline daanlaan - 16/02/2009 20:40 (laatste wijziging 16/02/2009 20:41)
Avatar van daanlaan MySQL interesse ik heb het nu zo gedaan, dit is nu het deel dat je gebruikers kan zoeken, zowel op de naam al op hun team waar ze in zitten
  1. if(isset($_POST['zoeken']))
  2. {
  3. if($_POST['zoekop'] == 'team'){
  4. $qchecknaam = mysql_query("SELECT board.gebruikers_id, board.level, gebruikers.gebruikersnaam FROM board INNER JOIN gebruikers ON (board.gebruikers_id = gebruikers.id) WHERE board.team = '".$_POST['zoeknaam']."' ");
  5. }
  6. else{
  7. $qchecknaam = mysql_query("SELECT board.gebruikers_id, board.level, gebruikers.gebruikersnaam FROM board INNER JOIN gebruikers ON (board.gebruikers_id = gebruikers.id) WHERE gebruikers.gebruikersnaam LIKE '%".$_POST['zoeknaam']."%' ");
  8. }
  9. // kijken hoeveel rijen er aan de zoekopdracht voldoen//
  10. $rows = mysql_num_rows($qchecknaam);
  11. if($rows == 0)
  12. {
  13. if($_POST['zoekop'] == 'gebruikersnaam'){
  14. echo '<font color="#CC0000">'.$_POST['zoeknaam'].' is niet gevonden tussen alle gebruikers.</font><hr color="#183B41" size="1" width="400px"><br>';
  15. }
  16. else{
  17. echo '<font color="#CC0000">Er zijn geen gebruikers gevonden in het team '.$_POST['zoeknaam'].'.</font><hr color="#183B41" size="1" width="400px"><br>';
  18. }
  19. }
  20. else
  21. {
  22. if($rows > 30){
  23. echo'Er zijn meer dan 30 gebruikers gevonden die aan je zoekopdracht voldoen. <br> Probeer je zoekopdracht te verfijnen. <br>';
  24. }
  25. else{
  26. $teller=0;
  27. <table cellpadding="0" cellspacing="1px" id="leden"><tr>
  28. <td width="80px" height="35px" align="center" style="background-color:#333333;">#</td><td width="450px" align="center" style="background-color:#333333;">gebruikersnaam</td><td width="60px" align="center" style="background-color:#333333;">level</td>';
  29.  
  30. while($shownaam = mysql_fetch_array($qchecknaam))
  31. {
  32. if($level >= $shownaam['level']){$clr_lvl = "#009900";}else{$clr_lvl = "#990000";}
  33. $teller++;
  34. if($teller%2==0)
  35. {
  36. echo"\n<tr><td id=\"lidnr1\">".$teller."</td><td valign=\"middle\" id=\"lidnaam1\"><a href=\"profiel.php?id=".$shownaam['id']."\" class=\"lid\">".$shownaam['gebruikersnaam']."</a></td>
  37. <td id=\"lidlvl1\"><font color=\"".$clr_lvl."\">".$shownaam['level']."</font></td>";
  38. }
  39. else
  40. {
  41. echo"\n<tr><td id=\"lidnr2\">".$teller."</td><td valign=\"middle\" id=\"lidnaam2\"><a href=\"profiel.php?id=".$shownaam['id']."\" class=\"lid\">".$shownaam['gebruikersnaam']."</a></td>
  42. <td id=\"lidlvl2\"><font color=\"".$clr_lvl."\">".$shownaam['level']."</font></td>";
  43. }
  44.  
  45. }
  46. echo'</tr></table><hr color="#183B41" size="1" width="400px"><br>';
  47. }
  48. }
  49. }
Offline anton - 16/02/2009 22:56
Avatar van anton Lid Wat doet LIKE precies???Daar heb ik nu nog nooit van gehoord...

Thx
MVG
Anton
Offline Arnold - 16/02/2009 23:02 (laatste wijziging 16/02/2009 23:02)
Avatar van Arnold Nieuw lid
anton schreef:
Wat doet LIKE precies???Daar heb ik nu nog nooit van gehoord...

Thx
MVG
Anton


Hiermee ben je in staat om gedeeltes van een zoekwoord te zoeken

bijv:

SELECT naam FROM persoon WHERE naam LIKE '%o%';

Daaruit kan komen:

Olaf
Lola
Stino

Het % teken geldt als een wildcard voor een willekeurig aantal tekens. Zou je ipv LIKE = gebruiken, dan zou je letterlijk dat gedeelte willen hebben dus daar kan alleen %o% uitkomen als resultaat
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.26s