login  Naam:   Wachtwoord: 
Registreer je!
 Forum

rare bug...

Offline Simon - 08/09/2005 20:31
Avatar van SimonPHP expert ik heb een zeer rare bug
ik werk met een forum waarbij je moet aanmelden bij bepaalde clubs voordat je kan posten
  1. <?
  2. $gAbo2 = mysql_query("SELECT * FROM abonnementen WHERE userid='".$user."'") or die(mysql_error());
  3. while($Abo = mysql_fetch_assoc($gAbo2)) {
  4. $gTav2 = mysql_query("SELECT * FROM tavernes WHERE t_id != '".$Abo['clubid']."' ORDER BY t_naam ASC") or die(mysql_error());
  5. }
  6. while($tav = mysql_fetch_assoc($gTav2)) {
  7. ?>

een stukje waar het fout loopt is hier:
Bij geabonneerde tavernes loopt alles mooi en zoals ik het wil,
maar als je niet geabonneerd bent treed er een rare fout op, het volgende:
er zijn 16 clubs, ik ben bij 15 geabonneerd...
maar ipv van dat er 1 club staat bij niet geabonneerd staan er 15, de verklaring is dat er slechts 1 taverne eruit wordt gehaald hier:
  1. <?
  2. $gTav2 = mysql_query("SELECT * FROM tavernes WHERE t_id != '".$Abo['clubid']."' ORDER BY t_naam ASC") or die(mysql_error());
  3. ?>

de andere 15 worden er niet uigefilterd, hoe komt dit?:(

10 antwoorden

Gesponsorde links
Offline Steven - 08/09/2005 20:36 (laatste wijziging 08/09/2005 20:37)
Avatar van Steven HTML interesse Heel makkelijk, je verandert: niet geabonerd in geaboneerde clubs

dus ipv:

15 niet geabonneerde clubs,
krijg je dit:
15 geaboneerde clubs ;)

[edit]
Ik weet niet hoe die bug komt, maar dit lijkt mij makkelijker ;)
Offline Simon - 08/09/2005 20:47 (laatste wijziging 10/09/2005 10:03)
Avatar van Simon PHP expert dat is dus echt onzin 
ik zou graag mijn volledig script hier posten, maar is 200 regels, mag dat?
als het niet mag dan neem je mijn post maar weg:
  1. ik heb de foute code gepost :s


ik probeer het nog beter uit te leggen:
bijv:
er zijn 10 clubs.
ik ben geabonneerd bij 9.
er staat dus bij geabonneerde clubs (9) en de juiste clubs,
maar bij nietgeaboneerd staat (1) maar er komen 9 clubs te staan, wat dus niet klopt.
hoe dit komt, als je kijkt naar het stukje in mijn eerste post zie je:

WHERE t_id != ...

dus: er wordt door deze query maar 1 club eruit gehaald, namelijk de eerste club in het rijtje.
nochtans staat deze query in een while loop, maar toch schijnt deze niet te werken.
hoe komt dit? hoe kan ik het verhelpen?

niemand?
Offline Ontani - 09/09/2005 17:56
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
WHERE t_id <> ...
Offline Simon - 09/09/2005 18:02 (laatste wijziging 09/09/2005 19:35)
Avatar van Simon PHP expert neej, werkt niet

nog iemand een idee?

echt niemand? dat kan toch nie?
Offline Rens - 09/09/2005 20:37
Avatar van Rens Gouden medaille

