login  Naam:   Wachtwoord: 
Registreer je!
 Forum

uploaden van meerdere foto's (Opgelost)

Offline Gust - 12/06/2009 13:19 (laatste wijziging 12/06/2009 13:20)
Avatar van GustMySQL interesse Ik heb een formulier gemaakt waar ook meerdere foto's worden toegevoegd. Het is de bedoeling dat deze foto's in een map worden geplaatst. Het is ook de bedoeling dat de url naar die map in de database wordt geplaatst.

Maar de foto's worden maar niet toegevoegd. Wat doe ik verkeerd?

index.php
  1. <form name="form1" method="post" action="verwerk.php">
  2. <table width="99" border="0" cellspacing="0" cellpadding="0">
  3. <tr>
  4. <td>titel<br>
  5. <input type="text" name="titel2" id="titel2" size="100"/></td>
  6. </tr>
  7. <tr>
  8. <td height="20">&nbsp;</td>
  9. </tr>
  10. <tr>
  11. <td>foto's<br>
  12. <input type="file" name="pictures[]" id="pictures[]"/><br>
  13. <input type="file" name="pictures[]3" id="pictures[]3"/><br>
  14. <input type="file" name="pictures[]4" id="pictures[]4"/><br>
  15. <input type="file" name="pictures[]5" id="pictures[]5"/><br>
  16. </td>
  17. </tr>
  18.  
  19. <input type="submit" name="button" id="button" value="Doorsturen" />
  20.  
  21. </form>


verwerk.php
  1. <?php
  2.  
  3. $username = "geheim";
  4. $password = "geheim";
  5. $host="localhost";
  6. $dbnaam="geheim";
  7.  
  8. $files = array();
  9.  
  10. if ($_FILES["pictures"]["error"] == UPLOAD_ERR_OK) {
  11. $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
  12. $name = $_FILES["pictures"]["name"][$key];
  13. move_uploaded_file($tmp_name, "images/$name");
  14. array_push($files, $name);
  15. }
  16.  
  17.  
  18. $db=mysql_connect($host, $username, $password) or die (mysql_error());
  19. mysql_select_db($dbnaam, $db) or die (mysql_error());
  20.  
  21.  
  22. <table width=\"400\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#CC0000\">
  23. <tr>
  24. <td>
  25. <div align=\"center\"><b><font color=\"#CC0000\" face=\"Helvetica, Arial, sans-serif\" size=\"2\">
  26. <br>";
  27.  
  28. if(!strlen($_POST['titel'])) {
  29. echo ' Je hebt geen titel ingevuld <br><br>';
  30. echo '<a href="javascript:history.back(-1)">Terug</a><br><br>';
  31.  
  32. echo '
  33. <br>
  34. </font></b></div>
  35. <br>
  36. </td>
  37. </tr>
  38. </table>
  39. <br>
  40. <br>
  41. ';
  42.  
  43. } else
  44. {
  45.  
  46. $query="INSERT INTO tabel (titel, file1, file2, file3, file4) VALUES (\"$titel\", \"$files[0]\", \"$files[1]\", \"$files[2]\", \"$files[3]\");";
  47.  
  48. $file1 = $_POST["file1"];
  49. $file2 = $_POST["file2"];
  50. $file3 = $_POST["file3"];
  51. $file4 = $_POST["file4"];
  52.  
  53. $result = mysql_query($query) or die(mysql_error());
  54.  
  55.  
  56. ?>
  57.  
  58. <html>
  59. <head>
  60. <meta http-equiv="REFRESH" content="5;URL=index.htm">
  61.  
  62. </head>
  63. <body>
  64.  
  65. <center>
  66. <?php
  67.  
  68.  
  69. "
  70. De tour is succesvol toegevoegd in de lijst</span></p>
  71. <p><span class=\"tekstrood\"> U wordt zometeen verdergestuurd<br>
  72. <a href=\"index.htm\">of klik hier indien dit niet gebeurt</a></span><br><br>
  73.  
  74.  
  75. ";
  76. }
  77.  
  78. ?>
  79.  
  80. </center>
  81.  
  82. </body>
  83. </html>

10 antwoorden

Gesponsorde links
Offline Wim - 12/06/2009 13:28 (laatste wijziging 12/06/2009 13:43)
Avatar van Wim Crew algemeen
  1. <input type="file" name="pictures[]" id="pictures[]"/><br>
  2. <input type="file" name="pictures[]3" id="pictures[]3"/><br>
  3. <input type="file" name="pictures[]4" id="pictures[]4"/><br>
  4. <input type="file" name="pictures[]5" id="pictures[]5"/><br>


