Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz dodawania zdjęcia
Forum PHP.pl > Forum > Przedszkole
Barcelona
Witam, mam taki problem i prośbę. Otóż mam skrypt, który dodaje ogłoszenie. W formularzu mam opcje która dodaje zdjęcie do ogłoszenia. To zdjęcie jest automatycznie przeskalowywane do miniatury. Problem polega na tym że jak dodaje ogłoszenie bez foty to to ogłoszenie nie doda się do bazy danych i nie wiem jak rozwiązać ten problem. Druga zaś sprawa chciałbym dodawać więcej zdjęć niż tylko jedno, tak żeby również było skalowane do miniatury.

Dodam że formularz robiłem sam, z dodawanie pliku pomagał mi kumpel i teraz nie wiem jak się za to zabrać.

Oto plik z dodawaniem.

  1. <?
  2. function f_rand($ile) {
  3. for ($i=1; $i<=$ile; $i++)
  4. {$l_rand .= dechex(mt_rand());}
  5. return $l_rand;
  6. }
  7.  
  8.  
  9. function resize($foto, $szerokosc, $folder, $napis) {
  10.  
  11. $fotos = "./tmp/".$foto;
  12. $mini = $folder."/".$foto;
  13. if (!file_exists($mini)) {
  14. $img = imagecreatefromjpeg($fotos);
  15. $width = imagesx($img); // szerokosc jpga
  16. $height = imagesy($img); // wysokosc jpga
  17.  
  18. if ($width > $szerokosc || $height > $szerokosc){
  19. //poziomy / szerokosc
  20. if ($width>=$height) {$width_mini = $szerokosc;
  21. $x = $width/$width_mini;
  22. $height_mini = $height/$x;
  23. $litery_wielkosc = $width/60;}
  24.  
  25. //pionowy / wysokosc
  26. if ($width<$height) {$height_mini = $szerokosc;
  27. $x = $height/$height_mini;
  28. $width_mini = $width/$x;
  29. $litery_wielkosc = $height/60;}
  30.  
  31. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  32. }
  33. else
  34. {
  35. $img_mini = $img;
  36. }
  37. $txt = $napis;
  38. $fontpath = realpath('.');
  39. $kolor_tla = imagecolorallocate ( $img, 255, 255, 255 );
  40.  
  41. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width, $height);
  42. imagejpeg($img_mini, $mini, 100);
  43. @imagedestroy($img);
  44. @imagedestroy($img_mini);
  45. }
  46. }
  47.  
  48.  
  49.  
  50. if ($_SESSION["zalogowany"]=="tak") {
  51. include('menu.php');
  52. $tytul = mysql_real_escape_string (trim($_POST['tytul']));
  53. $data = mysql_real_escape_string (trim($_POST['data']));
  54. $tresc = $_POST['tresc'];
  55. $stan = mysql_real_escape_string (trim($_POST['stan']));
  56. $rodzaj = mysql_real_escape_string (trim($_POST['rodzaj']));
  57. $marka = mysql_real_escape_string (trim($_POST['marka']));
  58. $model = mysql_real_escape_string (trim($_POST['model']));
  59. $rocznik = mysql_real_escape_string (trim($_POST['rocznik']));
  60. $miejsca = mysql_real_escape_string (trim($_POST['miejsca']));
  61. $klimatyzacja = mysql_real_escape_string (trim($_POST['klimatyzacja']));
  62. $rejestracja = mysql_real_escape_string (trim($_POST['rejestracja']));
  63. $cena = mysql_real_escape_string (trim($_POST['cena']));
  64. $ul_plik = mysql_real_escape_string (trim($_POST['foto']));
  65.  
  66.  
  67. if (strlen($tytul)>2) {
  68.  
  69.  
  70. ////////////////////////////////////////
  71.  
  72. //ustawienie wielkosci zmniejszanych obrazow
  73. $w_1 = 175;
  74. $w_2 = 400;
  75.  
  76. if ($_FILES){
  77. foreach( $_FILES as $ul_plik )
  78. {
  79. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  80. {
  81. $rand = f_rand(3);
  82. $new_name = $rand.".jpg";
  83. $tmp_name = $ul_plik['tmp_name'];
  84. $name = $ul_plik['name'];
  85.  
  86. copy($tmp_name, './tmp/'.$new_name);
  87. resize($new_name,$w_1,"./img/mini/", "");
  88. resize($new_name,$w_2,"./img/", "");
  89.  
  90.  
  91. unlink('./tmp/'.$new_name);
  92.  
  93.  
  94. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  95. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  96. ");
  97.  
  98.  
  99. }
  100. }
  101.  
  102. }
  103. echo "
  104. <br><div class=\"potwierdzenie\"><center>Ogłoszenie zostało dodane</center>
  105. </div>";
  106.  
  107.  
  108. }
  109. $data = date("Y-m-d H:i:s");
  110. echo <<<KONIEC
  111. <br>
  112. <form action="" method="post" enctype="multipart/form-data" class="uniForm">
  113.  
  114. <fieldset><legend>Dane Samochodu</legend>
  115. <div class="ctrlHolder">
  116.   <label for="foto">Dodaj zdjęcie do ogłoszenia:</label><br>
  117.   <input type="file" name="foto"><br>
  118.   <label for="marka">Podaj marke samochodu:</label>
  119.   <input type="text" name="marka" style="width:100%;" class="textInput small" />
  120.   <label for="model">Podaj model samochodu:</label>
  121.   <input type="text" name="model" style="width:100%;" class="textInput small" />
  122.   <label for="rocznik">Podaj rocznik samochodu:</label>
  123.   <input type="text" name="rocznik" style="width:100%;" class="textInput small" />
  124.   <label for="miejsca">Podaj ilo?ć miejsc siedz?cych:</label>
  125.   <input type="text" name="miejsca" style="width:100%;" class="textInput small" />
  126.   <label for="klimatyzacja">Klimatyzacja:</label><br>
  127.   <select id="" name="klimatyzacja"><optgroup label='Wybierz jedn? opcję'><option value='TAK'>TAK</option><option value='NIE'>NIE</option></optgroup></select><br>
  128.   <label for="rejestracja">Podaj rejestracje samochodu*:</label>
  129.   <input type="text" name="rejestracja" style="width:100%;" class="textInput small" />
  130.   </div></fieldset>
  131.   <fieldset><legend>Ogłoszenie</legend>
  132. <div class="ctrlHolder">
  133.   <label for="tytul">Podaj tytuł ogłoszenia:</label>
  134.   <input type="text" name="tytul" style="width:100%;" class="textInput small" />
  135.   <label for="model">Podaj date ogłoszenia:</label>
  136.   <input type="text" name="data" style="width:100%;" class="textInput small" value="$data" />
  137.   <label for="rocznik">Napisz tre?ć ogłoszenia:</label><br>
  138.   <textarea name="tresc" id="editor"></textarea><br>
  139. KONIEC;
  140. ?>
  141. <script type="text/javascript">
  142. //<![CDATA[
  143.  
  144. CKEDITOR.replace( 'editor',
  145. {
  146. fullPage : true
  147. });
  148.  
  149. //]]>
  150. </script>
  151. <?
  152. echo <<<KONIEC
  153. <label for="cena">Podaj cene (zł):</label>
  154.   <input type="text" name="cena" style="width:100%;" class="textInput small" />
  155. </div></fieldset>
  156. <fieldset><legend>Informacje dodatkowe</legend>
  157. <div class="ctrlHolder">
  158. <p class="label">
  159.   Wybierz rodzaj ogłoszenia, oraz czy ma on zostać wy?wietlony na stronie
  160.   </p><table width="100%">
  161.  
  162.  
  163. <tr><td align="middle"><ul class="alternate">
  164.   <li><label for="rodzaj" align="top">Rodzaj <select id="" name="rodzaj"><optgroup label='Wybierz jedn? opcję'><option value='wynajem_autobusow'>Wynajem autobusów</option><option value='wynajem_busow'>Wynajem busów</option><option value='sprzedaz_busow'>Sprzedaż busów</option><option value='transport_ludzi'>Transport ludzi</option></optgroup></select></label></li></td><td align="middle">
  165.   <li><label for="stan" align="middle">Stan <select id="" name="stan"><optgroup label='Aktualne'><option value='1'>Ogłoszenie widoczne</optgroup><optgroup label='Wybierz jedn? opcję'><option value='1'>Ogłoszenie widoczne</option><option value='0'>Ogłoszenie niewidoczne</option></optgroup></select></label></li>
  166.   </ul></td></tr></table>
  167.   </div></fieldset>
  168.   <div class="buttonHolder">
  169. <input type="submit" value=" wy?lij" class="primaryAction" />
  170. </div>
  171. KONIEC;
  172. }
  173. else {
  174. echo "<div class=\"potwierdzenie\"><center>Proszę się zalogować!</center>
  175. </div>";
  176.  
  177. }
  178. ?>


