login  Naam:   Wachtwoord: 
Registreer je!
 Forum

bingokaart

Offline Stefan14 - 15/06/2008 15:44 (laatste wijziging 15/06/2008 15:45)
Avatar van Stefan14PHP gevorderde Ik ben een script aan het aanpassen dat een bingokaart maakt.

De bingokaart bestaat uit 25 vakken, voorheen was dit een grote achtergrond waar met een heleboel spaties en enters de nummers op werden gezet. Dit heb ik nu veranderd naar een tabel zodat alles mooi op z'n plaats komt, en dit staat nu in een loop.

Nu wil ik alleen in het middelste hokje een plaatje weergeven, en hiervoor zou de loop dus onderbroken moeten worden zegmaar, maar dat is nog niet zo simpel aangezien de rijen eigenlijk van boven naar onder en van links naar rechts moeten lopen.

Dit is het script:
  1. <?php
  2. for ($p=1; $p<=5; $p++)
  3. {
  4. echo '<tr><td style="background-color: #0066FF;">&nbsp;</td>';
  5. for ($i=1; $i<=5; $i++)
  6. {
  7. $limit = (($p)+$i*5) - 5;
  8. $query1 = "SELECT * FROM bingonu WHERE username = '".$user."' AND kaartnr = 1 AND ronde = '".$rondea."' ORDER BY getallen ASC LIMIT ".$limit.",1";
  9. $result1 = mysql_query($query1) or die (mysql_error());
  10. $getal = mysql_result($result1,0,'getallen');
  11.  
  12. echo '<td style="background-image: url(images/yellow_space.png); background-repeat:no-repeat; background-position: center;" width="50" height="50" align="center" valign="middle">'.$getal.'</td>';
  13. }
  14. echo '<td style="background-color: #0066FF;">&nbsp;</td>';
  15. echo '</tr>';
  16. $i = 1;
  17. }
  18. ?>


En dit is hoe het er nu uitziet:
huidig
En dit is hoe het eerst uitzag:
oud

In de oude situatie zie je een geldzak in het midden staan, deze moet ook in de nieuwe bingokaart komen, maar ik zou eigenlijk niet weten hoe ik dat in die loop moet krijgen.

2 antwoorden

Gesponsorde links
Offline timmie_loots - 15/06/2008 15:52 (laatste wijziging 15/06/2008 15:54)
Avatar van timmie_loots PHP gevorderde Je script zit sowieso vreemd in elkaar. Je bent nu in de loop steeds één getal uit de database aan het halen met een query. Je moet gewoon aan het begin van het script in één keer alle 25 cijfers uit de database halen en in een array stoppen. Dan kun je met ongeveer dezelfde for-structuur die je nu hebt, een if/else-statement om te kijken of $p = 2 en $i = 3, en array_shift() gewoon alle cijfers en het plaatje laten zien.

EDIT:

Zoiets dus:

  1. <?php
  2.  
  3. // Hier de query uitvoeren en de getallen in $cijfers zetten
  4.  
  5. for ($p = 1; $p <= 5; $p++) {
  6.  
  7. // echo van de tr
  8.  
  9. for ($i = 1; $i <= 5; $i++) {
  10.  
  11. // echo van de td
  12.  
  13. if ($i == 3 && $p == 2) {
  14.  
  15. // echo het plaatje
  16.  
  17. } else {
  18.  
  19. echo array_shift($cijfers);
  20.  
  21. }
  22.  
  23. // echo td sluiten
  24.  
  25. }
  26.  
  27. // echo tr sluiten
  28.  
  29. }
  30.  
  31. ?>
Offline Stefan14 - 15/06/2008 16:18 (laatste wijziging 15/06/2008 16:31)
Avatar van Stefan14 PHP gevorderde bedankt timmie, jouw script zet wel een plaatje op de goede plaats, echter zet dit script de getallen van links naar rechts en van boven naar beneden. Dan had ik het zelf ook nog wel gekund, maar dat is dus niet de bedoeling.

De getallen moeten zoals te zien is in de plaatjes van boven naar beneden en van links naar rechts staan. Dat is net het moeilijke aan alles.
Wellicht dat ik kan proberen om de getallen op de volgorde in de array te krijgen, dat ga ik intussen even proberen.

Mocht iemand anders met een goed script komen stel ik dat uiteraard erg op prijs.

EDIT:
momenteel is het script als volgt:
  1. <?php
  2. <?php
  3. $query1 = "SELECT * FROM bingonu WHERE username = '".$user."' AND kaartnr = 1 AND ronde = '".$rondea."' ORDER BY getallen ASC LIMIT 0,25";
  4. $result1 = mysql_query($query1) or die (mysql_error());
  5. while ($row = mysql_fetch_assoc($result1))
  6. {
  7. $cijfers[] = $row['getallen'];
  8. }
  9.  
  10. for ($p = 1; $p <= 5; $p++)
  11. {
  12. echo '<tr><td style="background-color: #0066FF;">&nbsp;</td>';
  13. for ($i = 1; $i <= 5; $i++)
  14. {
  15. // echo van de td
  16. if ($i == 3 && $p == 3) //controleren of de geldzak weergegeven moet worden
  17. {
  18. echo '<td style="background-image: url(images/yellow_space.png); background-repeat:no-repeat; background-position: center;" width="50" height="50" align="center" valign="middle"><img src="images/moneybag.png" border="0" /></td>';
  19. }
  20. else
  21. {
  22. $cijfer = array_shift($cijfers); //volgende getal in de array aanspreken
  23. //controleren of dit getal getrokken is
  24. $query2 = "SELECT COUNT(*) AS aantal FROM trekking WHERE getal = ".$cijfer;
  25. $result2 = mysql_query($query2) or die (mysql_error());
  26. $trekking = mysql_result($result2,0,'aantal');
  27.  
  28. if ($trekking > 0)
  29. {
  30. echo '<td style="font-weight: bold; background-image: url(images/yellow_space.png); background-repeat:no-repeat; background-position: center;" width="50" height="50" align="center" valign="middle">'.array_shift($cijfers).'</td>';
  31. }
  32. else
  33. {
  34. echo '<td style="background-image: url(images/yellow_space.png); background-repeat:no-repeat; background-position: center;" width="50" height="50" align="center" valign="middle">'.$cijfer.'</td>';
  35. }
  36. }
  37.  
  38. echo '</td>';
  39. }
  40. echo '<td style="background-color: #0066FF;">&nbsp;</td></tr>';
  41. }
  42. ?>


Maar om de een of andere reden wordt het tweede getal uit de array overgeslagen, ik snap het niet helemaal.
Als ik print_r doe staat het tweede getal er wel tussen.
ook als ik de array_shift in een for loop van 25 zet, staat hij er gewoon tussen, maar in de bingokaart dus niet.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s