login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP UPLOAD FORM

Offline sanderrebry - 06/10/2011 10:54 (laatste wijziging 06/10/2011 10:55)
Avatar van sanderrebryLid Beste,

Ik ben momenteel bezig met een website waar je geprinte platen kan bestellen.
Dus je kiest je formaten, aantal stuks en hoeveel foto's je hebt.

Daarna krijg je een form waar je de beelden kan selecteren volgens het gekozen formaat.

Dat lukt mij om dit in elkaar te steken , maar het kan zijn dat je 2 foto's hebt en 3 formaten (hier zullen dus 2 formaten met hetzelfde beeld zijn en 1 formaat met het ander beeld).

Wat is het probleem dat je telkens nu voor ieder formaat een appart beeld moet uploaden.

D.w.z je hebt 1 foto en 5 formaten ...
In de form zal je 5 formaten zien maar ook 5 input files...

Hoe kan ik dit oplossen?

[quote]
  1. $_SESSION['txt_naam'] = $_POST["txt_naam"];
  2. $_SESSION['txt_adres'] = $_POST["txt_adres"];
  3. $_SESSION['txt_postcode'] = $_POST["txt_postcode"];
  4. $_SESSION['txt_gemeente'] = $_POST["txt_gemeente"];
  5. $_SESSION['txt_telefoon'] = $_POST["txt_telefoon"];
  6. $_SESSION['txt_gsm'] = $_POST["txt_gsm"];
  7. $_SESSION['txt_email'] = $_POST["txt_email"];
  8. $aantalfiles = $_POST["aantalfiles"];
  9. $type_materiaal = $_POST["type_materiaal"];
  10. $totale_vierkantemeter = $_POST["totale_vierkantemeter"];
  11.  
  12. $totaal_prijs = $_POST["totaal_prijs"];
  13.  
  14. $aantalfiles;
  15.  
  16. echo "<h2>Uw bestelling - Kies uw beelden</h2><hr /><form action='bestel_submit.php' method='post' enctype='multipart/form-data' onsubmit='startUpload();'><table border='0' cellspacing='0' cellpadding='0' width='98%'><tbody>
  17. <tr><td>Soort materiaal:</td>
  18.  
  19. <td><input type='hidden' name='type_materiaal' value='".$type_materiaal."' />$type_materiaal</td><td>Ophangsysteem:</td><td>Formaat:</td>
  20. <td>Aantal stuks:</td>
  21.  
  22. </tr>";
  23.  
  24.  
  25. for($i=0;$i<count($_POST["lengte"]);$i++)
  26. {
  27.  
  28. $lengte = $_POST["lengte"][$i];
  29.  
  30. $txtaantalstuks = $_POST["aantalstuks"][$i];
  31.  
  32. $aantalvierkantemeter = $_POST["aantalvierkantemeter"][$i];
  33. $totaal_inmeter= $_POST["totaal_inmeter"][$i];
  34. $totaal_inprijs= $_POST["totaal_inprijs"][$i];
  35. $totalekostprijs= $_POST["totalekostprijs"][$i];
  36.  
  37. $naam_ophang= "<p>".$_POST["naam_ophang"][$i]."</p>";
  38. $inputformaat = "<p><input type='hidden' name='formaat[]' value='".$lengte." cm' />".$lengte." cm</p>";
  39. $inputaantalstuks = "<p><input type='text' name='aantalstuks[]' /></p>";
  40. echo "<tr>
  41. <td>Kies een beeld:</td><td><input type='file' name='userfile[]' /></td>
  42. <td>".$naam_ophang."</td>
  43. <td>".$inputformaat."</td>
  44. <td>".$inputaantalstuks."</td>
  45. </tr>";
  46.  
  47.  
  48.  
  49.  
  50. }
  51.  
  52. echo "</tbody>
  53. </table>";
  54. echo "<div id='f1_upload_process'></div><iframe id='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px solid #fff;'></iframe><input type='hidden' name='aantalvierkantemeter[]' value='".$aantalvierkantemeter."' /><input type='hidden' name='totale_vierkantemeter' value='".$totale_vierkantemeter."' />
  55. <input type='hidden' name='totaal_prijs' value='".$totaal_prijs."' /> <input type='hidden' name='naam_ophang' value='".$naam_ophang."' /><input type='hidden' name='aantalstuksafwijkend' value='".$totaalaantalstuks2."' /><input type='submit' name='submit' value='Bestellen' /></form>";
  56. [/quote]

