login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Foreach melding wegens geen bestand

Offline RudyL - 06/07/2006 09:28
Avatar van RudyLNieuw lid http://www.plaatscode.be/1118/

Wanneer ik bovenstaand script gebruik word er perfect een directory uitgelezen. Wanneer er in deze directory een map zit zie ik die ook. Wanneer ik die map open krijg ik de volgende foutmelding:

Warning: Invalid argument supplied for foreach() in D:\Webserver\ConstruSteel\cs_share\dir_browser.php on line 119

Dit komt doordat er in de map die ik open geen bestand zit, maar nog een nieuwe map, waarin dan wel een bestand zit. Wanneer er in elke map een bestand zit is er niets aan de hand, maar aangezien ik verwacht dat het wel kan voorkomen dat er alleen mappen in een map zitten ben ik bang dat ik vaker die melding krijg wat niet de bedoeling is.

Hoe is dit op te lossen?

4 antwoorden

Gesponsorde links
Offline Tuinstoel - 06/07/2006 09:53
Avatar van Tuinstoel PHP expert De foutmelding zegt dat je een ongeldig argument gebruikt, d.w.z. dat het geen array is. Ga eens na (dmv. print_r of echo) wat het is. Maar het kan dus ook zijn dat je array dus niks bevat. Daarom zou je eerst moeten controleren met count($array) of je array 0 dingen bevat, zo ja, dan doet hij de foreach() niet.
Offline RudyL - 06/07/2006 09:55
Avatar van RudyL Nieuw lid De array is ook nul doordat er geen bestanden in die map zitten lijkt me. Maar hoe kan ik er voor zorgen dat hij eerst gaat kijken of de map iets bevat voordat hij die foreach wil uitvoeren. Zo zou ik de foutmelding toch moeten kunnen omzijlen.
Offline Tuinstoel - 06/07/2006 11:34
Avatar van Tuinstoel PHP expert Nou als jij opendir() gebruikt open je de map. Vervolgens lees je deze uit met readdir(), en dan zet je de bestanden weer in $the_files[]. Dus als je met count() eens het aantal records in je array $the_files uitleest dan kom je al een heel eind.
  1. <?php
  2. if(count($the_files) == 0) {
  3. echo 'Er zijn geen bestanden gevonden.';
  4. }
  5. else {
  6. foreach ...
  7. }
  8. ?>


Dan nog even een opmerking. Je doet op een gegeven moment array($the_files);, tot zo ver mijn weten zie ik nergens aangegeven dat je een array aanmaakt boven het stuk dat je de gegevens in een array zet. Dat leverde bij mij altijd een fout op, dus ik zou boven in je script zetten: $the_files = array();.
Offline RudyL - 06/07/2006 11:51
Avatar van RudyL Nieuw lid Het toevoegen van jou stukje code werkt perfect. De echo heb ik wel leeggelaten en ik ontvang geen foutmelding meer.

Verder krijg ik geen array melding. Eerder was dit een

natcasesort

en kreeg ik de melding dat ik dit zou moeten veranderen in een array. Nadat ik dit had veranderd kreeg ik geen foutmelding meer.
Het lijkt nu perfect te werken.

Dankje Tuinstoel.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s