moet zijn:

  1. <input type="file" name="pictures[]" /><br>
  2. <input type="file" name="pictures[]" /><br>
  3. <input type="file" name="pictures[]" /><br>
  4. <input type="file" name="pictures[]" /><br>


verder gebruik je op lijn 11 en 12 "$key", maar deze wordt nergens gedefineert?
$_POST['pictures'] is nu een array. Je kan die doorlopen met PHP.net: foreach. Bvb:
  1. foreach ($_POST['pictures'] as $picture)
  2. {
  3. print_r($picture); // deze is hier hetzelfde dan $_POST['picutre'] bij een single upload zou zijn
  4. }
Offline Gust - 12/06/2009 13:38
Avatar van Gust MySQL interesse Dus in de plaats van:

  1. if ($_FILES["pictures"]["error"] == UPLOAD_ERR_OK) {
  2. $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
  3. $name = $_FILES["pictures"]["name"][$key];
  4. move_uploaded_file($tmp_name, "images/$name");
  5. array_push($files, $name);
  6. }


Moet ik dit doen:

  1. foreach ($_POST['pictures'] as $picture)
  2. {
  3. print_r($picture); // deze is hier hetzelfde dan $_POST['picutre'] bij een single upload zou zijn
  4. }


Dan zie ik alleen in de output het volgende:
C:\Users\pc7\Desktop\boot_2.jpg maar intussen wordt er niets toegevoegd aan de database
Offline Wim - 12/06/2009 13:45
Avatar van Wim Crew algemeen Bestanden op jouw pc kunnen wij niet bekijken... "C:\Users\pc7\Desktop\boot_2.jpg" is voor ons dus nutteloos...

Verder, je moet de code niet klakkeloos overnemen. Ik zette in de foreach-loop "print_r($picture)" zodat het duidelijk zou zijn dat het een array was, en dat deze gelijk is aan een normale array van een FILE-veld. (maw met tmp_name, name, error, ...)
Offline Gust - 12/06/2009 13:47
Avatar van Gust MySQL interesse Maar weet je dan hoe het wel moet?
Offline marten - 12/06/2009 14:32
Avatar van marten Beheerder ipv $_POST['pictures'] moet je $_FILES['pictures'] gebruiken.
Offline Gust - 12/06/2009 15:06
Avatar van Gust MySQL interesse Ik heb een var_dump($_FILES); gedaan en zie dit:

array(1) { ["pictures"]=> array(5) { ["name"]=> array(4) { [0]=> string(12) "E-ticket.jpg" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } ["type"]=> array(4) { [0]=> string(11) "image/pjpeg" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } ["tmp_name"]=> array(4) { [0]=> string(18) "/usr/tmp/phpp5gsrv" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } ["error"]=> array(4) { [0]=> int(0) [1]=> int(4) [2]=> int(4) [3]=> int(4) } ["size"]=> array(4) { [0]=> int(421702) [1]=> int(0) [2]=> int(0) [3]=> int(0) } } }


Ik heb ook een print_r($_FILES['pictures']) gedaan en zie dit:

Array ( [name] => Array ( [0] => E-ticket.jpg [1] => [2] => [3] => ) [type] => Array ( [0] => image/pjpeg [1] => [2] => [3] => ) [tmp_name] => Array ( [0] => /usr/tmp/phpp5gsrv [1] => [2] => [3] => ) [error] => Array ( [0] => 0 [1] => 4 [2] => 4 [3] => 4 ) [size] => Array ( [0] => 421702 [1] => 0 [2] => 0 [3] => 0 ) )
Offline Wim - 12/06/2009 15:25
Avatar van Wim Crew algemeen Ja... Is toch duidelijk? Het is een array van meerdere FILE-array's. (2dimensionele array)
Offline Gust - 12/06/2009 15:39
Avatar van Gust MySQL interesse Maar wil dat dan zeggen dat ik fout bezig ben of is dat normaal?
Offline marten - 12/06/2009 15:47
Avatar van marten Beheerder Dat is normaal. Nu ga je in de foreach zoals je al had, de functie move_uploaded_file gebruiken om de bestanden te kopieren naar je eigen server vanuit de temp dir.
Offline Gust - 12/06/2009 16:11 (laatste wijziging 12/06/2009 16:52)
Avatar van Gust MySQL interesse Dit bedoel je?
(move_uploaded_file($_FILES['pictures']['tmp_name'], $uploadfile));

Even een stand van zaken:

