Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc w formularzu
Forum PHP.pl > Forum > PHP
xxx14
Witam! Mam pewien problem. Po wejściu na stronę mam możliwość dodania produktu. Jest formularz i wszystko się ładnie dodaje do bazy danych.
Mam także taki oto formularz wysyłania zdjęć:

  1. <form action="uploadzdjec.php" method="post" enctype="multipart/form-data">
  2. <p><input type="file" name="upload_image[]" /></p>
  3. <p><input type="file" name="upload_image[]" /></p>
  4. <p><input type="file" name="upload_image[]" /></p>
  5. <p><input type="submit" name="upload_submit" value="Wyślij!" /></p>
  6. </form>
  7.  
  8. <?php
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16. $id = $_POST['$id'];
  17. $config = array();
  18. $config['thumbnail_width'] = 180; // maksymalna szerokość miniatury w pikselach
  19. $config['thumbnail_height'] = 160; // maksymalna wysokość miniatury w pikselach
  20. $config['thumbnail_scale'] = true; // czy przy minimalizowaniu wielkości zachowywać skalę?
  21. $config['path_images'] = 'images/'; // ścieżka do katalogu grafik
  22. $config['path_thumbnails'] = 'thumbnails/'; // ścieżka do katalogu miniatur
  23. $config['max_file_size'] = 1048576; // maksymalna wielkość pliku w bajtach, 1MB
  24. $config['accepted_extensions'] = array('jpg', 'jpeg', 'png', 'gif'); // dozwolone rozszerzenia
  25. $config['accepted_mimes'] = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); // dozwolone typy MIME
  26.  
  27. if ( !file_exists($config['path_images']) || !is_dir($config['path_images']) ) {
  28. if ( !mkdir($config['path_images']) ) { // utworzenie katalogu wraz
  29. exit('Folder obrazków niemożliwy do utworzenia!');
  30. }
  31. chmod($config['path_ images'], 0777); // nadanie praw
  32. }
  33. if ( !file_exists($config['path_thumbnails']) || !is_dir($config['path_thumbnails']) ) {
  34. if ( !mkdir($config['path_thumbnails']) ) { // utworzenie katalogu
  35. exit('Folder miniaturek niemożliwy do utworzenia!');
  36. }
  37. chmod($config['path_thumbnails'], 0777); // nadanie praw
  38. }
  39. if ( !extension_loaded('gd') ) { // sprawdzenie, czy GD jest załadowane
  40. if ( !dl('gd') ) { // próba wymuszenia załadowania
  41. exit('Biblioteka GD nie została załadowana!');
  42. }
  43. }
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50. if ( isset($_FILES['upload_image']) && isset($_POST['upload_submit']) )
  51. {
  52. // pętla analizująca zawartość wszystkich trzech potencjalnie wysyłanych plików
  53. foreach ( $_FILES['upload_image']['error'] as $key => $arr )
  54. {
  55. if ( $_FILES['upload_image']['error'][$key] != UPLOAD_ERR_OK )
  56. {
  57. // błąd wysyłania pliku
  58. continue;
  59. }
  60. if ( $_FILES['upload_image']['size'][$key] > $config['max_file_size'] )
  61. {
  62. // plik jest za duży
  63. continue;
  64. }
  65. if ( file_exists($config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  66. {
  67. // poinformowanie użytkownika o fakcie, że plik o takiej nazwie już istnieje
  68. continue;
  69. }
  70. $extension = explode('.', $_FILES['upload_image']['name'][$key]);
  71. if ( in_array(strtolower($extension[count($extension)-1]), $config['accepted_extensions']) === false || in_array($_FILES['upload_image']['type'][$key], $config['accepted_mimes']) === false )
  72. {
  73. // niepoprawne rozszerzenie pliku
  74. continue;
  75. }
  76. $image = getimagesize($_FILES['upload_image']['tmp_name'][$key]);
  77. if ( !is_array($image) || $image[0] < 1 )
  78. {
  79. // plik graficzny jest spreparowany
  80. continue;
  81. }
  82. if ( !is_uploaded_file($_FILES['upload_image']['tmp_name'][$key]) )
  83. {
  84. // plik nie został wysłany
  85. continue;
  86. }
  87. if ( !move_uploaded_file($_FILES['upload_image']['tmp_name'][$key], $config['path_images'] . $_FILES['upload_image']['name'][$key]) )
  88. {
  89. // wysyłanie nie może zostać zakończone poprawnie
  90. continue;
  91. }
  92. // wysyłanie pliku powiodło się!
  93. // opcjonalnie, jeżeli chcemy tylko z poziomu skrypt mieć dostęp do plików możemy odkomentować poniższa linijkę
  94. // chmod($config['path_images'] . $_FILES['upload_image']['name'][$key], 0600);
  95. print generateThumbnail($_FILES['upload_image']['name'][$key], $extension[count($extension)-1]); // funkcja tworząca miniaturkę
  96. }
  97. }
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106. function generateThumbnail($filename, $extension)
  107. {
  108. global $config;
  109. // sprawdzenie, czy plik o podanej nazwie już nie istnieje
  110. if ( file_exists($config['path_thumbnails'] . $filename) )
  111. {
  112. unlink($config['path_thumbnails'] . $filename); // usunięcie miniatury
  113. }
  114. // stworzenie nowej grafiki wg typu
  115. switch ( $extension )
  116. {
  117. case 'gif':
  118. $ic = imagecreatefromgif($config['path_images'] . $filename);
  119. break;
  120. case 'png':
  121. $ic = imagecreatefrompng($config['path_images'] . $filename);
  122. break;
  123. default:
  124. $ic = imagecreatefromjpeg($config['path_images'] . $filename);
  125. break;
  126. }
  127. if ( $ic === false )
  128. {
  129. return 'Miniaturka nie stworzona!';
  130. }
  131. $is = getimagesize($config['path_images'] . $filename); // [0] - szerokość, [1] - wysokość
  132. switch ( $config['thumbnail_scale'] )
  133. {
  134. case false: // zmniejszanie bezpośrednio do 180x160px
  135. $nts = imagecreatetruecolor($config['thumbnail_width'], $config['thumbnail_height']);
  136. imagecopyresized($nts, $ic, 0, 0, 0, 0, $config['thumbnail_width'], $config['thumbnail_height'], $is[0], $is[1]);
  137. break;
  138. default: // zmniejszanie z zachowaniem skali, aż do osiągnięcia co najmniej 180x160px
  139. $width = $is[0];
  140. $height = $is[1];
  141. $ratio = $is[0] / $config['thumbnail_width'];
  142. if ( $ratio > 1 )
  143. {
  144. $width = $config['thumbnail_width'];
  145. $height = intval($is[1] / $ratio);
  146. }
  147. $ratio = $height / $config['thumbnail_height'];
  148. if ( $ratio > 1 )
  149. {
  150. $width = intval($width / $ratio);
  151. $height = $config['thumbnail_height'];
  152. }
  153. $nts = imagecreatetruecolor($width, $height); // utworzenie obrazka o podanych rozmiarach z czarnym tłem
  154. imagecopyresized($nts, $ic, 0, 0, 0, 0, $width, $height, $is[0], $is[1]); break;
  155. }
  156. switch ( $extension ) // zapis do pliku
  157. {
  158. case 'gif':
  159. imagegif($nts, $config['path_thumbnails'] . $filename);
  160. break;
  161. case 'png':
  162. imagepng($nts, $config['path_thumbnails'] . $filename);
  163. break;
  164. default:
  165. imagejpeg($nts, $config['path_thumbnails'] . $filename);
  166. break;
  167. }
  168. imagedestroy($nts); // zniszczenie obrazka
  169. return $config['path_thumbnails'] . $filename;
  170. }
  171. }
  172.  
  173. ?>

Również wszystko działa. Mam jednak problem, gdyż chcę aby do bazy danych dodawany był link do zdjęcia które zostało wstawione. Gdy sam próbowałem to pojawiała się tylko nazwa folderu.
Robiłem to na 2 różnych stronach. Formularz wysyłal się osobno i zdjęcie osobno. I tu kolejny problem, gdyż zdjęcie dodawało się niestety już do kolejnej rubryki a nie do tej co dane z ostatnio dodanego formularza. Kiedy z kolei wstawiłem formularze razem dodawał się tylko produkt a zdjęcie nie. Czy istnieje możliwość aby formularz dodawania produktu był razem ze wstawianiem zdjęcia? Jeśli nie to nie ma problemu zrobię przekierowanie do innej strony. Ale tutaj pomóżcie żeby formularz dodawał link do bazy danych o id takim samym jaki miał wystawiany przed chwilą produkt.
POMOCY!!! biggrin.gif
CuteOne
oznacz tekst BBCODE bo czytać się tego nie da..
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.