login  Naam:   Wachtwoord: 
Registreer je!
 Forum

$_FILES foreachen.

Offline Nanon - 24/04/2008 08:01
Avatar van NanonPHP interesse Hoi,

Ik ben al wat wezen zoeken op het internet, maar ik werd er niet veel wijzer van. Ik heb een formulier met input velden van het type 'file'.

  1. <form method="post" enctype="multipart/form-data" action="imgforeach.php">
  2.  
  3. <input type="file" name="imageFile[]" value="" /> <br />
  4.  
  5. <input type="file" name="imageFile[]" value="" /> <br />
  6.  
  7. <input type="file" name="imageFile[]" value="" /> <br />
  8.  
  9. <input type="file" name="imageFile[]" value="" /> <br />
  10.  
  11. <input type="file" name="imageFile[]" value="" /> <br />
  12.  
  13. <input type="submit" name="send" value="Send" />
  14.  
  15. </form>


Daarbij het volgende stukje PHP code ( waar ik dus niet verder mee kom )

  1. <?php
  2.  
  3. if( $_SERVER['REQUEST_METHOD'] == 'POST' && isset( $_POST['send'] ) )
  4. {
  5.  
  6. foreach( $_FILES as $key => $value )
  7. {
  8.  
  9. echo $_FILES['file'][$key];
  10.  
  11. }
  12.  
  13. }
  14.  
  15. ?>


Ik wil dus dat ik door middel van de foreach-loop alle $_FILES data kan ophalen ( $_FILES['name']['tmp_name'] etc etc ).

7 antwoorden

Gesponsorde links
Offline Grayen - 24/04/2008 08:22
Avatar van Grayen PHP ver gevorderde doe eens:

  1. echo '<pre>'.print_r($_FILES, true).'</pre>';


en je zal zien dat je de loop fout hebt.
Offline Nanon - 24/04/2008 08:57
Avatar van Nanon PHP interesse True, maar zover was ik zelf ook al. Ik zoek juist naar een oplossing daarvoor.
Offline timmie_loots - 24/04/2008 11:13 (laatste wijziging 24/04/2008 11:13)
Avatar van timmie_loots PHP gevorderde Je moet even kijken hoeveel name-elements er in die array zitten. Aan de hand daarvan een for-loopje opstellen en je kunt ze doorlopen. Zoiets krijg je dan:

  1. <?php
  2.  
  3. if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES)) {
  4.  
  5. // Het aantal elements
  6. $elements = count($_FILES['name']);
  7.  
  8. // Loopje
  9. for ($i = 0; $i < $elements; $i++) {
  10.  
  11. // De variabelen ophalen
  12. $name = $_FILES['name'][$i];
  13. $type = $_FILES['type'][$i];
  14. $tmp_name = $_FILES['tmp_name'][$i];
  15. $error = $_FILES['error'][$i];
  16. $size = $_FILES['size'][$i];
  17.  
  18. // Hier kun je dan wat met bovenstaande variabelen doen
  19.  
  20. }
  21.  
  22. }
  23.  
  24. ?>
Offline Grayen - 24/04/2008 13:08
Avatar van Grayen PHP ver gevorderde
Citaat:
True, maar zover was ik zelf ook al. Ik zoek juist naar een oplossing daarvoor.


Gaf ik toch 

  1. echo '<pre>'.print_r($_FILES, true).'</pre>';


Dan is het gewoon een kwestie van kijken hoe zit de array in elkaar. En je loop daaraan aanpassen.
Offline Kr4nKz1n - 24/04/2008 13:28
Avatar van Kr4nKz1n Onbekend Ik vind het altijd zo jammer als mensen zoveel vars aanmaken.

  1. For($iFiles = 0; $iFiles < Count($_FILES['name']; $iFiles++) {


Tenzij je hem vaker nodig hebt.

Ligt eraan met welke editor je werkt, ik werk met phpDesigner Pro en dan kun je als je $i in hebt getypt zien welke var je wilt hebben. Nu kan ik zien dat die $i dus van $iFiles is. En dan weet ik zelf wel waar ik dat heb gebruikt.

Het zijn maar tips ;)
Offline Rens - 24/04/2008 22:50
Avatar van Rens Gouden medaille

Crew algemeen
Nog een tip dan:
Jij gebruikt in je for-lus zelf de count.
Het nadeel hiervan is, dat elke keer dat je door die lus loopt, hij opnieuw de count gaat uitrekenen.
Als je die count er voor zou zetten en in een var plaatst, dan hoeft hij het maar 1 keer uit te rekenen.
Nu maakt dat met een laag aantal niks uit, maar als je zo een hoog getal er uit zou krijgen, en dus een lange loop zou krijgen, zou het wel degelijk trager zijn.
Offline Ibrahim - 24/04/2008 22:51 (laatste wijziging 24/04/2008 22:51)
Avatar van Ibrahim PHP expert 2 opmerkingen:

1) Waarom een for loop gebruiken als je foreach hebt?
2) Het is beter om de for loop van Kr4nKz1n aan te passen naar dit:

  1. For($iFiles = 0, $count = count($_FILES['name']); $iFiles < $count; $iFiles++) {


Aangezien je dan maar de count functie 1x aanroept ipv elke keer dat de lus uitgevoerd wordt.

edit: Rens was me voor 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.297s