login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Opgelost]While? Herhalen

Offline Xtent - 15/08/2006 00:14 (laatste wijziging 15/08/2006 13:02)
Avatar van XtentOnbekend Hallo sitemastertjes!
Ik ben bezig met een klein systeempje om snel ieder team op een verschillende plek in een verschillende competitie te zetten.
En zoals je kan zien in dit kleine stukje script word er gekeken of er al 1 op die plek van die competitie zit, maar hoe kan ik zorgen dat als deze er al is dat er overnieuw gezocht word totdat er een plek voor gevonden is?

Kan dit gewoon met een while of zal er hier iets anders voor gebruikt moeten worden?

  1. <?php
  2. $query = mysql_query("SELECT * FROM teams WHERE plek=0");
  3. while($row = mysql_fetch_assoc($query))
  4. {
  5. $plek = rand(1, 6);
  6. $comp = rand(1, 5);
  7. $cQuery = mysql_query("SELECT id FROM teams WHERE plek=".$plek." AND comp=".$comp);
  8. if(mysql_num_rows($cQuery) == 0)
  9. {
  10. mysql_query("UPDATE teams SET plek=".$plek.", comp=".$comp." WHERE id=".$row['id']);
  11. }
  12. }
  13. ?>


Een voorbeeld zou fijn zijn.

Is uiteindelijk gelukt .
Bedankt Frisbee en de andere 

4 antwoorden

Gesponsorde links
Offline CDNC - 15/08/2006 09:41
Avatar van CDNC PHP ver gevorderde Heb je het al getest? Werkte het? zoja dan is het goed he.

je kunt beter mysql_result gebruiken om te tellen af hetnog op 0 staat.
mysql_result is sneller, en zoals jij het wilt gaan doen ga je dat een paar keer uitvoeren waardoor het toch een minimaal gaat maken in de snelheid.
Offline Voldemort - 15/08/2006 10:48
Avatar van Voldemort PHP ver gevorderde En je kan ook JOINS gebruiken ($query en $cquery). En in die cquery dan COUNT doen.
Offline Xtent - 15/08/2006 12:48
Avatar van Xtent Onbekend Ik denk dat jullie niet echt snappen wat ik bedoelde, zal het dus nog even proberen uit te leggen.

In de while staat het stukje:
  1. <?php
  2. $plek = rand(1, 6);
  3. $comp = rand(1, 5);
  4. $cQuery = mysql_query("SELECT id FROM teams WHERE plek=".$plek." AND comp=".$comp);
  5. if(mysql_num_rows($cQuery) == 0)
  6. {
  7. mysql_query("UPDATE teams SET plek=".$plek.", comp=".$comp." WHERE id=".$row['id']);
  8. }
  9. ?>


Maar daarbij als er dus al iets is gevonden wordt het niet uitgevoerd.
Ik zou wel een else kunnen maken en die weer laten kijken of dan de plek en comp al uniek zijn, maar als dit nog niet zou zijn zijn ze nog beide leeg.

Mijn vraag is dus opzich hoe kan ik zorgen dat het stukje in de while zich blijft herhalen tot ieder team een andere plek/comp combinatie heeft.
Offline Frisbee - 15/08/2006 12:51 (laatste wijziging 15/08/2006 12:53)
Avatar van Frisbee HTML beginner Dan kun je zoiets doen:

  1. <?php
  2.  
  3. $found = 0;
  4.  
  5. while($found == 1)
  6. {
  7. if($result == true)
  8. {
  9. $found = 1;
  10. }
  11. }
  12.  
  13. ?>


Hij blijft dan dus doorlopen totdat de variable found op 1 wordt gezet. Je moet dan dus wel oppassen dat dit wel een keer gebeurd anders krijg je een oneindige loop.

Weet alleen niet zeker of je in die while $found == 1 of $found == 0 moet gebruiken maar dat moet je dan even zelf testen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.184s