Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tworzenie miniatur i zapis do bazy
Forum PHP.pl > Forum > PHP
mb83
witam,

mam skrypt który wykonuje upload zdjęć na serwer + zapisuje dane do mysql (ścieżka pliku, i dane z formularz).

  1. <?php
  2. $p_pojemnosc=$_FILES['plik']['size'];//pojemnosc pliku
  3. $p_typ=$_FILES['plik']['type']; // typ pliku
  4. $p_nazwa=$_FILES['plik']['name']; // nazwa pliku
  5. $p_smiec=$_FILES['plik']['tmp_name']; // chwilowa nazwa pliku
  6. $data = $_POST['data'];
  7. $autor = $_POST['autor'];
  8. $tresc = $_POST['tresc'];
  9. $kontakt = $_POST['kontakt'];
  10. $kat = $_POST['kat'];
  11. $nazwa = $_POST['nazwa'];
  12.  
  13.  
  14. //wycinamy rozszerzenie z pobieranego pliku
  15. $p_roz= array_pop(explode(".", $p_nazwa));
  16.  
  17. /* odbieramy dane z pola ukrytego i zaokrąglamy je do 3 miejsca
  18.   po przecinku/dzielimy przez 1204*1024 by było w MB*/
  19. $max_size=round(($_POST['max_file_size']/1048576),3)."MB";
  20.  
  21.  
  22. //zaokrąglamy "round" do 2 miejsc po przecinku i przeliczamy rozmiar pliku na MB
  23. $poj_MB=round(($p_pojemnosc/1048576),2).'MB';
  24.  
  25. //kodujemy nasz plik metodą MD5 i dodajemy date i godzinę oraz rozszerzenie pliku
  26. $p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
  27. $folder="galeria/ogloszenia/";
  28.  
  29. //---Kolorki HTML---
  30. $k_cze="<font color=#ff0000>";
  31. $f_koniec="</font>";
  32. $k_nieb="<font color=#0000ff>";
  33. if ($p_pojemnosc <= 0)
  34. {
  35. echo ("");
  36. echo "";
  37. }
  38.  
  39. if ($poj_MB > $max_size)
  40. {
  41. echo("Plik jest za duży maksymalnie można wysłać <b>".$k_cze.$max_size.$f_koniec."</b>"." .Plik wysyłany ma rozmiar <b><i>".$k_nieb.$poj_MB.$f_koniec."</b></i><br />");
  42. echo "<a href=dodaj.php>Wracaj ...";
  43. }
  44.  
  45. if (file_exists($folder.$p_nazwa_zm))
  46. {
  47. echo ("Plik o takiej nazwie jest już na serwerze <b><i>".$p_nazwa_zm."</b></i><br />");
  48. echo "<a href=dodaj.php>Wracaj ...";
  49. }
  50. else {
  51. if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
  52. exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');
  53.  
  54. echo "<div class='brown'><center>Przeslanie udało się - <b>".$k_nieb.$p_nazwa."</b>"." ".$poj_MB."<br />";
  55. echo "<img src='$folder$p_nazwa_zm' style='max-width:600px;'><br />";
  56. echo "<a href='ogloszenia.php' class='a1 bold'>Powrót</a></center></div>";
  57. $path_file=$folder.$p_nazwa_zm;
  58. $conn = mysql_connect($host,$user,$pass) or die('Error connecting to mysql');
  59. mysql_query("SET NAMES 'latin2'");
  60. $zapytanie=mysql_query("insert into ogloszenia values(NULL,now(),'$autor','$tresc','$kontakt','$typ','$kat','$nazwa','$path_file')");
  61. echo "dodano wpis do bazy danych";
  62. }
  63. ?>

