Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] 2 wywołania funkcji, działa tylko 1
Forum PHP.pl > Forum > Przedszkole
mati85
Witam.

Próbuje napisać skrypt dodający zdjęcia do galerii. Uploadowane zdjęcie ma trafiać do 2 miejsc (do 1 w postaci powiedzmy normalnej fotki, w drugie w postaci miniaturki). Napisałem następujący skrypt, ale przy wywoływaniu funkcji pojawia się problem. Pierwsze wywołanie się wykonuje, ale drugie które różni się tylko parametrami obrazu i ścieżką dostępu już nie działa. Skrypt przy testach w przeglądarce nie pokazuje błędów.

Proszę o pomoc.

Kod
       <div>
<form enctype="multipart/form-data" action="dodaj.php" method="POST">
<input name="plik" type="file" />

<input type="submit" value="Dodaj" />

</form>
</div>

<?php

$plik_tmp = $_FILES['plik']['tmp_name'];
$plik_nazwa = $_FILES['plik']['name'];
$plik_rozmiar = $_FILES['plik']['size'];

function zmrozdz ($plik_tmp, $szer, $wys)
{
     if(is_uploaded_file($plik_tmp))
     {
         list($width, $height) = getimagesize($plik_tmp);
         $proporcja = $width / $height;
                
         if ($width > $height)
             {
             $new_width = $szer;
             $new_height = $szer / $proporcja;
             }
         else
             {
             $new_height = $wys;
             $new_width = $wys / $proporcja;
             }
         $obraz_nowy = imagecreatetruecolor($new_width, $new_height);
         $temp = imagecreatefromjpeg($plik_tmp);
         imagecopyresampled($obraz_nowy, $temp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    
         imagejpeg($obraz_nowy, $plik_tmp, 100);
         imagedestroy($temp);
        
         print "<font face='Verdana' color='white'>Zdjęcie zostało dodane</font>
";
     }
     return $plik_tmp;
}    
move_uploaded_file(zmrozdz($plik_tmp, 300, 300), "zdjecia/$plik_nazwa");
move_uploaded_file(zmrozdz($plik_tmp, 1024, 1024), "zdjecia/duze/$plik_nazwa");


print "<font face='Verdana' color='white'><a href='index.php'>Powrót do galerii</a></font>";
?>
nospor
move_uploaded_file() ma to do siebie, ze przenosi plik z jednego miejsca na drugie.
Rozumiesz na czym polega przeniesc cos? Bierzesz wazon z okna i przenosisz na stol. Wazon juz na oknie nie stoi, wiec nie mozesz go poraz drugi przeniesc z okna na inny stol winksmiley.jpg
mati85
Ok, kumam.
Dzięki za zauważenie błędu.

A czy lepiej to rozwiązać, że zrobić kopie tego pliku i 2 razy przenieść, czy raz przenieść i później zrobić kopie w inne miejsce ze zmianą rozdzielczości, bo nie doszukałem się funkcji w style "copy_uploaded_file"
nospor
masz kilka opcji to wyboru.

Pozatym popelniasz jeszcze jeden powazny blad, a mianowicie: zmieniasz rozmiar obrazka a nowy obrazek zapisujesz w miejsce starego. Potem znowu zmieniasz rozmiar obrazka, ale operujesz juz na zmienionym wczesniej i znowu zapisujesz w ten sam obrazek.

Obrazki o zmienionych rozmiarach musisz zapisywac pod inną nazwą, a najlepiej zapisuj tam, gdzie docelowo mają sie znaleźć. Nie bedziesz musial juz tego potem dodatkowo przenosic

ps: oprócz tych zmienionych obrazkow, warto też jest przechowywać oryginał
ps2: http://pl.php.net/manual/en/function.copy.php
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.