Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nie tworzy miniaturki
Forum PHP.pl > Forum > Przedszkole
Turson
Wystukałem kod na upload zdjęcia. Po walidacji formatu, wagi itd sprawdza wysokość: te której mają wysokość>=600 zmniejsza, inne przesyła.
Potem ma tworzyć miniaturkę. I tu problem, bo miniaturkę tworzy tylko w wypadku zmiejszenia. Tych, których nie zmniejszał, nie tworzy miniaturki.

Kod jest długi, ale tylko tak można zobaczyć gdzie jest problem

  1. <?PHP
  2. $upload = false;
  3. $i1 = rand(1,9);$i2 = rand(0,9);$i3 = rand(0,9);$i4 = rand(0,9);$i5 = rand(0,9);
  4. $id = $i1.$i2.$i3.$i4.$i5;
  5. function form2()
  6. {
  7. echo '<form action="index.php?page=dodaj2" method="post" enctype="multipart/form-data">';
  8. echo '<div class="konto_box"><div class="konto_box_text"><img src="images/photos.png"/> Zdjęcia</div></div>';
  9. echo '<div class="konto_box_link">';
  10. echo '<input type="file" name="plik[]" multiple="multiple"/><br><br>
  11. <font size=2>Aby wybrać kilka plików przytrzymaj CTRL i zaznacz zdjęcia.<br>Maksymalnie 5 plików po 1MB każdy.</font>';
  12. echo '</div>';
  13. echo '<div style="margin-top:20px"></div>';
  14. echo '<div class="konto_box"><div class="konto_box_text"><img src="images/contact.png"/> Kontakt</div></div>';
  15. echo '<div class="konto_box_link">';
  16. echo 'Telefon <input type="text" name="telefon" class="ustawienia_form" maxlength=15><br>';
  17. echo 'E-mail <input type="text" name="mail" class="ustawienia_form" maxlength=30>';
  18. echo '</div>';
  19. echo '<br><br><input type="submit" name="wyslano2" value="Kontynuuj" class="dodaj_submit"></form>';
  20. }
  21. if($_SESSION["ok"]==true)
  22. {
  23. if (@$_SERVER['HTTP_REFERER'] == 'http://127.0.0.1/ogl/index.php?page=dodaj' OR 'http://127.0.0.1/ogl/index.php?page=dodaj2')
  24. {
  25. if(isset($_POST["wyslano2"]))
  26. {
  27. $telefon = $_POST["telefon"];
  28. $mail = $_POST["mail"];
  29. if(preg_match("/^[0-9\-\(\)]+$/", $telefon) == 1)
  30. {
  31. if(preg_match('/^[a-zA-Z0-9\.\-_]+\@[a-zA-Z0-9\.\-_]+\.[a-z]{2,4}$/D', $mail))
  32. {
  33. if(array_sum($_FILES['plik']['error'])==0)
  34. {
  35. $l = count($_FILES['plik']['tmp_name']);
  36. if($l>0 && $l<=5)
  37. {
  38. for($i=0; $i <= 5; $i++)
  39. {
  40. if(@is_uploaded_file($_FILES['plik']['tmp_name'][$i]))
  41. {
  42. list($oldWidth, $oldHeight) = getimagesize($_FILES['plik']['tmp_name'][$i]);
  43. $l1 = rand(1,9);$l2 = rand(1,9);$l3 = rand(1,9);$l4 = rand(1,9);$l5 = rand(1,9);
  44. $l6 = rand(1,9);$l7 = rand(1,9);$l8 = rand(1,9);$l9 = rand(1,9);$l10 = rand(1,9);
  45. $l11 = rand(1,9);$l12 = rand(1,9);$l13 = rand(1,9);$l14 = rand(1,9);$l15 = rand(1,9);
  46. $nazwa = $l1.$l2.$l3.$l4.$l5.$l6.$l7.$l8.$l9.$l10.$l11.$l12.$l13.$l14.$l15;
  47. if($_FILES['plik']['size'][$i]<='1048576')
  48. {
  49. $allowed = array('image/pjpeg', 'image/jpeg', 'image/JPG', 'image/X-PNG', 'image/PNG', 'image/png', 'image/x-png');
  50. if(in_array($_FILES['plik']['type'][$i], $allowed))
  51. {
  52. $upload = true;
  53. if($oldHeight<='600')
  54. {
  55. move_uploaded_file($_FILES['plik']['tmp_name'][$i], 'img/'.$id.'_'.$nazwa.'.jpg');
  56. mysql_query("INSERT INTO images VALUES($id, $nazwa)");
  57. }
  58. else
  59. {
  60. $skala = 600/$oldHeight;
  61. $newWidth = round($oldWidth*$skala);
  62. $maly = ImageCreateTrueColor($newWidth, 600);
  63. $duzy = ImageCreateFromJPEG($_FILES['plik']['tmp_name'][$i]);
  64. ImageCopyResampled($maly,$duzy,0,0,0,0,$newWidth,600,$oldWidth,$oldHeight);
  65. ImageJPEG($maly, 'img/'.$id.'_'.$nazwa.'.jpg', 100);
  66. mysql_query("INSERT INTO images VALUES($id, $nazwa)");
  67.  
  68. }
  69. }
  70. else
  71. {
  72. echo 'Plik "'.$_FILES['plik']['name'][$i].'" ma niewłaściwy format.<br>';
  73. }
  74. }
  75. else
  76. {
  77. echo 'Plik "'.$_FILES['plik']['name'][$i].'" waży za dużo.<br>';
  78. }
  79. }
  80. }
  81. }
  82. else
  83. {
  84. echo '<font style="color:red;font-weight:bold">Maksymalnie możesz dodać 5 zdjęć.</font><br><br>';
  85. form2();
  86. }
  87. }
  88. else
  89. {
  90. echo '<font style="color:red;font-weight:bold">Musisz dodać przynajmniej 1 zdjęcie.</font><br><br>';
  91. form2();
  92. }
  93. }
  94. else
  95. {
  96. echo '<font style="color:red;font-weight:bold">Podany adres e-mail jest niewłaściwego formatu.</font><br><br>';
  97. form2();
  98. }
  99. }
  100. else
  101. {
  102. echo '<font style="color:red;font-weight:bold">Podany nr telefonu zawiera niedozwolone znaki.
  103. <br>Dopuszczalne znaki to: liczby z zakresu 0-9, myślnik oraz nawias.</font><br><br>';
  104. form2();
  105. }
  106. }
  107. else
  108. {
  109. form2();
  110. }
  111. }
  112. else
  113. {
  114. header("Location: index.php");
  115. }
  116. }
  117. else
  118. {
  119. header("Location: index.php");
  120. }
  121.  
  122. if($upload==true)
  123. {
  124. global $id; global $telefon; global $mail;
  125. $a = $_SESSION["typ_nieruchomosci"]; $b = strtolower($_SESSION["typ_oferty"]); $p = " na ";
  126. $tytul = $a.$p.$b;
  127. $dzien = date('d');$miesiac = date('n');
  128. $miesiac_pl = array(1 => 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia');
  129. $data = $dzien." ".$miesiac_pl[$miesiac];
  130. $opis = $_SESSION["opis"];
  131. function protect($opis) //ochrona danych do bazy ddanych
  132. {
  133. {
  134. $_SESSION["opis"] = stripslashes($_SESSION["opis"]);
  135. }
  136. $_SESSION["opis"] = strip_tags($_SESSION["opis"]);
  137. $_SESSION["opis"] = htmlspecialchars($_SESSION["opis"]);
  138. return mysql_real_escape_string($_SESSION["opis"]);
  139. }
  140. $opis2 = protect($opis);
  141. $oferta = strtolower($_SESSION["typ_oferty"]);
  142. mysql_query("INSERT INTO ogloszenia VALUES ($id, $_SESSION[user_id], '$tytul', '$_SESSION[miasto]', '$oferta', '$_SESSION[rynek]', '$_SESSION[typ_nieruchomosci]', '$_SESSION[rodzaj_ogloszenia]', $_SESSION[cena], '$_SESSION[metraz]', '$opis2', '$telefon', '$mail', '$data', 0)") or die(mysql_error());
  143.  
  144. global $oldHeight; global $oldWidth; global $zdjecie;
  145.  
  146. for($i=0; $i <= 5; $i++)
  147. {
  148. if(@is_uploaded_file($_FILES['plik']['tmp_name'][$i]))
  149. {
  150. $zdjecie = $_FILES['plik']['tmp_name'][0];
  151. $skala2 = 150/$oldWidth;
  152. $newHeight = round($oldHeight*$skala2);
  153. $maly2 = ImageCreateTrueColor(150, $newHeight);
  154. $duzy2 = ImageCreateFromJPEG($zdjecie);
  155. ImageCopyResampled($maly2,$duzy2,0,0,0,0,150,$newHeight,$oldWidth,$oldHeight);
  156. ImageJPEG($maly2, 'miniaturki/'.$id.'.jpg', 100);
  157. }
  158. }
  159. echo '<a href="index.php?page=pokaz&id='.$id.'">Ogłoszenie zostało dodane</a>';
  160. $_SESSION["ok"] = false;
  161. }
  162. ?>
nospor
Cytat
Potem ma tworzyć miniaturkę. I tu problem, bo miniaturkę tworzy tylko w wypadku zmiejszenia. Tych, których nie zmniejszał, nie tworzy miniaturki.
Bo te ktorych nie zmniejszal to przenosil z lokalizacji uplladu, o tu:
move_uploaded_file($_FILES['plik']['tmp_name'][$i], 'img/'.$id.'_'.$nazwa.'.jpg');

A ty do robienia miniaturki szukasz ich wlasnie tam, gdzie ich juz nie ma...
Turson
Czyli
  1. $_FILES['plik']['tmp_name'][$i]

staje się puste?

Jak to rozwiązać?
nospor
Pomysl przez chwilke, to naprawde nie jest trudne, szczegolnie ze wszystko dostales juz na tacy.
Turson
Pomyślałem, pogłówkowałem i wymyśliłem coś takiego:

  1. $allowed = array('image/pjpeg', 'image/jpeg', 'image/JPG', 'image/X-PNG', 'image/PNG', 'image/png', 'image/x-png');
  2. if(in_array($_FILES['plik']['type'][$i], $allowed))
  3. {
  4. $upload = true;
  5. $foto[$i] = $_FILES['plik']['tmp_name'][$i];
  6. if($oldHeight<='600')
  7. {
  8. move_uploaded_file($_FILES['plik']['tmp_name'][$i], 'img/'.$id.'_'.$nazwa.'.jpg');
  9. mysql_query("INSERT INTO images VALUES($id, $nazwa)");
  10. }
  11. else
  12. {
  13. $skala = 600/$oldHeight;
  14. $newWidth = round($oldWidth*$skala);
  15. $maly = ImageCreateTrueColor($newWidth, 600);
  16. $duzy = ImageCreateFromJPEG($_FILES['plik']['tmp_name'][$i]);
  17. ImageCopyResampled($maly,$duzy,0,0,0,0,$newWidth,600,$oldWidth,$oldHeight);
  18. ImageJPEG($maly, 'img/'.$id.'_'.$nazwa.'.jpg', 100);
  19. mysql_query("INSERT INTO images VALUES($id, $nazwa)");
  20.  
  21. }
  22. }


Czyli nowa zmienna $foto i potem

  1. if(isset($foto[$i]))
  2. {
  3. $zdjecie = $foto[0];
  4. $skala2 = 150/$oldWidth;
  5. $newHeight = round($oldHeight*$skala2);
  6. $maly2 = ImageCreateTrueColor(150, $newHeight);
  7. $duzy2 = ImageCreateFromJPEG($zdjecie);
  8. ImageCopyResampled($maly2,$duzy2,0,0,0,0,150,$newHeight,$oldWidth,$oldHeight);
  9. ImageJPEG($maly2, 'miniaturki/'.$id.'.jpg', 100);
  10. }


questionmark.gif
nospor
facepalmxd.gif

Skoro ci wyraźnie napisalem, ze plik przeniosles z jednej lokalizacji do drugiej, to ty teraz pliku masz szukac w tej nowej lokalizacji a nie ciagle w starej :/
Turson
questionmark.gif

  1. global $nazwa; global $id;
  2. for($i=0; $i <= 5; $i++)
  3. {
  4. if(@is_uploaded_file($_FILES['plik']['tmp_name'][$i]))
  5. {
  6. $zdjecie = 'img/'.$id.'_'.$nazwa.'.jpg';
  7. $skala2 = 150/$oldWidth;
  8. $newHeight = round($oldHeight*$skala2);
  9. $maly2 = ImageCreateTrueColor(150, $newHeight);
  10. $duzy2 = ImageCreateFromJPEG($zdjecie);
  11. ImageCopyResampled($maly2,$duzy2,0,0,0,0,150,$newHeight,$oldWidth,$oldHeight);
  12. ImageJPEG($maly2, 'miniaturki/'.$id.'.jpg', 100);
  13. }
  14. }
  15. echo '<a href="index.php?page=pokaz&id='.$id.'">Ogłoszenie zostało dodane</a>';
nospor
zrozum, ze tutaj $_FILES['plik']['tmp_name'][$i] nie ma juz pliku wiec
is_uploaded_file($_FILES['plik']['tmp_name'][$i])
zawsze zwroci ci FALSE....
Turson
Więc może po prostu pominąć is_uploaded_file?

Odświeżam
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.