Mam także taki oto formularz wysyłania zdjęć:
<form action="uploadzdjec.php" method="post" enctype="multipart/form-data"> <p><input type="file" name="upload_image[]" /></p> <p><input type="file" name="upload_image[]" /></p> <p><input type="file" name="upload_image[]" /></p> <p><input type="submit" name="upload_submit" value="Wyślij!" /></p> </form> <?php $id = $_POST['$id']; $config['thumbnail_width'] = 180; // maksymalna szerokość miniatury w pikselach $config['thumbnail_height'] = 160; // maksymalna wysokość miniatury w pikselach $config['thumbnail_scale'] = true; // czy przy minimalizowaniu wielkości zachowywać skalę? $config['path_images'] = 'images/'; // ścieżka do katalogu grafik $config['path_thumbnails'] = 'thumbnails/'; // ścieżka do katalogu miniatur $config['max_file_size'] = 1048576; // maksymalna wielkość pliku w bajtach, 1MB $config['accepted_mimes'] = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); // dozwolone typy MIME } chmod($config['path_ images'], 0777); // nadanie praw } } chmod($config['path_thumbnails'], 0777); // nadanie praw } } } { // pętla analizująca zawartość wszystkich trzech potencjalnie wysyłanych plików foreach ( $_FILES['upload_image']['error'] as $key => $arr ) { if ( $_FILES['upload_image']['error'][$key] != UPLOAD_ERR_OK ) { // błąd wysyłania pliku continue; } if ( $_FILES['upload_image']['size'][$key] > $config['max_file_size'] ) { // plik jest za duży continue; } { // poinformowanie użytkownika o fakcie, że plik o takiej nazwie już istnieje continue; } if ( in_array(strtolower($extension[count($extension)-1]), $config['accepted_extensions']) === false || in_array($_FILES['upload_image']['type'][$key], $config['accepted_mimes']) === false ) { // niepoprawne rozszerzenie pliku continue; } { // plik graficzny jest spreparowany continue; } { // plik nie został wysłany continue; } if ( !move_uploaded_file($_FILES['upload_image']['tmp_name'][$key], $config['path_images'] . $_FILES['upload_image']['name'][$key]) ) { // wysyłanie nie może zostać zakończone poprawnie continue; } // wysyłanie pliku powiodło się! // opcjonalnie, jeżeli chcemy tylko z poziomu skrypt mieć dostęp do plików możemy odkomentować poniższa linijkę // chmod($config['path_images'] . $_FILES['upload_image']['name'][$key], 0600); } } function generateThumbnail($filename, $extension) { // sprawdzenie, czy plik o podanej nazwie już nie istnieje { } // stworzenie nowej grafiki wg typu switch ( $extension ) { case 'gif': $ic = imagecreatefromgif($config['path_images'] . $filename); break; case 'png': $ic = imagecreatefrompng($config['path_images'] . $filename); break; default: $ic = imagecreatefromjpeg($config['path_images'] . $filename); break; } if ( $ic === false ) { return 'Miniaturka nie stworzona!'; } switch ( $config['thumbnail_scale'] ) { case false: // zmniejszanie bezpośrednio do 180x160px $nts = imagecreatetruecolor($config['thumbnail_width'], $config['thumbnail_height']); imagecopyresized($nts, $ic, 0, 0, 0, 0, $config['thumbnail_width'], $config['thumbnail_height'], $is[0], $is[1]); break; default: // zmniejszanie z zachowaniem skali, aż do osiągnięcia co najmniej 180x160px $width = $is[0]; $height = $is[1]; $ratio = $is[0] / $config['thumbnail_width']; if ( $ratio > 1 ) { $width = $config['thumbnail_width']; } $ratio = $height / $config['thumbnail_height']; if ( $ratio > 1 ) { $height = $config['thumbnail_height']; } $nts = imagecreatetruecolor($width, $height); // utworzenie obrazka o podanych rozmiarach z czarnym tłem imagecopyresized($nts, $ic, 0, 0, 0, 0, $width, $height, $is[0], $is[1]); break; } switch ( $extension ) // zapis do pliku { case 'gif': imagegif($nts, $config['path_thumbnails'] . $filename); break; case 'png': imagepng($nts, $config['path_thumbnails'] . $filename); break; default: imagejpeg($nts, $config['path_thumbnails'] . $filename); break; } imagedestroy($nts); // zniszczenie obrazka return $config['path_thumbnails'] . $filename; } } ?>
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!!!
