login  Naam:   Wachtwoord: 
Registreer je!
 Forum

sql + array = kolom?

Offline lasdesigner - 09/02/2006 16:56
Avatar van lasdesignerPHP beginner Hallo ik heb dit script getest:
  1. <?php
  2. $queryDB = mysql_query("SELECT * FROM illustraties WHERE weergeven='ja'");
  3. while($rowDB = mysql_fetch_array($queryDB))
  4. {
  5. $illustratie = $rowDB['img'];
  6. }
  7.  
  8. $aantalDb = mysql_num_rows($queryDB);
  9.  
  10. // hulpvariabelen
  11. $aantal_kolommen = 4;
  12. $kolom_breedte = 95; // in pixels
  13. $aantal_items = $aantalDB;
  14. $huidige_kolom = 0; // als deze variabele de waarde 0 heeft dan is er een rij afgelopen
  15. // en moet er een nieuwe beginnen
  16.  
  17. // bouw de tabel en doorloop de items
  18. ?>
  19. <table width="<?= $aantal_kolommen * $kolom_breedte ?>" border="1" cellspacing="0" cellpadding="2">
  20. <?php
  21. foreach($illustratie as $item) {
  22. // waren we klaar met een rij ?
  23. if($huidige_kolom == 0) {
  24. // open een nieuwe rij
  25. echo "<tr>\n"; // hier is \n toegevoegd om de leesbaarheid van de HTML-source te verhogen
  26. }
  27.  
  28. // druk het item af - hier zou je dus nog tabellen kunnen nesten - in dit voorbeeld houden we het simpel
  29. echo "<td width=\"".$kolom_breedte."\">".$item."</td>\n";
  30.  
  31. // we zijn een kolom verder, verhoog $huidige_kolom
  32. $huidige_kolom++;
  33.  
  34. // waren we klaar met een rij ?
  35. if($huidige_kolom == $aantal_kolommen) {
  36. // sluit de rij af en reset $huidige_kolom
  37. echo "</tr>\n";
  38. $huidige_kolom = 0;
  39. }
  40. }
  41.  
  42. // fix voor de laatste rij - was een rij volledig gevuld ?
  43. if($huidige_kolom != 0) {
  44. // rij was nog niet vol(ledig) - vul de resterende cellen op met "stuffing"
  45. for($i = $huidige_kolom; $i < $aantal_kolommen; $i++) {
  46. // in plaats van &nbsp; kun je de cel ook met iets anders vullen natuurlijk
  47. echo "<td width=\"".$kolom_breedte."\">&nbsp;</td>\n";
  48. }
  49. // sluit tenslotte de rij alsnog af
  50. echo "</tr>\n";
  51. }
  52. ?>
  53. </table>


Maar hij geeft een fout weer, namelijk
[FOUTMELDING]
Warning: Invalid argument supplied for foreach() in /home/virtualweb.nl/dekwast/schilderijen.php on line 21
[/FOUTMELDING]

Wie kan mij helpen.
Alvast bedankt,
groet.

7 antwoorden

Gesponsorde links
Offline Voldemort - 09/02/2006 16:57 (laatste wijziging 09/02/2006 16:58)
Avatar van Voldemort PHP ver gevorderde $illustratie is geen array. Moet het wel worden.
Offline Rens - 09/02/2006 17:02
Avatar van Rens Gouden medaille

Crew algemeen
Zoals Voldemort al zegt, het moet een array zijn.

Regel 6:
  1. $illustratie = $rowDB['img'];

==>
  1. $illustratie[] = $rowDB['img'];
Offline lasdesigner - 09/02/2006 17:05
Avatar van lasdesigner PHP beginner Krijg ik nog steeds deze regeL:
Warning: Invalid argument supplied for foreach() in /home/virtualweb.nl/dekwast/illustraties.php on line 21

Kan het komen omdat ik niks in de database heb staan?:O!
Offline Rens - 09/02/2006 17:10 (laatste wijziging 09/02/2006 17:11)
Avatar van Rens Gouden medaille

Crew algemeen
Jah, dat zou best kunnen 

Kunt ook nog proberen te checken met:
PHP.net: is_array
Offline Voldemort - 09/02/2006 17:36 (laatste wijziging 09/02/2006 17:51)
Avatar van Voldemort PHP ver gevorderde $illustratie bestaat ook niet, het zal enkel binnen de while lus bestaan, dus erbuiten niet. En aangezien je foreach buiten de while staat, zal het dus niet werken.

Edit: Blijkbaar wel 
Offline Rens - 09/02/2006 17:38
Avatar van Rens Gouden medaille

Crew algemeen
  1. while($rowDB = mysql_fetch_array($queryDB))
  2. {
  3. $illustratie[] = $rowDB['img'];
  4. }


Dan bestaat $illustratie wel buiten de while loop hoor...
Offline lasdesigner - 09/02/2006 17:48 (laatste wijziging 09/02/2006 18:45)
Avatar van lasdesigner PHP beginner ja dat dacht ik ook al:S want ik gebruik dat altijd zo!

Doet het:D!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.264s