13 antwoorden

Gesponsorde links
Offline vinTage - 06/10/2011 11:29
Avatar van vinTage Nieuw lid Ik neem aan dat $aantalfiles het aantal foto's is?
Dan gebruik je in je forloop gewoon $aantalfiles.

  1. for($i=0; $i<$aantalfiles; $i++)
Offline sanderrebry - 06/10/2011 11:42
Avatar van sanderrebry Lid
vinTage schreef:
Ik neem aan dat $aantalfiles het aantal foto's is?
Dan gebruik je in je forloop gewoon $aantalfiles.

[..code..]


Beste vinTage,

Dit werkt ook niet ... stel dat het aantalfiles = 2 en je hebt 3 formaten zal de for lus maar 2x overlopen en zal het formaat ook maar 2x vertoont worden

Even een voorbeeldje:

Ik heb 2 aantal files... met 100 cm x 100 cm - 20 cm x 20 cm - 30 x 30 cm
Dan krijg ik als output:

Kies een bestand - 100x 100
Kies een bestand - 20x 20


(Waar is 30x30?)

Dit werkt dus niet...

Toch bedankt !
Offline vinTage - 06/10/2011 12:15
Avatar van vinTage Nieuw lid Je kan ook per image een formaat meegeven.
Dus je selecteert een file en in een textfield daarnaast laat je de verschillende afmetingen ingeven.
Als je alleen 'vaste' formaten hebt, kun je evt ook een <select multiple="multiple"> tonen.
Offline sanderrebry - 06/10/2011 14:46 (laatste wijziging 06/10/2011 14:47)
Avatar van sanderrebry Lid
vinTage schreef:
Je kan ook per image een formaat meegeven.
Dus je selecteert een file en in een textfield daarnaast laat je de verschillende afmetingen ingeven.
Als je alleen 'vaste' formaten hebt, kun je evt ook een <select multiple="multiple"> tonen.


Beste,

Dit is mij gelukt maar als ik het formulier verstuur geraak ik er wel niet uit.

Ik gebruik terug een for lus om alle gegevens op te halen.
Als ik
  1. for($i=0;$i<count($_FILES["userfile"]['name']);$i++)
gebruik
Anderzijds als ik
  1. for($i=0;$i<count($_POST['formaat']);$i++)
gebruik bekom ik alle aangeduide formaten maar klopt het niet met het aantalfiles..

Bijvoorbeeld:

Ik heb 2 files geupload
Bij file 1 heb ik formaat 80x 80 en 40x40 aangeduid.
Bij file 2 heb ik formaat 100x100 en 20x20 aangeduid.

Dit zijn nu dus 4 formaten en 2 aantalfiles.

Geen van beide for lussen bekomen tot resultaat dat ik wil.
Ofwel krijg ik alle formaten te zien maar krijg ik dan enkel 2 aantalfiles.
Ofwel krijg ik alle aantal files maar heb ik te weinig formaten.
Offline vinTage - 06/10/2011 16:16
Avatar van vinTage Nieuw lid Copy/pasten in een test bestandje en uittesten of je dit dan bedoeld.

  1. <?php
  2. if(isset($_GET['aantal']))
  3. {
  4. ?>
  5. <form method="post" action="" enctype="multipart/form-data">
  6. <?php
  7. for($i = 0; $i < $_GET['aantal']; $i++)
  8. {
  9. ?>
  10. <div style="margin-bottom:10px; border:solid 1px grey; width:250px">
  11. <input type="file" name="plaatje_<?php echo $i?>"></input>
  12. <select multiple="multiple" name="select_<?php echo $i?>[]">
  13. <option value="20*20">20*20</option>
  14. <option value="40*40">40*40</option>
  15. <option value="60*60">60*60</option>
  16. <option value="80*80">80*80</option>
  17. </select>
  18. </div>
  19. <?php
  20. }
  21. ?>
  22. <input type="submit" name="knop" />
  23. </form>
  24. <?php
  25. if(isset($_POST['knop']))
  26. {
  27. for($i = 0; $i < $_GET['aantal']; $i++)
  28. {
  29. foreach($_POST['select_'.$i] as $val)
  30. {
  31. echo $val.' met plaatje => '.$_FILES['plaatje_'.$i]['name'].'<br>';
  32. }
  33. }
  34. }
  35. }
  36. else
  37. {
  38. ?>
  39. <form action="" method="get">
  40. aantal: <input name="aantal" type="text" /> <input name="" type="submit" value="go" />
  41. </form>
  42. <?php
  43. }
  44. ?>