tylko nie wiem jak przerobić ten skrypt aby w trakcie uploadu wykonywał miniaturkę zdjęcia?
jest dużo przykładów na internecie ale nie potrafię żadnego z nich dostosować do mojego skryptu.
proszę o pomoc w rozwiązaniu problemu, dzięki.
nospor
Skoro masz przyłady to jaki masz problem? Miniature robi się ze zdjęcia. zdjęcie masz, przykład masz, nie rozumiem jaki wiec masz problem.
Może pokaż jak próbowałes to podpiąc a my ci powiemy gdzie masz błąd. Bo na chwilę obecną nigdzie błędu nie widac
mb83
przerobiłem to w ten sposób:
  1. <?php
  2. include("mod/connect.inc");
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  8. <meta http-equiv="refresh" content="2;url=http://zywieconline.pl/ogloszenia.php">
  9. <title>Przesyłanie plików na serwer - Administrator</title>
  10. <link rel="stylesheet" type="text/css" href="css/s.css">
  11. </head>
  12.  
  13. <body>
  14. <center><div class='logo'><a href='index.php'><img src='img/logo01.png'></a></div></center>
  15.  
  16. <?php
  17. $p_pojemnosc=$_FILES['plik']['size'];//pojemnosc pliku
  18. $p_typ=$_FILES['plik']['type']; // typ pliku
  19. $p_nazwa=$_FILES['plik']['name']; // nazwa pliku
  20. $p_smiec=$_FILES['plik']['tmp_name']; // chwilowa nazwa pliku
  21. $data = $_POST['data'];
  22. $autor = $_POST['autor'];
  23. $tresc = $_POST['tresc'];
  24. $kontakt = $_POST['kontakt'];
  25. $kat = $_POST['kat'];
  26. $nazwa = $_POST['nazwa'];
  27.  
  28.  
  29. //wycinamy rozszerzenie z pobieranego pliku
  30. $p_roz= array_pop(explode(".", $p_nazwa));
  31.  
  32. /* odbieramy dane z pola ukrytego i zaokrąglamy je do 3 miejsca
  33.   po przecinku/dzielimy przez 1204*1024 by było w MB*/
  34. $max_size=round(($_POST['max_file_size']/1048576),3)."MB";
  35.  
  36.  
  37. //zaokrąglamy "round" do 2 miejsc po przecinku i przeliczamy rozmiar pliku na MB
  38. $poj_MB=round(($p_pojemnosc/1048576),2).'MB';
  39.  
  40. //kodujemy nasz plik metodą MD5 i dodajemy date i godzinę oraz rozszerzenie pliku
  41. $p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
  42. $folder="galeria/ogloszenia/";
  43.  
  44. $img = imagecreatefromjpeg(''.$path_file.'');
  45.  
  46. $width = imagesx($img);
  47. $height = imagesy($img);
  48.  
  49.  
  50. $width_mini = 128; // szerokosc obrazka
  51. $height_mini = 128; // wysokosc obrazka
  52. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  53.  
  54.  
  55. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  56.  
  57.  
  58. imagejpeg($img_mini, "galeria/ogloszenia/min-".$p_nazwa_zm."".$p_roz."", 90); // utworzona miniaturka liczba (80) oznacza jakos obrazka od 0 do 100
  59. imagedestroy($img);
  60. imagedestroy($img_mini);
  61.  
  62. //---Kolorki HTML---
  63. $k_cze="<font color=#ff0000>";
  64. $f_koniec="</font>";
  65. $k_nieb="<font color=#0000ff>";
  66. if ($p_pojemnosc <= 0)
  67. {
  68. echo ("");
  69. echo "";
  70. }
  71.  
  72. if ($poj_MB > $max_size)
  73. {
  74. echo("Plik jest za duży maksymalnie można wysłać <b>".$k_cze.$max_size.$f_koniec."</b>"." .Plik wysyłany ma rozmiar <b><i>".$k_nieb.$poj_MB.$f_koniec."</b></i><br />");
  75. echo "<a href=dodaj.php>Wracaj ...";
  76. }
  77.  
  78. if (file_exists($folder.$p_nazwa_zm))
  79. {
  80. echo ("Plik o takiej nazwie jest już na serwerku <b><i>".$p_nazwa_zm."</b></i><br />");
  81. echo "<a href=dodaj.php>Wracaj ...";
  82. }
  83.  
  84. else {
  85. if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
  86. exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');
  87.  
  88. echo "<div class='brown'><center>Przeslanie udało się - <b>".$k_nieb.$p_nazwa."</b>"." ".$poj_MB."<br />";
  89. echo "<img src='$folder$p_nazwa_zm' style='max-width:600px;'><br />";
  90. echo "<a href='ogloszenia.php' class='a1 bold'>Powrót na ŻywiecOnline</a></center></div>";
  91. $path_file=$folder.$p_nazwa_zm;
  92. $conn = mysql_connect($host,$user,$pass) or die('Error connecting to mysql');
  93. mysql_query("SET NAMES 'latin2'");
  94. $zapytanie=mysql_query("insert into ogloszenia values(NULL,now(),'$autor','$tresc','$kontakt','$typ','$kat','$nazwa','$path_file','$img_mini')");
  95. echo "dodano wpis do bazy danych";
  96. }
  97. ?>
  98. </body>
  99. </html>


