login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Wedstrijden controleren (Opgelost)

Offline roelh - 09/05/2012 10:00 (laatste wijziging 09/05/2012 11:40)
Avatar van roelhPHP gevorderde Hallo allemaal,

Het EK komt eraan en ik wil voor mn vrienden een kleine WK poule opzetten.
Ze kunnen wedstrijden voorspellen en daarvoor krijgen ze uiteraard punten.
Nu kunnen ze uitslagen toevoegen en die komen in de DB. Maar hoe controleer ik wanneer ik de uitslagen ingevuld heb, of die kloppen en punten toedelen aan één ieder?
Uitslag precies goed 10 punten ofzo, winnaar goed 7 en zo door gaan.
Wie kan me helpen met het opzetje?
Dank alvast!

Dit hier heb ik al. Alleen wanneer een gewonnen wedstrijd goed is, maar niet de precieze uitslag kom ik er niet uit.
En hoe ga ik uiteindelijk alle users hier doorheen halen? Foreach? En dit wil ik automatisch wanneer ik de uitslagen invoer...

  1. $uitslag1 = 3;
  2. $uitslag2 = 2;
  3.  
  4. $voorspelling1 = 1;
  5. $voorspelling2 = 0;
  6.  
  7. // if($arr['uitslagthuis'] < $arr['uitslaguit'])
  8. if($uitslag1 < $voorspelling1 AND $uitslag2 < $voorspelling2):
  9. echo 'Ze hebben gewonnen, maar je hebt het niet goed voorspeld.';
  10. $punten = 3;
  11.  
  12. elseif ($uitslag1 == $voorspelling1 AND $uitslag2 == $voorspelling2):
  13. echo 'Je hebt het precies goed voorspelt!';
  14. $punten = 7;
  15.  
  16. else:
  17. echo 'Je hebt het niet goed voorspeld';
  18. $punten = 0;
  19.  
  20. echo $punten;
  21. endif;
  22.  
  23.  
  24.  
  25. ?>


Groet,

8 antwoorden

Gesponsorde links
Offline Martijn - 09/05/2012 11:41 (laatste wijziging 09/05/2012 11:57)
Avatar van Martijn Crew PHP users
id, naam,hun_score

