login  Naam:   Wachtwoord: 
Registreer je!
 Forum

foreach fout

Offline BigBug - 23/03/2006 14:47
Avatar van BigBugPHP expert Ikke hele dikke noob met foreach...

Ik heb nu dit:
  1. <?php
  2. if(!$qGetAvatars = mysql_query("SELECT * FROM avatars WHERE cat='3'"))
  3. {
  4. echo "Er ging iets fout!: ".mysql_error()."";
  5. }
  6. else
  7. {
  8. if(mysql_num_rows($qGetAvatars ) == 0)
  9. {
  10. echo 'Er bevinden zich nog geen avatars in deze categorie!';
  11. }
  12. else
  13. {
  14. while($aAvatars = mysql_fetch_array($qGetAvatars))
  15. {
  16. $i = 0;
  17. foreach($aAvatars['img_link'] as $v)
  18. {
  19. echo "<img src='avatars/".$v."'>";
  20. $i++;
  21. if($i == 4)
  22. {
  23. echo "<br />";
  24. $i = 0;
  25. }
  26. }
  27. }
  28. }
  29. }
  30. ?>
Foutje op line 17. Het zal hoogstwaarschijnlijk aan die [] achter de array liggen, maar hoe los ik dit op? Want ik wil enkel alleen de img_link var hebben.

Bij voorbaat dank 

15 antwoorden

Gesponsorde links
Offline riekele - 23/03/2006 14:48
Avatar van riekele PHP beginner welke fout krijg je dan?
Offline BigBug - 23/03/2006 14:49
Avatar van BigBug PHP expert Oja, sorry was ik vergeten,

Warning: Invalid argument supplied for foreach() in /home/big-bug.nl/www/php/avatarsysteem/showavatars.php on line 17
Offline vinTage - 23/03/2006 14:55
Avatar van vinTage Nieuw lid Haal die foreach loop uit die while loop.
Offline BigBug - 23/03/2006 14:56 (laatste wijziging 23/03/2006 15:00)
Avatar van BigBug PHP expert FF proberen 

Edit: Ik heb het nu als volgt:
  1. <?php
  2. if(!$qGetAvatars = mysql_query("SELECT * FROM avatars WHERE cat='3'"))
  3. {
  4. echo "Er ging iets fout!: ".mysql_error()."";
  5. }
  6. else
  7. {
  8. if(mysql_num_rows($qGetAvatars ) == 0)
  9. {
  10. echo 'Er bevinden zich nog geen avatars in deze categorie!';
  11. }
  12. else
  13. {
  14. while($aAvatars = mysql_fetch_array($qGetAvatars))
  15. {
  16. $vLink = $aAvatars['img_link'];
  17. }
  18.  
  19. $i = 0;
  20. foreach($vLink as $v)
  21. {
  22. echo "<img src='avatars/".$v."'>";
  23. $i++;
  24. if($i == 4)
  25. {
  26. echo "<br />";
  27. $i = 0;
  28. }
  29. }
  30. }
  31. }
  32. ?>


Het werkt nog steeds niet, zelfde error maar dan op line 20.
Offline vinTage - 23/03/2006 15:03
Avatar van vinTage Nieuw lid en zo ?

  1. <?php
  2. if(!$qGetAvatars = mysql_query("SELECT * FROM avatars WHERE cat='3'"))
  3. {
  4. echo "Er ging iets fout!: ".mysql_error()."";
  5. }
  6. else
  7. {
  8. if(mysql_num_rows($qGetAvatars ) == 0)
  9. {
  10. echo 'Er bevinden zich nog geen avatars in deze categorie!';
  11. }
  12. else
  13. {
  14. while($aAvatars = mysql_fetch_array($qGetAvatars))
  15. {
  16. $i = 0;
  17. }
  18. }
  19. }
  20.  
  21. foreach($aAvatars['img_link'] as $v)
  22. {
  23. echo "<img src='avatars/".$v."'>";
  24. $i++;
  25. if($i == 4)
  26. {
  27. echo "<br />";
  28. $i = 0;
  29. }
  30. }
  31. ?>
Offline BigBug - 23/03/2006 15:04
Avatar van BigBug PHP expert Warning: Invalid argument supplied for foreach() in /home/big-bug.nl/www/php/avatarsysteem/showavatars.php on line 53

Dat van jouw gaat niet vinTage. Je wilt alles ophalen, totdat je alle rijen hebt gehad, maar dat kan niet buiten de while loop, want in de while loop moet je de acties uitvoeren.
Offline vinTage - 23/03/2006 15:08 (laatste wijziging 23/03/2006 15:13)
Avatar van vinTage Nieuw lid Mjah ik dacht dat het mss kwam omdat je in die while loop alleen een var hebt, maar dat is nog geen array (denk ik toch)