i tak:
miniaturki się tworzą ale czarne kwadraty :-)
do bazy zamiast ścieżki pliku mam "Resource id#2"

proszę o pomoc, bo nie mogę tego uciągnąć :-) dzięki za wyrozumiałość
nospor
$img = imagecreatefromjpeg(''.$path_file.'');
Sęk w tym, że $path_file określasz dopiero kilkanaście linii niżej...

Cytat
do bazy zamiast ścieżki pliku mam "Resource id#2"
Bo do bazy nie wkładasz ściezki do pliku a $img_mini, który jest uchwytem do obrazka a nie ścieżką.
mb83
  1. <?php
  2. include("mod/connect.inc");
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  8. <meta http-equiv="refresh" content="2;url=http://zywieconline.pl/ogloszenia.php">
  9. <title>ŻywiecOnline.pl - Przesyłanie plików na serwer - Administrator</title>
  10. <link rel="stylesheet" type="text/css" href="css/s.css">
  11. </head>
  12.  
  13. <body>
  14. <center><div class='logo'><a href='index.php'><img src='img/logo01.png'></a></div></center>
  15.  
  16. <?php
  17. $p_pojemnosc=$_FILES['plik']['size'];//pojemnosc pliku
  18. $p_typ=$_FILES['plik']['type']; // typ pliku
  19. $p_nazwa=$_FILES['plik']['name']; // nazwa pliku
  20. $p_smiec=$_FILES['plik']['tmp_name']; // chwilowa nazwa pliku
  21. $data = $_POST['data'];
  22. $autor = $_POST['autor'];
  23. $tresc = $_POST['tresc'];
  24. $kontakt = $_POST['kontakt'];
  25. $kat = $_POST['kat'];
  26. $nazwa = $_POST['nazwa'];
  27.  
  28.  
  29. //wycinamy rozszerzenie z pobieranego pliku
  30. $p_roz= array_pop(explode(".", $p_nazwa));
  31.  
  32. /* odbieramy dane z pola ukrytego i zaokrąglamy je do 3 miejsca
  33.   po przecinku/dzielimy przez 1204*1024 by było w MB*/
  34. $max_size=round(($_POST['max_file_size']/1048576),3)."MB";
  35.  
  36.  
  37. //zaokrąglamy "round" do 2 miejsc po przecinku i przeliczamy rozmiar pliku na MB
  38. $poj_MB=round(($p_pojemnosc/1048576),2).'MB';
  39.  
  40. //kodujemy nasz plik metodą MD5 i dodajemy date i godzinę oraz rozszerzenie pliku
  41. $p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
  42. $folder="galeria/ogloszenia/";
  43.  
  44. $path_file=$folder.$p_nazwa_zm;
  45. $img = imagecreatefromjpeg(''.$path_file.'');
  46.  
  47. $width = imagesx($img);
  48. $height = imagesy($img);
  49.  
  50.  
  51. $width_mini = 128; // szerokosc obrazka
  52. $height_mini = 128; // wysokosc obrazka
  53. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  54.  
  55.  
  56. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  57.  
  58.  
  59. imagejpeg($img_mini, "galeria/ogloszenia/min-".$p_nazwa_zm."", 90); // utworzona miniaturka liczba (80) oznacza jakos obrazka od 0 do 100
  60. imagedestroy($img);
  61. imagedestroy($img_mini);
  62.  
  63. //---Kolorki HTML---
  64. $k_cze="<font color=#ff0000>";
  65. $f_koniec="</font>";
  66. $k_nieb="<font color=#0000ff>";
  67. if ($p_pojemnosc <= 0)
  68. {
  69. echo ("");
  70. echo "";
  71. }
  72.  
  73. if ($poj_MB > $max_size)
  74. {
  75. echo("Plik jest za duży maksymalnie można wysłać <b>".$k_cze.$max_size.$f_koniec."</b>"." .Plik wysyłany ma rozmiar <b><i>".$k_nieb.$poj_MB.$f_koniec."</b></i><br />");
  76. echo "<a href=dodaj.php>Wracaj ...";
  77. }
  78.  
  79. if (file_exists($folder.$p_nazwa_zm))
  80. {
  81. echo ("Plik o takiej nazwie jest już na serwerku <b><i>".$p_nazwa_zm."</b></i><br />");
  82. echo "<a href=dodaj.php>Wracaj ...";
  83. }
  84.  
  85. else {
  86. if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
  87. exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');
  88.  
  89. echo "<div class='brown'><center>Przeslanie udało się - <b>".$k_nieb.$p_nazwa."</b>"." ".$poj_MB."<br />";
  90. echo "<img src='$folder$p_nazwa_zm' style='max-width:600px;'><br />";
  91.  
  92. $conn = mysql_connect($host,$user,$pass) or die('Error connecting to mysql');
  93. mysql_query("SET NAMES 'latin2'");
  94. $zapytanie=mysql_query("insert into ogloszenia values(NULL,now(),'$autor','$tresc','$kontakt','$typ','$kat','$nazwa','$path_file','$img')");
  95. echo "dodano wpis do bazy danych";
  96. }
  97. ?>
  98. </body>
  99. </html>


