Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload zdjęć do bazy mysql+miniaturki
Forum PHP.pl > Forum > PHP
vodkon
Witam chciałbym zrobić upload zdjęć do bazy mysql tyle że prócz zdjęcia w oryginalnej rozdzielczości były by też 2 z inną ustaloną
  1. CREATE TABLE wydarzenia_galeria (
  2. id int(10) NOT NULL AUTO_INCREMENT,
  3. typ varchar(30) NOT NULL,
  4. rozmiar int(11) NOT NULL,
  5. nazwa varchar(200) NOT NULL,
  6. img mediumblob NOT NULL,
  7. PRIMARY KEY (id)
  8. );

Gdzie pole nazwa będzie uzupełnieniem reszty skryptu. jak zrobić taki skrypt i co zmodyfikować w kodzie sql czy ma tworzyć 3 osobne rekordy dla jednego zdjęcia czy jak?
wNogachSpisz
Cytat(vodkon @ 15.12.2012, 15:15:23 ) *
Gdzie pole nazwa będzie uzupełnieniem reszty skryptu.

Co to znaczy?
vodkon
już nie ważne od nowa
tak wygląda tabela ze zdjęciami
  1. CREATE TABLE `galeria` (
  2. `id` int(10) NOT NULL AUTO_INCREMENT,
  3. `typ` varchar(30) collate utf8_polish_ci NOT NULL,
  4. `size` int(20) NOT NULL,
  5. `wydarzenia` int(1) NOT NULL DEFAULT '0',
  6. `wydarzenia_nazwa` varchar(220) collate utf8_polish_ci NOT NULL,
  7. `nazwa` varchar(220) collate utf8_polish_ci NOT NULL,
  8. `img` mediumblob NOT NULL,
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ;


Tak plik jest wrzucany do bazy jak zrobić aby to samo zdjęcie miało jeszcze 2 różne wielkości np. 570px X 270px i druga 200x100 oraz oryginalna wielkość i żeby te przerobione były proporcjonalne żeby np. zawsze było 570 i 270 ewentualnie przycinało go przy bokach, i co dodać do kodu aby przepuszczał wszystkie pliki z obrazami a inne nie
  1. if($HTTP_POST_VARS['img'] == 1){
  2. if($HTTP_POST_FILES['plik']['size'] < 8665600 || $HTTP_POST_FILES['plik']['size'] != 0){
  3. if(is_uploaded_file($HTTP_POST_FILES['plik']['tmp_name']) || !isset($HTTP_POST_FILES['plik'])){
  4. mysql_connect("localhost", "root", "")or die("Brak połączenia z serwerem.");
  5. mysql_select_db("zszgoleniow")or die("ERROR MySQL: Zszgoleniow.pl Baza danych nie odpowiada!");
  6. mysql_query('SET CHARACTER SET utf8');
  7. $size = $HTTP_POST_FILES['plik']['size'];
  8. $name = $HTTP_POST_FILES['plik']['name'];
  9. $typ = $HTTP_POST_FILES['plik']['type'];
  10. $fhandle = fopen($HTTP_POST_FILES['plik']['tmp_name'], "r");
  11. $content = base64_encode(fread($fhandle, $HTTP_POST_FILES['plik']['size']));
  12. fclose($fhandle);
  13.  
  14.  
  15. $imgmysql="INSERT INTO galeria (typ,size,nazwa,img) VALUES ('$typ','$size','$name','$content')";
  16. mysql_query($imgmysql);
  17.  
  18. }else{ echo "Nie wybrano pliku!"; } }else{ echo "Wielkość pliku jest za duża!"; } }

wyświetlanie:
  1. if(isset($_GET['id'])){ $id = $_GET['id'];
  2. mysql_connect("localhost", "root", "")or die("Brak połączenia z serwerem.");
  3. mysql_select_db("zszgoleniow")or die("ERROR MySQL: Zszgoleniow.pl Baza danych nie odpowiada!");
  4. mysql_query('SET CHARACTER SET utf8');
  5. $img_mysql = "SELECT * FROM galeria WHERE id = '$id'";
  6. $imgre = mysql_query($img_mysql);
  7. $str_no = mysql_num_rows($imgre); if ($str_no == 1) {
  8.  
  9. $plik = mysql_fetch_array($imgre);
  10. header("Content-length: $plik[size]");
  11. header("Content-type: $plik[typ]");
  12. header("Content-Disposition: attachment; filename=$plik[nazwa]");
  13. echo base64_decode($plik[img]);
  14.  
  15. exit(); } }
Kofel
Wskazówka: tabele photos i photo_variants
vodkon
nie, ja pytam się jak zrobić skrypt php który zmieni wielkość zdjęcia wtedy dodam dodatkowe pola do tabeli, i jak zrobić przesyłanie ajax jakieś odnośniki do znanych i dobrych skryptów w których mógłbym pogrzebać
lukaskolista
Nie da sie ajaxem wysylac plikow, jedynie przez ramki lub flashem
vodkon
Jak zrobić aby plik był przetwarzany biblioteka zmieniała wielkość i zapisywany był jak oryginalny obraz? bo generowanie w tzn. locie miniaturki jest nie korzystne.
  1. <?php if($HTTP_POST_VARS['img'] == 1){
  2. if($HTTP_POST_FILES['plik']['size'] < 8665600 || $HTTP_POST_FILES['plik']['size'] != 0){
  3. if(is_uploaded_file($HTTP_POST_FILES['plik']['tmp_name']) || !isset($HTTP_POST_FILES['plik'])){
  4. mysql_connect("localhost", "", "")or die("Brak połączenia z serwerem.");
  5. mysql_select_db("zszgoleniow")or die("ERROR MySQL: Zszgoleniow.pl Baza danych nie odpowiada!");
  6. mysql_query('SET CHARACTER SET utf8');
  7. $size = $HTTP_POST_FILES['plik']['size'];
  8. $name = $HTTP_POST_FILES['plik']['name'];
  9. $typ = $HTTP_POST_FILES['plik']['type'];
  10. $nazwa = $HTTP_POST_VARS['nazwa'];
  11. $fhandle = fopen($HTTP_POST_FILES['plik']['tmp_name'], "r");
  12. $content = base64_encode(fread($fhandle, $HTTP_POST_FILES['plik']['size']));
  13. fclose($fhandle);
  14. class SimpleImage {
  15. var $image;
  16. var $image_type;
  17.  
  18. function load($filename) {
  19.  
  20. $image_info = getimagesize($filename);
  21. $this->image_type = $image_info[2];
  22. if( $this->image_type == IMAGETYPE_JPEG ) {
  23.  
  24. $this->image = imagecreatefromjpeg($filename);
  25. } elseif( $this->image_type == IMAGETYPE_GIF ) {
  26.  
  27. $this->image = imagecreatefromgif($filename);
  28. } elseif( $this->image_type == IMAGETYPE_PNG ) {
  29.  
  30. $this->image = imagecreatefrompng($filename);
  31. }
  32. }
  33. function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
  34.  
  35. if( $image_type == IMAGETYPE_JPEG ) {
  36. imagejpeg($this->image,$filename,$compression);
  37. } elseif( $image_type == IMAGETYPE_GIF ) {
  38.  
  39. imagegif($this->image,$filename);
  40. } elseif( $image_type == IMAGETYPE_PNG ) {
  41.  
  42. imagepng($this->image,$filename);
  43. }
  44. if( $permissions != null) {
  45.  
  46. chmod($filename,$permissions);
  47. }
  48. }
  49. function output($image_type=IMAGETYPE_JPEG) {
  50.  
  51. if( $image_type == IMAGETYPE_JPEG ) {
  52. imagejpeg($this->image);
  53. } elseif( $image_type == IMAGETYPE_GIF ) {
  54.  
  55. imagegif($this->image);
  56. } elseif( $image_type == IMAGETYPE_PNG ) {
  57.  
  58. imagepng($this->image);
  59. }
  60. }
  61. function getWidth() {
  62.  
  63. return imagesx($this->image);
  64. }
  65. function getHeight() {
  66.  
  67. return imagesy($this->image);
  68. }
  69. function resizeToHeight($height) {
  70.  
  71. $ratio = $height / $this->getHeight();
  72. $width = $this->getWidth() * $ratio;
  73. $this->resize($width,$height);
  74. }
  75.  
  76. function resizeToWidth($width) {
  77. $ratio = $width / $this->getWidth();
  78. $height = $this->getheight() * $ratio;
  79. $this->resize($width,$height);
  80. }
  81.  
  82. function scale($scale) {
  83. $width = $this->getWidth() * $scale/100;
  84. $height = $this->getheight() * $scale/100;
  85. $this->resize($width,$height);
  86. }
  87. function resize($width,$height) {
  88. $new_image = imagecreatetruecolor($width, $height);
  89. imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
  90. $this->image = $new_image; } }
  91. if($_GET['tm'] == "2"){
  92. $image = new SimpleImage();
  93. $image->load($content);
  94. $image->resize(470,270);
  95. $image->output(); }
  96.  
  97. $imgmysql="INSERT INTO galeria (typ,size,size2,size3,nazwa,img,img2,img3,wydarzenia_nazwa,wydarzenia) VALUES ('$typ','$size','$size2','$size3','$name','$content','$content2','$content3','$nazwa','1')";
  98. mysql_query($imgmysql);
  99.  
  100. }else{ echo "Nie wybrano pliku!"; } }else{ echo "Wielkość pliku jest za duża!"; } }
  101. ?>
  102.  
  103. <form method="POST" enctype="multipart/form-data">
  104. <input type="hidden" name="img" value="1">
  105. <input type="file" name="plik" size="40" />
  106. <input type="text" name="nazwa" value="Andrzejki" size="40" />
  107. <input type="submit" value="Uploaduj" />
  108. </form>
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.