index.php
  1. <form name="form1" method="post" action="verwerk.php">
  2. <table width="99" border="0" cellspacing="0" cellpadding="0">
  3. <tr>
  4. <td>titel<br>
  5. <input type="text" name="titel2" id="titel2" size="100"/></td>
  6. </tr>
  7. <tr>
  8. <td height="20">&nbsp;</td>
  9. </tr>
  10. <tr>
  11. <td>foto's<br>
  12. <input type="file" name="pictures[]" id="pictures[]"/><br>
  13. <input type="file" name="pictures[]" id="pictures[]"/><br>
  14. <input type="file" name="pictures[]" id="pictures[]"/><br>
  15. <input type="file" name="pictures[]" id="pictures[]"/><br>
  16. </td>
  17. </tr>
  18.  
  19. <input type="submit" name="button" id="button" value="Doorsturen" />
  20.  
  21. </form>


verwerk.php
  1. <?php
  2.  
  3. $username = "geheim";
  4. $password = "geheim";
  5. $host="localhost";
  6. $dbnaam="geheim";
  7.  
  8. $files = array();
  9.  
  10. if ($_FILES["pictures"]["error"] == UPLOAD_ERR_OK) {
  11. $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
  12. $name = $_FILES["pictures"]["name"][$key];
  13. move_uploaded_file($tmp_name, "images/$name");
  14. array_push($files, $name);
  15. }
  16. foreach ($_FILES['pictures'] as $picture)
  17. (move_uploaded_file($_FILES['pictures']['tmp_name'], $uploadfile));
  18.  
  19. $db=mysql_connect($host, $username, $password) or die (mysql_error());
  20. mysql_select_db($dbnaam, $db) or die (mysql_error());
  21.  
  22. <style>
  23.  
  24. body {
  25.  
  26. background-color: #FFFFCC;
  27. }
  28.  
  29.  
  30. </style>
  31. <div align=\"center\"><b><font color=\"#CC0000\" face=\"Helvetica, Arial, sans-serif\" size=\"4\">Tours</font></b></div><br><br>
  32. <table width=\"400\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#CC0000\">
  33. <tr>
  34. <td>
  35. <div align=\"center\"><b><font color=\"#CC0000\" face=\"Helvetica, Arial, sans-serif\" size=\"2\">
  36. <br>";
  37.  
  38. #Deze functie gaat na of er een geldig e-mail adres werd opgegeven.
  39.  
  40.  
  41. if(!strlen($_POST['titel'])) {
  42. echo ' Je hebt geen titel ingevuld <br><br>';
  43. echo '<a href="javascript&#058;history.back(-1)">Terug</a><br><br>';
  44.  
  45. echo '
  46. <br>
  47. </font></b></div>
  48. <br>
  49. </td>
  50. </tr>
  51. </table>
  52. <br>
  53. <br>
  54. ';
  55.  
  56. } else
  57. {
  58.  
  59. $file1 = basename($_FILES["pictures"]['name'][0]);
  60. $file2 = basename($_FILES["pictures"]['name'][1]);
  61. $file3 = basename($_FILES["pictures"]['name'][2]);
  62. $file4 = basename($_FILES["pictures"]['name'][3]);
  63. (move_uploaded_file($_FILES['pictures']['tmp_name'], $uploadfile));
  64.  
  65. $query="INSERT INTO tabel (titel, file1, file2, file3, file4) VALUES (\"$titel\", \"$files[0]\", \"$files[1]\", \"$files[2]\", \"$files[3]\");";
  66.  
  67. (move_uploaded_file($_FILES['pictures']['tmp_name'], $uploadfile));
  68. $result = mysql_query($query) or die(mysql_error());
  69.  
  70.  
  71. //var_dump($_FILES);
  72.  
  73.  
  74. ?>
  75.  
  76. <html>
  77. <head>
  78. <title></title>
  79. <style>
  80.  
  81. body {
  82.  
  83. background-color: #FFFFCC;
  84. }
  85.  
  86. .tekstrood {
  87.  
  88. font-family:Verdana, Arial, Helvetica, sans-serif;
  89. font-size: 12px;
  90. font-weight: bold;
  91. color:#CC0000;
  92. }
  93.  
  94. .tekstzwart {
  95.  
  96. font-family:Verdana, Arial, Helvetica, sans-serif;
  97. font-size: 12px;
  98. color:#000000;
  99. }
  100. </style>
  101.  
  102. </head>
  103. <body>
  104.  
  105. <center>
  106. <?php
  107. //<meta http-equiv="REFRESH" content="1;URL=index.htm">
  108.  
  109. "
  110. De tour is succesvol toegevoegd in de lijst</span></p>
  111. <p><span class=\"tekstrood\"> U wordt zometeen verdergestuurd<br>
  112. <a href=\"index.htm\">of klik hier indien dit niet gebeurt</a></span><br><br>
  113.  
  114.  
  115. ";
  116. }
  117. //print_r($_FILES['pictures'])
  118. ?>
  119.  
  120. </center>
  121.  
  122. </body>
  123. </html>


databasegegevens:
titel, file1, file2, file3, file4
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.42s