Offline sanderrebry - 06/10/2011 18:14 (laatste wijziging 06/10/2011 18:20)
Avatar van sanderrebry Lid
vinTage schreef:
Copy/pasten in een test bestandje en uittesten of je dit dan bedoeld.

[..code..]


Beste,

Het is inderdaad dit dat ik wel zeggen.

Maar krijg wel die foutmelding: Warning: Invalid argument supplied for foreach() in /var/www/vhosts/demuynck-printing.be/httpdocs/modules/code/view.php(32) : eval()'d code on line 23

Offline vinTage - 06/10/2011 18:58
Avatar van vinTage Nieuw lid eval ? waar heb ik dat gebruikt..?
Offline sanderrebry - 07/10/2011 10:01
Avatar van sanderrebry Lid
vinTage schreef:
eval ? waar heb ik dat gebruikt..?


Beste,

Het was mijn fout.
Blijkbaar dat mijn WYSIWYG van het CMS systeem alle php tags verwijderd.
Als ik de pagina gewoon upload naar de ftp server en dan open zonder cms werkt alles.
Ik zal nu alles proberen te verwerken in het CMS systeem en ik hou u op de hoogte of alles werkt .
Bedankt voor je snelle reactie en voor je hulp !
Offline vinTage - 07/10/2011 10:08
Avatar van vinTage Nieuw lid Nadat ik het scriptje testen met 'veel' bestanden, werkte het niet meer.
Na wat snuffelen in mn error logs, leek dat te komen door een memory probleem.
Je zult dus (als je geen restricties aan de filesizes meegeeft) je memory moeten verhogen.

Een en ander kan je verwezelijken via PHP.net: ini_set.

Misschien is het ook 'slimmer' om in die forloop die uploadforms middels een iFrame te tonen, dan krijgt (denk ik) per upload het hele memory ipv een gedeelte.
Offline sanderrebry - 07/10/2011 11:30
Avatar van sanderrebry Lid
vinTage schreef:
Nadat ik het scriptje testen met 'veel' bestanden, werkte het niet meer.
Na wat snuffelen in mn error logs, leek dat te komen door een memory probleem.
Je zult dus (als je geen restricties aan de filesizes meegeeft) je memory moeten verhogen.

Een en ander kan je verwezelijken via PHP.net: ini_set.

Misschien is het ook 'slimmer' om in die forloop die uploadforms middels een iFrame te tonen, dan krijgt (denk ik) per upload het hele memory ipv een gedeelte.


Ik zal dit bekijken hoe we dit kunnen oplossen.

Nog een volgende vraag : het aantal stuks per formaat.