Proszę o pomoc
smietek
Po prostu sprawdź, czy user wrzucił jakieś foto, a jeśli nie, to podaj do bazy lokalizację pliku domyślnego.
Barcelona
Właśnie tak myślałem żeby zrobić tak żeby dawało plik domyślny w przypadku gdyby nie został wrzucony plik. Tylko własnie problem z tym że nie wiem jak to zrobić ;/
smietek
Masz tam przecież ifa, który sprawdza, czy plik został wgrany. Zapytanie z INSERTEM przenosisz z tego ifa na zewnątrz, i dodajesz do ifa else, w którym ustawiasz wartość pola $rand (czyli numer obrazka) na stałą wartość (np. default)
Barcelona
Ale jak przeniose Insert z ifa, wtedy nie bedzie dodawało danych jak fotka bedzie dodana?
smietek
To przenieś INSERT za if($_FILES) (poza tego ifa), a dla tego ifa dasz tą wartość domyślną. Reszta będzie się dopisywała poprawnie (z resztą, sam nie widzisz?)
Barcelona
Teraz widze smile.gif
Takie coś może być?

  1. if ($_FILES){
  2. foreach( $_FILES as $ul_plik )
  3. {
  4. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  5. {
  6. $rand = f_rand(3);
  7.  
  8. $new_name = $rand.".jpg";
  9. $tmp_name = $ul_plik['tmp_name'];
  10. $name = $ul_plik['name'];
  11.  
  12. copy($tmp_name, './tmp/'.$new_name);
  13.  
  14. resize($new_name,$w_1,"./img/mini/", "");
  15. resize($new_name,$w_2,"./img/", "");
  16.  
  17.  
  18. unlink('./tmp/'.$new_name);
  19.  
  20.  
  21.  
  22. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  23. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  24. ");
  25.  
  26.  
  27. }
  28. }
  29.  
  30. }
  31. else {
  32. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  33. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','domyslny','$cena')
  34. ");
  35. }