uitslagtabel
id,partij1, partij2, uid (user_id)


  1. $query = mysql_query("SELECT * FROM uitslagtabel") or die(mysql_error());
  2. $score1 = 3; // daadwerkelijke score van partij1
  3. $score2 = 1; // daadwerkelijke score van partij2
  4. while($fetch = mysql_fetch_assoc($query)){
  5. if($fetch['partij1'] == $score1 && $fetch['partij2'] == $score2){//precies goed
  6. $punten = 10;
  7. }
  8. elseif(in_array($fetch['partij1'], range($score1-2,$score1+2) && in_array($fetch['partij2'], range($score2-2,$score2+2)){
  9. // nu mag je voor beide partijen er 2 hoger of lager naast zitten
  10. $punten = 7;
  11. }
  12. elseif($fetch['partij1'] == $score1){ // nr1 goed
  13. $punten = 5;
  14. }
  15. elseif($fetch['partij2'] == $score2){// nr2 goed
  16. $punten = 5;
  17. }
  18. else{ $punten = 0;}
  19.  
  20. mysql_query("UPDATE users SET hun_score=hun_score+".$punten." WHERE id=".$fetch['uid']." LIMIT 1");
  21. }


Ik heb expres niet alle uitkomsten gedaan, nu moet je m zelf afmaken ;)
Offline roelh - 09/05/2012 11:48
Avatar van roelh PHP gevorderde Hmm dank je wel, eens kijken of ik hier wat mee kan. Ziet er ingewikkeld uit, maar ik ga het proberen
Offline Martijn - 09/05/2012 11:54 (laatste wijziging 09/05/2012 11:58)
Avatar van Martijn Crew PHP t valt wel mee denk ik.

de elseif's doen eigenlijk hetzelfde als wat jij doet.
Het enige stuk waty uitleg kan gebruiken is de range+in_array
  1. //in_array doet dit:
  2. $array = array(1,2,3,4,5);
  3. echo in_array(1 , $array); // zal 1 (true) geven
  4. echo in_array(8 , $array); // zal 0 (false) geven
  5.  
  6. //range doet dit:
  7. $array = array(1,2,3,4,5);
  8. $array = range(1,5); // zal exact hetzelfde geven



edit: Ik heb mn code een beetje aangepast, mogelijk lees je m nu makkelijker
Offline roelh - 09/05/2012 12:05 (laatste wijziging 09/05/2012 12:49)
Avatar van roelh PHP gevorderde Ik heb ondertsaande nu, maar het werkt niet, ik krijg foutmeldingen
  1. Notice: Undefined variable: 2 in F:\USBWebserver v8_nl\root\voetbal\users\controle.php on line 19
  2.  
  3. Notice: Undefined variable: 2 in F:\USBWebserver v8_nl\root\voetbal\users\controle.php on line 22
  4.  
  5. Notice: Undefined variable: 2 in F:\USBWebserver v8_nl\root\voetbal\users\controle.php on line


Ik haal informatie uit verschillende tabellen...
Wie kan me op gang helpen?

  1. <?
  2.  
  3.  
  4. mysql_connect($host,$user,$pass) or die(mysql_error());
  5.  
  6. $query = mysql_query("SELECT * FROM speelschema where gespeeld = 1 AND gecontroleerd = 0") or die(mysql_error());
  7. $useruitslag = mysql_query("SELECT * FROM voorspelling INNER JOIN users ON (voorspelling.userid = users.id)") or die(mysql_error());
  8.  
  9. while($fetch = mysql_fetch_assoc($query)){
  10.  
  11. while($fetch1 = mysql_fetch_assoc($useruitslag)){
  12.  
  13. if($fetch['thuisteam'] == $$fetch1['uitslagthuis'] && $fetch['uitteam'] == $$fetch1['uitslaguit']){//precies goed
  14. $punten = 10;
  15. }
  16. elseif(in_array($fetch['thuisteam'], range($$fetch1['uitslagthuis']-2,$$fetch1['uitslagthuis']+2)) && in_array($fetch['uitteam'], range($$fetch1['uitslaguit']-2,$$fetch1['uitslaguit']+2))){
  17. // nu mag je voor beide partijen er 2 hoger of lager naast zitten
  18. $punten = 7;
  19. }
  20. elseif($fetch['thuisteam'] == $$fetch1['uitslagthuis']){ // nr1 goed
  21. $punten = 5;
  22. }
  23. elseif($fetch['uitteam'] == $$fetch1['uitslaguit']){// nr2 goed
  24. $punten = 5;
  25. }
  26. else{ $punten = 0;}
  27.  
  28. mysql_query("UPDATE users SET punten=punten+".$punten." WHERE id=".$fetch['id']." LIMIT 1");
  29. }
  30. }
  31. echo 'Er is nik te controleren';
  32.  
  33.  
  34.  
  35.  
  36. ?>
Offline Martijn - 09/05/2012 12:52
Avatar van Martijn Crew PHP Ja, die twee waren een voorbeeld om te laten zien dat ze apart ook werken, je kunt dus combo's maken (1 in range, 1 precies goed en andersom, etc)

de while lus is ongeveer de foreach. die while doet eigenlijk dit:

Zolang(while) er regels uit de database zijn, voer de onderstaande code uit per regel.

dus dit zal 3 draaien:
pietje, 1, 3
klaasje, 2, 2
willem, 3, 2

Voor elke regel 1x dus.
Offline roelh - 10/05/2012 19:36
Avatar van roelh PHP gevorderde Geen idee wat ik fout doe. Maar hij geetf alleen punten aan 1 user, terwijl er meerdere in het systeem staan. Wat doe ik fout? Wie kan me helpen?

  1. $query = mysql_query("SELECT * FROM speelschema") or die(mysql_error());
  2. $useruitslag = mysql_query("SELECT * FROM voorspelling") or die(mysql_error());
  3.  
  4.  
  5. while($fetch = mysql_fetch_assoc($query)){
  6. $fetch1 = mysql_fetch_assoc($useruitslag);
  7.  
  8. if($fetch['thuisteam'] == $fetch1['uitslagthuis'] && $fetch['uitteam'] == $fetch1['uitslaguit']){//precies goed
  9. $punten = 10;
  10. }
  11. elseif(in_array($fetch['thuisteam'], range($fetch1['uitslagthuis']-2, $fetch1['uitslagthuis']+2)) && in_array($fetch['uitteam'], range($fetch1['uitslaguit']-2, $fetch1['uitslaguit']+2))){
  12. // nu mag je voor beide partijen er 2 hoger of lager naast zitten
  13. $punten = 7;
  14. }
  15. else{ $punten = 0;}
  16.  
  17. echo $punten;
  18.  
  19. mysql_query("UPDATE users SET punten=punten+".$punten." WHERE id=".$fetch1['id']."");
  20.  
  21. }
  22.  
  23.  
  24.  
  25. ?>
Offline Martijn - 11/05/2012 10:31
Avatar van Martijn Crew PHP Moest even zoeken, maar t is een hele simpele 

Je doet het net verkeerd. Je selecteerd op regel 1 en regel2 uit elke tabel alles.
vervolgens doe je een while, die alles uit $query regel voor regel uitvoert.

In je while het je $fetch1, maar die staat niet in een while.

while($fetch = mysql_fetch_assoc($query) doet dit:

"zolang er regel zijn doe je dit"
- vul $fetch met de waardes van 1 regel
- ga naar de volgende regel


jou $fetch1 staat niet in een while, dus zal alleen maar de eerste regel nemen. Jij moet dus zoiets:


  1. while($elke_wedstrijd_per_stuk){
  2. while($voorspellingen_voor_deze_wedstrijd_per_stuk){
  3. // kijk of $wedstrijd_per_stuk == $voorspelling_per_stuk
  4.  
  5. // Update users waar id= $voorspelling_per_stuk['user']
  6. }
  7. }
Offline roelh - 11/05/2012 22:05 (laatste wijziging 12/05/2012 12:10)
Avatar van roelh PHP gevorderde Dit werkt, het enige wat nu niet wil is wanneer de wedstrijd correct voorspeld is hij geen 10 maar er 7 geeft...
Als ik ze uit de DB is het niet correct, maar als ik zelf variablen aanmaak werkt het wel..
Wie o wie please? 

  1. $query = mysql_query("SELECT thuisteam, uitteam FROM speelschema where gespeeld = 1 AND gecontroleerd = 0") or die(mysql_error());
  2. $useruitslag = mysql_query("SELECT * FROM voorspelling") or die(mysql_error());
  3.  
  4.  
  5. while($fetch = mysql_fetch_assoc($query)){
  6. while($fetch1 = mysql_fetch_assoc($useruitslag)){
  7.  
  8. if($fetch['thuisteam'] == $fetch1['uitslagthuis'] && $fetch['uitteam'] == $fetch1['uitslaguit']){//precies goed
  9. $punten = 10;
  10. }
  11. elseif(in_array($fetch['thuisteam'], range($fetch1['uitslagthuis']-2, $fetch1['uitslagthuis']+2)) && in_array($fetch['uitteam'], range($fetch1['uitslaguit']-2, $fetch1['uitslaguit']+2))){
  12. // nu mag je voor beide partijen er 2 hoger of lager naast zitten
  13. $punten = 7;
  14. }
  15. else{ $punten = 0;}
  16.  
  17. echo $punten;
  18.  
  19. mysql_query("UPDATE users SET punten=punten+".$punten." WHERE id=".$fetch1['id']."");
  20.  
  21. }
  22. }
  23.  
  24.  
  25. ?>
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.394s