Crew algemeen
Over dit stukje:

  1. <?PHP
  2. $gAbo2 = mysql_query("SELECT * FROM abonnementen WHERE userid='".$user."'") or die(mysql_error());
  3. while($Abo = mysql_fetch_assoc($gAbo2)) {
  4. $gTav2 = mysql_query("SELECT * FROM tavernes WHERE t_id != '".$Abo['clubid']."' ORDER BY t_naam ASC") or die(mysql_error());
  5. }
  6. while($tav = mysql_fetch_assoc($gTav2)) {
  7. ?>


Verander eens in dit:

  1. <?PHP
  2. $gAbo2 = mysql_query("SELECT * FROM abonnementen WHERE userid='".$user."'") or die(mysql_error());
  3. while($Abo = mysql_fetch_assoc($gAbo2))
  4. {
  5. $gTav2 = mysql_query("SELECT * FROM tavernes WHERE t_id != '".$Abo['clubid']."' ORDER BY t_naam ASC") or die(mysql_error());
  6. while($tav = mysql_fetch_assoc($gTav2))
  7. {
  8. // gegevens weergeven
  9. }
  10. }
  11. ?>


(de verandering van inspringen e.d. is niet nodig, heb ik alleen ff gedaan zodat het voor mij iets makkelijker leesbaar is, en ik je dus makkelijker kan helpen...)
Offline Simon - 09/09/2005 21:43
Avatar van Simon PHP expert dan is het een echte catastrofe, dan krijg ik bij niet geabonneerd een lijst van meer dan 200 clubs, steeds met dezelfde naam 
Offline Rens - 09/09/2005 22:16 (laatste wijziging 09/09/2005 22:25)
Avatar van Rens Gouden medaille

Crew algemeen
Owjah, klopt, foutje...
Ik zie het nu staan.

In de 2e query staat dit: !=
  1. $gTav2 = mysql_query("SELECT * FROM tavernes WHERE t_id != '".$Abo['clubid']."' ORDER BY t_naam ASC") or die(mysql_error());


Die moet je ff veranderen in: =
  1. $gTav2 = mysql_query("SELECT * FROM tavernes WHERE t_id = '".$Abo['clubid']."' ORDER BY t_naam ASC") or die(mysql_error());


edit; Nog iets, je zou misschien ook het aantal tavernes kunnen tellen, en dan:

  1. $iAantalNietGeaboneerd = $iAantalTavernes-$iAantalGeaboneerd;
Offline Simon - 10/09/2005 10:05
Avatar van Simon PHP expert het spijt me maar ik was zo dom om de foute code te posten 
dit is de juiste, nu zal je ook zien hoe het in elkaar zit Rensjuh
  1. <?php
  2. require("config.php"); // connectie met database maken en database selecteren
  3. require("functies.php");
  4. ?>
  5. <html>
  6. <head>
  7. <link rel="stylesheet" href="styletav.css" type="text/css">
  8. <title>Alle tavernes</title>
  9. </head>
  10. <body bgcolor="#000000">
  11. <?php
  12.  
  13. if(!isset($_SESSION['suser']))
  14. { //dus als er niemand is ingelogd
  15. ?>
  16. <div class="okbox">
  17. <div class="oktitle">FOUT</div>
  18. <div class="noktext">U dient ingelogd te zijn om dit te bekijken.</div>
  19. </div>
  20. <?php
  21. }
  22. else
  23. {
  24.  
  25. $userid = mysql_query("SELECT * FROM users WHERE username = '".$_SESSION['suser']."'") or die(mysql_error());
  26. $id = mysql_fetch_assoc($userid);
  27. $user = $id['id'];
  28. ?>
  29. <table width="70%" border="0" class="sh" cellpadding="0" cellspacing="0">
  30. <tr bgcolor="#333399">
  31. <th width="35%" nowrap><b>&nbsp;Naam taverne</b></th>
  32. <th width="17%" nowrap><b>&nbsp;Oprichter</b></th>
  33. <th width="4%" nowrap><b><center>#L</center></b></th>
  34. <th width="4%" nowrap><b>&nbsp;Posts</b></th>
  35. <th width="10%" nowrap><b>&nbsp;</b></th>
  36. </tr>
  37. <?php
  38. $gAbo = mysql_query("SELECT * FROM abonnementen WHERE userid='".$user."'") or die(mysql_error());
  39. $result = mysql_num_rows($gAbo);
  40. if($result >= 1) {
  41. echo "&nbsp;Geabonneerde tavernes (".$result.")<br><br>";
  42. while($abo = mysql_fetch_assoc($gAbo)) {
  43.  
  44. $gTav = mysql_query("SELECT * FROM tavernes WHERE t_id = '".$abo['clubid']."' ORDER BY t_naam ASC") or die(mysql_error());
  45.  
  46. while($tav = mysql_fetch_assoc($gTav)) {
  47. ?>
  48. <tr bgcolor="#444444">
  49. <td width="35%"><b>&nbsp;<a href="tavernes.php?tavid=<?= $tav['t_id']; ?>" target="_blank"><font color="#FFFF00"><?= $tav['t_naam']; ?></font></a></b></td>
  50. <td width="17%">&nbsp;<?= afkorten($tav['t_eigenaar'], 15); ?></td>
  51. <td width="4%"><center>
  52. <?php
  53. $gLid = mysql_query("SELECT * FROM abonnementen WHERE clubid='".$tav['t_id']."'") or die(mysql_error());
  54. ?>
  55. </center></td>
  56. <td width="4%">&nbsp;
  57. <?php
  58. $gPost = mysql_query("SELECT * FROM t_topics WHERE taverne_id='".$tav['t_id']."'") or die(mysql_error());
  59. while($topic = mysql_fetch_assoc($gPost)) {
  60. $gPost2 = mysql_query("SELECT * FROM t_replys WHERE topic_id = '".$topic['id']."'") or die(mysql_error());
  61. }
  62. $gMax = mysql_query("SELECT * FROM tavernes WHERE t_id = '".$tav['t_id']."'") or die(mysql_error());
  63. $tav = mysql_fetch_assoc($gMax);
  64. echo mysql_num_rows($gPost) + mysql_num_rows($gPost2) ."/".$tav['t_maxposts'];
  65. ?>
  66. </td>
  67. <td width="10%">&nbsp;<a href="opzeggen.php?tavid=<?= $tav['t_id']; ?>"><u>opzeggen</u></a></td>
  68. </tr>
  69. <?
  70. }
  71. }
  72. }
  73. else {
  74. echo "&nbsp;Geabonneerde tavernes (0)<br><br>";
  75. ?>
  76. <tr bgcolor="#444444">
  77. <td colspan="5">&nbsp;Geen abonnementen</td>
  78. </tr>
  79. <?php
  80. }
  81. ?>
  82. </table>
  83. <br>
  84. <table width="70%" class="sh" border="0" cellpadding="0" cellspacing="0">
  85. <tr bgcolor="#333399">
  86. <th width="35%" nowrap><b>&nbsp;Naam taverne</b></th>
  87. <th width="17%" nowrap><b>&nbsp;Oprichter</b></th>
  88. <th width="4%" nowrap><b><center>#L</center></b></th>
  89. <th width="4%" nowrap><b>&nbsp;Posts</b></th>
  90. <th width="10%" nowrap><b>&nbsp;</b></th>
  91. </tr>
  92. <?php
  93. $gAbo = mysql_query("SELECT * FROM abonnementen WHERE userid='".$user."'") or die(mysql_error());
  94. $gTavs = mysql_query("SELECT * FROM tavernes ORDER BY t_naam ASC") or die(mysql_error());
  95. $allAbo = mysql_num_rows($gAbo);
  96. $alltavs = mysql_num_rows($gTavs);
  97.  
  98. $result = $alltavs - $allAbo;
  99.  
  100. if($result >= 1) {
  101. echo "&nbsp;Niet-geabonneerde tavernes (".$result.")<br><br>";
  102. $gAbo = mysql_query("SELECT * FROM abonnementen WHERE userid='".$user."'") or die(mysql_error());
  103. $result3 = mysql_num_rows($gAbo);
  104. if($result3 == 0) {
  105. $gTav1 = mysql_query("SELECT * FROM tavernes ORDER BY t_naam ASC") or die(mysql_error());
  106. while($tav = mysql_fetch_assoc($gTav1)) {
  107. ?>
  108. <tr bgcolor="#444444">
  109. <td width="35%"><b>&nbsp;<font color="#FFFF00"><?= $tav['t_naam']; ?></font></b></td>
  110. <td width="17%">&nbsp;<?= afkorten($tav['t_eigenaar'], 15); ?></td>
  111. <td width="4%"><center>
  112. <?php
  113. $gLid = mysql_query("SELECT * FROM abonnementen WHERE clubid='".$tav['t_id']."'") or die(mysql_error());
  114. ?>
  115. </center></td>
  116. <td width="4%">&nbsp;
  117. <?php
  118. $gPost = mysql_query("SELECT * FROM t_topics WHERE taverne_id='".$tav['t_id']."'") or die(mysql_error());
  119. while($topic = mysql_fetch_assoc($gPost)) {
  120. $blaat = $topic['id'];
  121. }
  122. $gPost2 = mysql_query("SELECT * FROM t_replys WHERE topic_id = '".$blaat."'") or die(mysql_error());
  123. $gMax = mysql_query("SELECT * FROM tavernes WHERE t_id = '".$tav['t_id']."'") or die(mysql_error());
  124. $tav = mysql_fetch_assoc($gMax);
  125. echo mysql_num_rows($gPost) + mysql_num_rows($gPost2) ."/".$tav['t_maxposts'];
  126. ?>
  127. </td>
  128. <td width="10%">&nbsp;<a href="abonneren.php?tavid=<?= $tav['t_id']; ?>"><u>abonneren</u></a></td>
  129. </tr>
  130. <?php
  131. }
  132. }
  133. else {
  134.  
  135. $gAbo2 = mysql_query("SELECT * FROM abonnementen WHERE userid='".$user."'") or die(mysql_error());
  136. while($Abo = mysql_fetch_assoc($gAbo2))
  137. {
  138. $gTav2 = mysql_query("SELECT * FROM tavernes WHERE t_id != '".$Abo['clubid']."' ORDER BY t_naam ASC") or die(mysql_error());
  139. }
  140. while($tav = mysql_fetch_assoc($gTav2))
  141. {
  142. ?>
  143. <tr bgcolor="#444444">
  144. <td width="35%"><b>&nbsp;<font color="#FFFF00"><?= $tav['t_naam']; ?></font></b></td>
  145. <td width="17%">&nbsp;<?= afkorten($tav['t_eigenaar'], 15); ?></td>
  146. <td width="4%"><center>
  147. <?php
  148. $gLid = mysql_query("SELECT * FROM abonnementen WHERE clubid='".$tav['t_id']."'") or die(mysql_error());
  149. ?>
  150. </center></td>
  151. <td width="4%">&nbsp;
  152. <?php
  153. $gPost = mysql_query("SELECT * FROM t_topics WHERE taverne_id='".$tav['t_id']."'") or die(mysql_error());
  154. while($topic = mysql_fetch_assoc($gPost)) {
  155. $blaat = $topic['id'];
  156. }
  157. $gPost2 = mysql_query("SELECT * FROM t_replys WHERE topic_id = '".$blaat."'") or die(mysql_error());
  158. $gMax = mysql_query("SELECT * FROM tavernes WHERE t_id = '".$tav['t_id']."'") or die(mysql_error());
  159. $tav = mysql_fetch_assoc($gMax);
  160. echo mysql_num_rows($gPost) + mysql_num_rows($gPost2) ."/".$tav['t_maxposts'];
  161. ?>
  162. </td>
  163. <td width="10%">&nbsp;<a href="abonneren.php?tavid=<?= $tav['t_id']; ?>"><u>abonneren</u></a></td>
  164. </tr>
  165. <?php
  166. }
  167. }
  168. }
  169. else {
  170. echo "&nbsp;Niet-geabonneerde tavernes (".$result.")<br><br>";
  171. ?>
  172. <tr bgcolor="#444444">
  173. <td colspan="5">&nbsp;U bent reeds op alle tavernes geabonneerd.</td>
  174. </tr>
  175. <?php
  176. }
  177. ?>
  178. </table>
  179. <br><br>
  180. <?php
  181. }
  182. ?>
  183. </body>
  184. </html>

dit is beter, nu zie je bij niet geabonneerd dezeflde query als bovenaan, en daar loopt het mis
Offline ikkedikke - 10/09/2005 11:06
Avatar van ikkedikke PHP expert je overschrijft iedere keer in die eerste regel het id, in de 2e query zal die dus alleen nog het id van de laatste vorige query onthouden hebben...
Offline Simon - 10/09/2005 13:40 (laatste wijziging 10/09/2005 15:23)
Avatar van Simon PHP expert en hoe valt dit op te lossen?
iemand?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.269s