Ta wersja nie dodaje ogłoszenia
smietek
Pewnie jakiejś zmiennej brakuje w zapytaniu.
Wsadź to zapytanie do zmiennej, potem daj echo $zmienna_z_zapytaniem i będziesz wiedział czego Ci brakuje...
Barcelona
Coś jest nie tak
Zrobiłem coś takiego:

  1. if (strlen($tytul)>2) {
  2.  
  3.  
  4. ////////////////////////////////////////
  5.  
  6. //ustawienie wielkosci zmniejszanych obrazow
  7. $w_1 = 175;
  8. $w_2 = 400;
  9.  
  10. if ($_FILES){
  11. foreach( $_FILES as $ul_plik )
  12. {
  13. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  14. {
  15. $rand = f_rand(3);
  16. $new_name = $rand.".jpg";
  17. $tmp_name = $ul_plik['tmp_name'];
  18. $name = $ul_plik['name'];
  19.  
  20. copy($tmp_name, './tmp/'.$new_name);
  21.  
  22.  
  23. resize($new_name,$w_1,"./img/mini/", "");
  24. resize($new_name,$w_2,"./img/", "");
  25.  
  26.  
  27. unlink('./tmp/'.$new_name);
  28.  
  29.  
  30.  
  31. $proba = mysql_query("
  32. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  33. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  34. ");
  35. echo $proba;
  36.  
  37. }
  38. }
  39.  
  40. }
  41. else {
  42. $nastepna = mysql_query("
  43. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  44. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  45. ");
  46. echo $nastepna;
  47. }
  48. ////////////////////////////////////////
  49.  
  50. echo "
  51. <br><div class=\"potwierdzenie\"><center>Ogłoszenie zostało dodane</center>
  52. </div>";
  53.  
  54.  
  55. }


Ale nie wyswietla mi zapytania, ani jednego ani drugiego. Wyskakuje komunikat że ogłoszenie zostało dodane ale w bazie nic sie nie dzieje.
H4eX
No bo one zawsze wyskoczy, tak jest napisane. W każdym warunku wyprintuj jakąś treść i będziesz wiedział co nie halo.
Barcelona
Doleciało do test3 sciana.gif
Ale jak dam dodam plik to wyświetla wszystkie testy

  1. if (strlen($tytul)>2) {
  2.  
  3. echo "test1";
  4. ////////////////////////////////////////
  5.  
  6. //ustawienie wielkosci zmniejszanych obrazow
  7. $w_1 = 175;
  8. $w_2 = 400;
  9.  
  10. if ($_FILES){ echo "test2";
  11. foreach( $_FILES as $ul_plik )
  12. {
  13. echo "test3";
  14. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  15. {
  16. echo "test4";
  17. $rand = f_rand(3);
  18.  
  19. $new_name = $rand.".jpg";
  20. $tmp_name = $ul_plik['tmp_name'];
  21. $name = $ul_plik['name'];
  22.  
  23. copy($tmp_name, './tmp/'.$new_name);
  24.  
  25. resize($new_name,$w_1,"./img/mini/", "");
  26. resize($new_name,$w_2,"./img/", "");
  27.  
  28.  
  29. unlink('./tmp/'.$new_name);
  30.  
  31. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  32. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  33. ");
  34. echo "test5";
  35.  
  36. }
  37. }
  38.  
  39. }
  40. else {
  41. echo "test6";
  42. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  43. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  44. ");
  45. }
  46. ////////////////////////////////////////
  47.  
  48. echo "
  49. <br><div class=\"potwierdzenie\"><center>Ogłoszenie zostało dodane</center>
  50. </div>";
  51.  
  52.  
  53. }


Sorki że nadpisuje ale rozwiązałem już problem, w złym miejcu dałem to else. Temat do zamknięcia.

Dzięki za pomoc
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.