En als je dan dit bijv test, dan zie je vanzelf wat ik bedoel:

  1. <?php
  2.  
  3. //comment een van de 2 regelshieronder.
  4. $aap = array("aap","noot","mies"); // dit werkt wel
  5. $aap = "lol"; // dit werkt niet, het geeft jou error
  6.  
  7. foreach($aap as $v)
  8. {
  9. echo "<img src='avatars/".$v."'>";
  10. }
  11. ?>


wel even die $aap commenten he, de eerste of de 2e 
Offline BigBug - 23/03/2006 15:13
Avatar van BigBug PHP expert In feite is na die fetch_array in jouw voorbeeld $aap zoals het eerste wat jij hebt?

Of zit ik nu verkeerd?
Offline vinTage - 23/03/2006 15:14 (laatste wijziging 23/03/2006 15:15)
Avatar van vinTage Nieuw lid Ok ik zeg het anders, ik DENK dat het eerste argument in je foreach loop leeg is. (of maar één waarde), maar ik hou maar op, want ik ben ook nog niet slim genoeg voor dit 

Offline Thomas - 23/03/2006 15:16 (laatste wijziging 23/03/2006 15:16)
Avatar van Thomas Moderator Is $aAvatars['img_link'] een array? Dat lijkt mij gewoon een string... Een foreach op strings werkt niet echt...
Offline BigBug - 23/03/2006 15:16 (laatste wijziging 23/03/2006 15:17)
Avatar van BigBug PHP expert Vast wel slim genoeg, maar jij snapt er ook gewoon de balle van Ik wacht wel op nemesiskoen of FangorN 

Edit:
Citaat:
Is $aAvatars['img_link'] een array? Dat lijkt mij gewoon een string... Een foreach op strings werkt niet echt...
Nu je het zegt, idd... Maarja, hoe kan ik ervoor zorgen dat bij die foreach alleen daarvan de waardes worden teruggegeven (dus alleen degenen met de img_link dus)??
Offline vinTage - 23/03/2006 15:18
Avatar van vinTage Nieuw lid die heeft net gereageerd (vorige pagina), en zei op een nette manier wat ik ook zei (alleen hij weet het beter te verwoorden 
Offline Rens - 23/03/2006 15:22 (laatste wijziging 23/03/2006 15:25)
Avatar van Rens Gouden medaille

Crew algemeen
En als je het nou eens zo zou doen:
  1. <?php
  2. if(!$qGetAvatars = mysql_query("SELECT * FROM avatars WHERE cat='3'"))
  3. {
  4. echo "Er ging iets fout!: ".mysql_error()."";
  5. }
  6. else
  7. {
  8. if(mysql_num_rows($qGetAvatars ) == 0)
  9. {
  10. echo 'Er bevinden zich nog geen avatars in deze categorie!';
  11. }
  12. else
  13. {
  14. while($aAvatars = mysql_fetch_array($qGetAvatars))
  15. {
  16. $i = 0;
  17. echo "<img src='avatars/".$aAvatars['img_link']."'>";
  18. $i++;
  19. if($i == 4)
  20. {
  21. echo "<br />";
  22. $i = 0;
  23. }
  24. }
  25. }
  26. }
  27. ?>


Ik snap eerlijk gezegd ook niet waarom jij en foreach en while gebruikt.
Alleen while of foreach is genoeg?

edit: Had onder tussen even de code gewijzigd, zeker weten dat je de code hebt die er nu staat?
Offline BigBug - 23/03/2006 15:24 (laatste wijziging 23/03/2006 15:30)
Avatar van BigBug PHP expert Als ik het zo doe als jij...

Krijg ik weer dezelfde error op line 16 van jouw script.

Edit: WooHoo, hij werkt nu wel Had inderdaad het andere script. Nu eens goed gaan bekijken wat ik fout deed. Tya 

Edit 2: Je had nog een klein foutje, die eerste $i in de while loop gezet, waardoor die oneindig horizontaal door bleef gaan. die $i = 0; moest boven de while() loop staan. Maar het werkt nu top 
Offline Rens - 23/03/2006 15:28
Avatar van Rens Gouden medaille

Crew algemeen
Wat jij deed:
$aAvatars['img_link'] is gewoon een string, en geen array, zoals FangorN al zei.
Als je daarop een foreach gebruikt, gebruik je dus een string en geen array.
Daarom was de foreach ook best overbodig...
Je loopt er met een while al door heen, dus hoef je er niet nog eens met een foreach doorheen te lopen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.264s