zmieniłem $path_file na góre ale to nic nie daje.
pewnie się mylę ale $img to chyba ścieżka do mini jest :-)
nospor
Cytat
pewnie się mylę ale $img to chyba ścieżka do mini jest :-)

$img = imagecreatefromjpeg(''.$path_file.'');
Nie, nie jest...
mb83
a dlaczego są czarne miniaturki??
i dlaczego ścieżka do mini się nie zapisuje?
która to ścieżka do mini??



dobra, ścieżka do mini się zapisuje
ale czarne miniaturki zostały.

i jeszcze jedno:
co napisać w tym kodzie aby w przypadku gdy ktoś nie wybierze zdjęcia do uploadu to w bazie były puste pola (null) zdjecie i mini?

czy może mi ktoś powiedzieć dlaczego ten kod cały czas generuje czarne miniaturki?questionmark.gif
nospor
Cytat
$p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;

$folder="galeria/ogloszenia/";



$path_file=$folder.$p_nazwa_zm;

$img = imagecreatefromjpeg(''.$path_file.'');

Co z tego, że $path_file przeniosłeś te pare linij wyżej, skoro plik pod $path_file nadal wrzucasz dopiero kilkanaście linii niżej...
mb83
dobra, nie daje rady :-(

możesz mi napisać co mam zrobić żeby działało?

domyślam się, że rozwiązanie jest banalne ale nie mam pojęcia co mam zmienić.
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.