Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Nadpisywanie istniejącego zdjęcia
Forum PHP.pl > Forum > Przedszkole
jacus24
Witam. Mam kod który dodaje zdjęcia. Chciałbym się dowiedzieć co zrobić aby mogło być dodane tylko 1 zdjęcie przez danego użytkownika a każde kolejne które będzie chciał dodać będzie nadpisywało te wczesniejsze.
  1. <?php
  2. $user_id = $_SESSION['user_logged'];
  3. $image_caption = $_SESSION['user_logged'];
  4. $image_tempname = $_FILES['image_filename']['name'];
  5. $image_date = date("Y-m-d");
  6.  
  7. // umieszczenie obrazu i sprawdzenie jego formatu
  8. $ImageDir ="C:/usr/krasnal/www/fotka/glowna/";
  9. $ImageThumb = $ImageDir . "thumbs/";
  10. $ImageName = $ImageDir . $image_tempname;
  11.  
  12. if (move_uploaded_file($_FILES['image_filename']['tmp_name'],
  13.  $ImageName)) {
  14.  
  15. // pobranie informacji na temat umieszczonego obrazu
  16. list($width , $height , $type , $attr) = getimagesize($ImageName);
  17.  
  18.  
  19.  
  20. if ($type > 3) {
  21. echo "Przykro nam, ale przesłany obraz nie jest w formacie GIF, JPG lub PNG<br>";
  22. } else {
  23.  
  24. //obraz jest w poprawnym formacie można kontunuować
  25.  
  26. // wstawienie informacji do tabeli images
  27.  
  28. $insert = "INSERT INTO images
  29.  (image_caption, user_id, image_date)
  30.  VALUES
  31.  ('$image_caption', '$user_id', '$image_date')";
  32. $insertresults = mysql_query($insert)
  33. or die(mysql_error());
  34.  
  35. $lastpicid = mysql_insert_id();
  36.  
  37. $newfilename = $ImageDir . $lastpicid . ".jpg";
  38.  
  39.  if ($type == 2) {
  40. rename($ImageName , $newfilename);
  41. } else {
  42. if ($type == 1) {
  43. $image_old = imagecreatefromgif($ImageName);
  44. } elseif ($type == 3) {
  45. $image_old = imagecreatefrompng($ImageName);
  46. }
  47.  
  48. $image_jpg = imagecreatetruecolor($width, $height);
  49. imagecopyresampled($image_jpg, $image_old, 0,0,0,0,
  50. $width, $height, $width, $height);
  51. imagejpeg($image_jpg, $newfilename);
  52. imagedestroy($image_old);
  53. imagedestroy($image_jpg);
  54. }
  55. $newthumbname = $ImageThumb . $lastpicid . ".jpg";
  56.  
  57.  
  58. //pobierz wymiary miniaturki
  59. if ($width>$height)
  60. {
  61. $thumb_width = 200;
  62. $thumb_height = 230;
  63. }
  64. else
  65. {
  66. $thumb_width = 200;
  67. $thumb_height = 230;
  68. }
  69.  
  70.  
  71. //utworz miniaturke
  72. $largeimage = imagecreatefromjpeg($newfilename);
  73. $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
  74. imagecopyresampled($thumb, $largeimage, 0,0,0,0,
  75. $thumb_width, $thumb_height, $width, $height);
  76. imagejpeg($thumb , $newthumbname);
  77. imagedestroy($largeimage);
  78. imagedestroy($thumb);
  79.  
  80. $url = "location: showimage.php?id=" . $lastpicid;
  81. header($url);
  82. }
  83. }
  84. ?>
Cysiaczek
Nadaj polu user_id w bazie atrybut UNIQUE i wstawiaj dane poprzez REPLACE INTO, zamiast INSERT INTO. To będzie najszybszy sposób.

Pozdrawiam.
jacus24
Ok dzięki za pomoc

Mam jeszcze jeden problem. Ładując kod na serwer wywala mi taki błąd
Kod
<b>Warning</b>:  move_uploaded_file(fotka.jpg) [<a href="http://strona.pl/function.move-uploaded-file">function.move-uploaded-file</a>]: failed to open stream: Brak dostÄ�pu in <b>/home/baza/domains/foto.pl/public_html/check_image.php</b> on line <b>18</b>
      
      <b>Warning</b>:  move_uploaded_file() [<a href="http://strona.pl/function.move-uploaded-file">function.move-uploaded-file</a>]: Unable to move '/tmp/phpHZaiSl' to 'fotka.jpg' in <b>/home/baza/domains/foto.pl/public_html/check_image.php</b> on line <b>18

Jedyne co mi przychodzi do głowy to że trzeba ustawić chomdy ale, nie wiem co dodać do kodu.
l0ud
Sprawdź kod - przed move_uploaded_file wyrzuć zawartość zmiennej $ImageName i sprawdź czy taki folder, gdzie ona wskazuje w ogóle istnieje.
jacus24
Na serwerze dostęp do katalogów ustawilem na 777 ale, nic to nie dało.
l0ud
  1. <?php
  2. $ImageDir ="C:/usr/krasnal/www/fotka/glowna/";
  3. ?>


Nie zdaje się, żeby ten skrypt był dostosowany do tego serwera. tongue.gif
jacus24
Tzn się na serwer załadowałem z ze zmienionym na $ImageDir ="glowna"; ale nie wiem czy wystarczy podać tylko nazwe katalogu czy coś jeszzcze.
l0ud
Powinno być tak:
  1. <?php
  2. $ImageDir ='./glowna/';
  3. ?>
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.