Ik heb de volgende code voor mijn formulier al gemaakt maar weet niet hoe ik die terug kan outputten.

  1. $_SESSION['txt_naam'] = $_POST["txt_naam"];
  2. $_SESSION['txt_adres'] = $_POST["txt_adres"];
  3. $_SESSION['txt_postcode'] = $_POST["txt_postcode"];
  4. $_SESSION['txt_gemeente'] = $_POST["txt_gemeente"];
  5. $_SESSION['txt_telefoon'] = $_POST["txt_telefoon"];
  6. $_SESSION['txt_gsm'] = $_POST["txt_gsm"];
  7. $_SESSION['txt_email'] = $_POST["txt_email"];
  8. $aantalfiles = $_POST["aantalfiles"];
  9. $type_materiaal = $_POST["type_materiaal"];
  10. $totale_vierkantemeter = $_POST["totale_vierkantemeter"];
  11.  
  12. $totaal_prijs = $_POST["totaal_prijs"];
  13.  
  14.  
  15.  
  16. echo "<h2>Uw bestelling - Kies uw beelden</h2><hr /><form action='bestel_submit.php' method='post' enctype='multipart/form-data' onsubmit='startUpload();'><table border='0' cellspacing='0' cellpadding='0' width='98%'><tbody>
  17. <tr><td>Soort materiaal:</td>
  18.  
  19. <td><input type='hidden' name='type_materiaal' value='".$type_materiaal."' />$type_materiaal</td><td>Ophangsysteem:</td><td>Formaat:</td>
  20. <td>Aantal stuks:</td>
  21.  
  22. </tr>";
  23.  
  24.  
  25. for($i=0;$i<$aantalfiles;$i++)
  26. {
  27. $formaat_output ='<select name="select_'.$i.'[]" multiple="multiple">';
  28. for($i2=0;$i2<count($_POST["lengte"]);$i2++)
  29. {
  30. $lengte = $_POST["lengte"][$i2];
  31. $formaat_output .='
  32. <option value="'.$lengte.'">'.$lengte.'</option>';
  33. $txtaantalstuks = $_POST["aantalstuks"][$i2];
  34.  
  35.  
  36. }
  37.  
  38.  
  39. $aantalvierkantemeter = $_POST["aantalvierkantemeter"][$i];
  40. $totaal_inmeter= $_POST["totaal_inmeter"][$i];
  41. $totaal_inprijs= $_POST["totaal_inprijs"][$i];
  42. $totalekostprijs= $_POST["totalekostprijs"][$i];
  43. $naam_ophang= $_POST["naam_ophang"][$i];
  44. echo '<tr>
  45. <td>Kies een beeld:</td><td><input type="file" name="userfile_'.$i.'" /></td>
  46. <td>'.$naam_ophang.'</td>
  47. <td>'.$formaat_output.'</select></td>
  48. <td>';
  49. for($i3=0;$i3<count($_POST["lengte"]);$i3++)
  50. {
  51. echo $inputaantalstuks = "<input type='text' name='aantalstuks_".$i."[]' value='0' size='4'/><p></p>";
  52.  
  53. }
  54. echo '</td>
  55. </tr>';
  56.  
  57.  
  58.  
  59.  
  60. }
  61.  
  62. echo "</tbody>
  63. </table>";
  64. echo "<div id='f1_upload_process'></div><iframe id='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px solid #fff;'></iframe><input type='hidden' name='aantalvierkantemeter[]' value='".$aantalvierkantemeter."' /><input type='hidden' name='totale_vierkantemeter' value='".$totale_vierkantemeter."' />
  65. <input type='hidden' name='totaal_prijs' value='".$totaal_prijs."' /> <input type='hidden' name='naam_ophang' value='".$naam_ophang."' /><input type='hidden' name='aantalstuksafwijkend' value='".$totaalaantalstuks2."' /><input type='submit' name='submit' value='Bestellen' /></form>";


Zoals je kunt zien heb ik de formaten in for laten komen.
Dit werkt goed maar ik weet niet hoe ik die kan outputten gekoppeld aan het formaat.

Bijvoorbeeld:
100 cm / 100 Waterlelies.jpg -2 stuks
30 cm / 30 Waterlelies.jpg - 1 stuk
40 cm / 40 Zonsonderrrgang.jpg - 5 stuks
Offline vinTage - 07/10/2011 15:27
Avatar van vinTage Nieuw lid mjah, dan zul je de opzet verder moeten uitbreiden...
Per plaatje een input voor het formaat een extra input voor het aantal van dat formaat.


Wat me nog steeds niet duidelijk is, is waar je die formaten vandaan haalt, zijn dat bv standaard maten, of kan de bezoeker die zelf verzinnen, is het altijd vierkant... etc?
Offline sanderrebry - 07/10/2011 16:36
Avatar van sanderrebry Lid
vinTage schreef:
mjah, dan zul je de opzet verder moeten uitbreiden...
Per plaatje een input voor het formaat een extra input voor het aantal van dat formaat.


Wat me nog steeds niet duidelijk is, is waar je die formaten vandaan haalt, zijn dat bv standaard maten, of kan de bezoeker die zelf verzinnen, is het altijd vierkant... etc?


Beste ,

Die haal ik van een vorige formulier .
De bezoeker vult inderdaad zelf zijn formaten in.
Misschien even uittesten:

http://demuynck...bond%203mm

Dan zal je het systeem wel begrijpen .

Bedankt !
Offline vinTage - 07/10/2011 18:47
Avatar van vinTage Nieuw lid aha!

Als je nu gewoon dmv een onchange eventaan je "Aantal verschillende bestanden:" input, hetzelfde formuliertje toont als je nu hebt, dan ben je er al.

Ik wil wel een vb maken, maar ben zo dadelijk weg.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.278s