Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapis plikow z tablicy array do bazy [MySQL][PHP]
Forum PHP.pl > Forum > Przedszkole
sharp156
Witam. Jak dodać kilka plików do bazy mysql. Przejmuje tablice ze wszystkimi zmiennymi ale problem leży w tym, że po zapisie jest tylko jeden plik w polu...
czy do każdej wartości trzeba utworzyć osobne pole czy można wepchnąć te trzy pliki w jedno ple....
  1. <tr><td><h2> przykładowo : Dodaj przynajmniej 1 swoje zdjęcie.</h2> /// jedno albo dwa albo 3 stąd konieczność tablicy
  2. <?php
  3. <input type="file" name="upload_image[]" />
  4. <br><br>
  5. <input type="file" name="upload_image[]" />
  6. <br><br>
  7. <input type="file" name="upload_image[]" />
  8. <br><br><br>
  9. </td>
  10. </tr>
  11. ?>


  1.  
  2. <?php
  3.  
  4. $config = array();
  5. $config['max_file_size'] = 1048576; // maksymalna wielkość pliku w bajtach, 1MB
  6. $config['accepted_extensions'] = array('jpg', 'jpeg', 'png', 'gif'); // dozwolone rozszerzenia
  7. $config['accepted_mimes'] = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); // dozwolone typy MIME
  8.  
  9.  
  10. if ( isset($_FILES['upload_image']) && isset($_POST['upload_submit']) )
  11. {
  12. // pętla analizująca zawartość wszystkich trzech potencjalnie wysyłanych plików
  13. foreach ( $_FILES['upload_image']['error'] as $key => $arr )
  14. {
  15. if ( $_FILES['upload_image']['error'][$key] != UPLOAD_ERR_OK )
  16. {
  17. // błąd wysyłania pliku
  18. continue;
  19. }
  20. if ( $_FILES['upload_image']['size'][$key] > $config['max_file_size'] )
  21. {
  22. // plik jest za duży
  23. continue;
  24. }
  25. if ( file_exists($config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  26. {
  27. // poinformowanie użytkownika o fakcie, że plik o takiej nazwie już istnieje
  28. continue;
  29. }
  30. $extension = explode('.', $_FILES['upload_image']['name'][$key]);
  31. if ( in_array(strtolower($extension[count($extension)-1]), $config['accepted_extensions']) === false || in_array($_FILES['upload_image']['type'][$key], $config['accepted_mimes']) === false )
  32. {
  33. // niepoprawne rozszerzenie pliku
  34. continue;
  35. }
  36. $image = getimagesize($_FILES['upload_image']['tmp_name'][$key]);
  37. if ( !is_array($image) || $image[0] < 1 )
  38. {
  39. // plik graficzny jest spreparowany
  40. continue;
  41. }
  42. if ( !is_uploaded_file($_FILES['upload_image']['tmp_name'][$key]) )
  43. {
  44. // plik nie został wysłany
  45. continue;
  46. }
  47. }
  48. }
  49.  
  50. $fileName = $_FILES['upload_image']['name'][$key];
  51. $tmpName = $_FILES['upload_image']['tmp_name'][$key];
  52. $fileSize = $_FILES['upload_image']['size'][$key];
  53. $fileType = $_FILES['upload_image']['type'][$key];
  54.  
  55. $fp = fopen($tmpName, 'r');
  56. $content = fread($fp, filesize($tmpName));
  57. $content = addslashes($content);
  58. fclose($fp);
  59.  
  60. {
  61. $fileName = addslashes($fileName);
  62. }
  63.  
  64. $db_user='użytkownik';
  65. $db_password='hasło';
  66. $database='nazwa bazy';
  67. mysql_connect('localhost', 'uzytkownik', 'haslo');
  68.  
  69. mysql_select_db(nazwa bazy) or die ("Nie udalo sie wybrac bazy danych");
  70.  
  71.  
  72. $query = "INSERT INTO upload (name, size, type, content ) ".
  73. "VALUES ('$fileName', '$fileSize ', '$fileType ', '$content ')";
  74.  
  75. mysql_query($query) or die('Error, query failed');
  76.  
  77.  
  78.  
  79.  
  80. echo "<br><center><h2>... zapisany do bazy.</h2></center><br>";
  81.  
  82. print_r($_FILES);
  83.  
  84.  
  85. ?>

a to print końcowy który mówi, że jest oki z przesłanymi wartościami.... jak by ktoś miał spytać
  1.  
  2. ... zapisany do bazy.
  3.  
  4.  
  5. Array ( [upload_image] => Array ( [name] => Array ( [0] => tlo3.jpg [1] => marijuana_leaf2.gif [2] => madziaa.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/gif [2] => image/jpeg ) [tmp_name] => Array ( [0] => /tmp/php7f2kd7 [1] => /tmp/phpB1ijGJ [2] => /tmp/phpzElJKp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 82080 [1] => 46743 [2] => 8232 ) ) )


ps... Pomińmy rozważania odnośnie składowania plików w mysql..... tongue.gif
nospor
Zapytanie wkładające plik dałeś poza pętlą, która obrabiała pliki. Nic więc dziwnego, że dodaje ci się tylko jeden plik, a konkretnie ostatnie.
sharp156
Cytat(nospor @ 24.06.2011, 08:13:39 ) *
Zapytanie wkładające plik dałeś poza pętlą, która obrabiała pliki. Nic więc dziwnego, że dodaje ci się tylko jeden plik, a konkretnie ostatnie.

hmm zgadza się. Dodaje zawsze ostatni plik. Byłbyś tak uczynny i rozpisał to na tym przykładzie? nie bardzo wiem jak i w którym miejscu ją zamknąć....?

zamknąłem pętle po zapisie w bazie jeżeli o to chodziło ale nadal nic... jak użyć funkcji serialize bo chodzi też o to, żeby później odczytać zawartość wraz z wartościami np unserialize i odczyt. Niestety nie bardzo się orientuje jak to zastosować i czy można użyć w przypadku danych binarnych do zapisu przykładowo pola mediumblob . Pomocy:P temat myślę ciekawy z powodu zastosowania tylko nigdzie nie ma nic konkretnego... Może to jest tak proste, że nikt o to nie pyta a ja się z tym tylko tak pier.... :/
Czy brnę w nie tą stronę co trzeba?questionmark.gifquestionmark.gif

Nasunęło mi się jeszcze pytanie czy funkcja ta jest dobrze rozpisana jeżeli chodzi o tablice...:/ moze tu tkwi błąd?
  1. $fp = fopen($tmpName, 'r');
  2. $content = fread($fp, filesize($tmpName));
  3. $content = addslashes($content);
  4. fclose($fp);
  5.  
  6. {
  7. $fileName = addslashes($fileName);
  8. }


no niema chętnych do pomocy widze:/ problem chyba nie leży w samym zamknięciu pętli po zapisie... moze to nienajlepszy pomysł, żeby pchać 3 pliki do jednej komórki i lepiej by było już po walidacji rozbić explodem zawartość array i zapisać do trzech osobnych komórek po jednej na plik... To tylko moja teoria ale w praktyce jako, ze chacze o przedszkole; niejestem najlepszy czy ktoś mi w tym pomoże ......questionmark.gifquestionmark.gifquestionmark.gif ps tam utknęła w kodzie linijka z wcześniejszej wersji gdy założenie było upload do pliku oczywiście jej już niema jak by ktoś ja wypatrzył i miał spytać o jej sęs . ostateczna wersja to zapis do mysql... nadal nie poradziłem :/ a i niewiem jak zedytować ten kod bo zniknęła opcja edycji.... chodzi o linie 25 gdzie sprawdza istnienie juz pliku uplodowanego w bazie w folderze na serwerze

nadal walcze i brak chętnych do pomocy.... puki co utknołem na takiej wersji..... ktoś rzuci okiem i wysunie jakieś wnioski?

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.  
  3. <html>
  4.  
  5. <head>
  6.  
  7. <title>Formularz </title>
  8.  
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  10.  
  11. <meta http-equiv="Reply-To" content="mój@meil.pl">
  12.  
  13. </head>
  14.  
  15. <body>
  16.  
  17. <?php
  18.  
  19. $config = array();
  20. $config['max_file_size'] = 1048576; // maksymalna wielkość pliku w bajtach, 1MB
  21. $config['accepted_extensions'] = array('jpg', 'jpeg', 'png', 'gif'); // dozwolone rozszerzenia
  22. $config['accepted_mimes'] = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); // dozwolone typy MIME
  23.  
  24.  
  25. if ( isset($_FILES['upload_image']) && isset($_POST['upload_submit']) )
  26. {
  27. // pętla analizująca zawartość wszystkich trzech potencjalnie wysyłanych plików
  28. foreach ( $_FILES['upload_image']['error'] as $key => $arr )
  29. {
  30. if ( $_FILES['upload_image']['error'][$key] != UPLOAD_ERR_OK )
  31. {
  32. // błąd wysyłania pliku
  33. continue;
  34. }
  35. if ( $_FILES['upload_image']['size'][$key] > $config['max_file_size'] )
  36. {
  37. // plik jest za duży
  38. continue;
  39. }
  40.  
  41. $extension = explode('.', $_FILES['upload_image']['name'][$key]);
  42. if ( in_array(strtolower($extension[count($extension)-1]), $config['accepted_extensions']) === false || in_array($_FILES['upload_image']['type'][$key], $config['accepted_mimes']) === false )
  43. {
  44. // niepoprawne rozszerzenie pliku
  45. continue;
  46. }
  47. $image = getimagesize($_FILES['upload_image']['tmp_name'][$key]);
  48. if ( !is_array($image) || $image[0] < 1 )
  49. {
  50. // plik graficzny jest spreparowany
  51. continue;
  52. }
  53. }
  54. }
  55.  
  56.  
  57. array($fileName = serialize($fileName));
  58. array($tmpName = serialize($tmpName));
  59. array($fileSize = serialize($fileSize));
  60. array($fileType = serialize($fileType));
  61.  
  62.  
  63. array($content = serialize($content));
  64. $content = addslashes($content);
  65.  
  66.  
  67.  
  68.  
  69.  
  70. $fileName = addslashes($fileName);
  71. $tmpName = addslashes($tmpName);
  72. $fileSize = addslashes($fileSize);
  73. $fileType = addslashes($fileType);
  74.  
  75.  
  76. $db_user='uzytkownik';
  77. $db_password='haslo';
  78. $database='databasename';
  79. mysql_connect('localhost', 'uzytkownik', 'haslo');
  80.  
  81. mysql_select_db(databasename) or die ("Nie udalo sie wybrac bazy danych");
  82.  
  83.  
  84. $query = "INSERT INTO upload (name, size, type, content ) ".
  85. "VALUES ('$fileName ', '$fileSize ', '$fileType ', '$content ')";
  86.  
  87. mysql_query($query) or die('Error, query failed');
  88.  
  89.  
  90.  
  91.  
  92. echo "<br><center><h2>formularz urzytkownika $imie $nazwisko zapisany do bazy.</h2></center><br>";
  93.  
  94. print_r($_FILES);
  95.  
  96.  
  97. ?>
  98. </body>
  99.  
  100. </html>
  101.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.