Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Upload większej ilości plików
Forum PHP.pl > Forum > Przedszkole
Barcelona
Witam, niedawno rozwiązałem jeden problem i od razu natknąłem się na kolejny.
Z tego co mi wiadomo serwer na wykonanie jednego skryptu ma 30 sekund i dlatego stwarza to pewne problemy.
Planuje do mojego formularza dodać możliwość uploadu zdjęć w ilości większej niż 1.
Zatem jeżeli dam możliwość uploadu max 5 zdjęć i jeżeli user będzie wgrywał jednocześnie 5 zdjęć to wtedy serwer nie wyrobi się w czasie (wszystko zależy od łącza oczywiście, ale zakładam czarny scenariusz).
A zatem moje pytanko brzmi jak ten problem rozwiązać ?

Oto kod formularza:

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

Skrypt zostaje uruchomiony dopiero wtedy, jak całość 'od użytkownika' zostanie wysłana. W twoim mniemaniu skrypt zaczyna działać(przerabiać zdjęcia) jeszcze zanim całkowicie je odebrał winksmiley.jpg Inaczej nie potrafię tego wytłumaczyc.
Barcelona
Jak w formularzu wskaże lokalizacje do 5 fotek i wcisnę przycisk wyślij to wtedy zaczyna wykonywanie skryptu? @evolucja mówisz że nie bedzie problemu czasowego ?
tehaha
jeżeli obawiasz, że obróbka zdjęć może potrwać za długo i skrypt przestanie działać, to ustaw na samym początku:
  1. ini_set('max_execution_time', 300);
evolucja
Cytat(Barcelona @ 21.07.2010, 01:54:51 ) *
Jak w formularzu wskaże lokalizacje do 5 fotek i wcisnę przycisk wyślij to wtedy zaczyna wykonywanie skryptu? @evolucja mówisz że nie bedzie problemu czasowego ?


Nie. Przecież napisałem wyraźnie. Podałem nawet rozwinięcie twojego myślenia i sam nie wyłapałeś błędu?
Skrypt po stronie serwera może zostać uruchomiony dopiero wtedy, jak całość danych zostanie przesłana. Bo niby w jaki inny sposób miały by działać hostingi plików? winksmiley.jpg

Cytat(tehaha @ 21.07.2010, 08:47:56 ) *
jeżeli obawiasz, że obróbka zdjęć może potrwać za długo i skrypt przestanie działać, to ustaw na samym początku:
  1. ini_set('max_execution_time', 300);

Na localu może sobie ustawiać... Nie znam jeszcze shared hostingu który by miał możliwość zmiany smile.gif
Barcelona
@evolucja rozumiem o co chodzi.
A możecie mi wskazać jak zrobić żeby skrypt robił miniaturki kolejnych zdjęć. Bo teraz mam tylko jednego inputa z type=file.

----------------------------------------------

Witam, sorki że nadpisuje ale nie mogę sobie poradzić z tym problemem.
Zrobiłem kolejnego inputa na wrzucanie pliku.
$ul_plik --> odnosi się do pierwszego inputa
$foto_dwa --> to drugi input.

Zmierzam do tego żeby zrobić upload większej ilości uploadu plików graficznych i tak żeby skalowało mi te pliki do miniatury. Wszystko działa, ale tworzy mi podwójną ilość miniatur oraz dodaje do bazy podwójna ilość ogłoszeń.
Dodaje ogłoszenie i daje 2 fotki. Na ftp tworzy się 8 plików: 4 miniatury i 4 oryginalne. Do bazy dodają się 2 ogłoszenia.
Nie wiem co jest nie tak.
Jak był pojedynczy upload to wszystko działało dobrze.
Proszę o pomoc.

  1. if ($_FILES){
  2. foreach( $_FILES as $foto_dwa )
  3. {
  4. if( is_uploaded_file( $foto_dwa['tmp_name'] ) )
  5. {
  6. $rand = f_rand(3);
  7.  
  8. $new_name = $rand.".jpg";
  9. $tmp_name = $foto_dwa['tmp_name'];
  10. $name = $foto_dwa['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.  
  23. }
  24.  
  25.  
  26. if ($_FILES){
  27. foreach( $_FILES as $ul_plik )
  28. {
  29. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  30. {
  31. $rand = f_rand(3);
  32.  
  33.  
  34. $new_name = $rand.".jpg";
  35. $tmp_name = $ul_plik['tmp_name'];
  36. $name = $ul_plik['name'];
  37.  
  38. copy($tmp_name, './tmp/'.$new_name);
  39.  
  40.  
  41. resize($new_name,$w_1,"./img/mini/", "");
  42. resize($new_name,$w_2,"./img/", "");
  43.  
  44.  
  45. unlink('./tmp/'.$new_name);
  46.  
  47.  
  48. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  49. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  50. ");
  51.  
  52.  
  53. }
  54. else {
  55. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  56. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  57. ");
  58. }
  59. }
  60.  
  61. }
Wilu88
  1. else {
  2.  
  3.  
  4. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  5.  
  6. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  7.  
  8. ");
  9.  
  10. }
  11.  
  12. }

Na pewno w tym kodzie masz błąd w treści wysyłanej do kolumny obrazek, we wcześniejszym zapytaniu wrzucam tam $rand a w drugim jakaś nazwa
evolucja
A po co ci dwa foreachy działające dokładnie tak samo? A, nie dokładnie. Ten pierwszy nie wysyła zapytania smile.gif Po prostu usuń pierwszą część a zostaw tylko:
  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.  
  9. $new_name = $rand.".jpg";
  10. $tmp_name = $ul_plik['tmp_name'];
  11. $name = $ul_plik['name'];
  12.  
  13. copy($tmp_name, './tmp/'.$new_name);
  14.  
  15.  
  16. resize($new_name,$w_1,"./img/mini/", "");
  17. resize($new_name,$w_2,"./img/", "");
  18.  
  19.  
  20. unlink('./tmp/'.$new_name);
  21.  
  22.  
  23. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  24. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  25. ");
  26.  
  27.  
  28. }
  29. else {
  30. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  31. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  32. ");
  33. }
  34. }
  35.  
  36. }

Dodawanie kolejnych zdjęć to już tylko stworzenie odpowiednich inputów i ich nazwanie - bez zmian w kodzie.
Wilu88
A nie prościej zrobić tak:

Ujednolicić nazwy inputów z plikami np: $ul_plik1, $ul_plik2 itd. I jeśli z góry zakładasz zż będzie np 5 plików zrobić pętle z 5 przebiegami i za każdym przebiegiem robić INSERTA?
Barcelona
@evolucja, ale czy jak usunę pierwszą część to czy będą się tworzyły miniaturki do kolejnych wgrywanych zdjęć. Zależy mi jeszcze żeby nazwy tych plików dodawać do bazy mysql.

Cytat
Na pewno w tym kodzie masz błąd w treści wysyłanej do kolumny obrazek, we wcześniejszym zapytaniu wrzucam tam $rand a w drugim jakaś nazwa


zapytanie jest dobre. Ta 'nazwa' w zapytaniu jest nazwą pliku. Działa to tak --> jak nie zostanie dodane zdjęcie to wtedy w polu obrazek zostaje dodany domyslny obrazek o nazwie "nazwa" a jak obrazek zostaje dodany to wtedy leci rand z nazwa pliku.

@Wilu88 mógłbyś napisać jak to zrobić w pętli bo właśnie rozważam również takie rozwiązanie ale nie wiem jak się za nie zabrać.
evolucja
Cytat(Wilu88 @ 22.07.2010, 12:54:18 ) *
A nie prościej zrobić tak:

Ujednolicić nazwy inputów z plikami np: $ul_plik1, $ul_plik2 itd. I jeśli z góry zakładasz zż będzie np 5 plików zrobić pętle z 5 przebiegami i za każdym przebiegiem robić INSERTA?

To rozwiązanie jest po prostu głupie. Po co ma przerabiać to na statyczne skoro już ma teraz zrobione dynamicznie?


Cytat(Barcelona @ 22.07.2010, 13:07:35 ) *
@evolucja, ale czy jak usunę pierwszą część to czy będą się tworzyły miniaturki do kolejnych wgrywanych zdjęć. Zależy mi jeszcze żeby nazwy tych plików dodawać do bazy mysql.

A sprawdziłeś to w ogóle czy tylko tak gadasz?
Wilu88
  1. <?
  2. for( $a=1 ; $a<=5 ; $a++) {
  3.  
  4.  
  5. if( is_uploaded_file($ul_plik'.$a.'['tmp_name'] ) )
  6.  
  7. {
  8.  
  9. $rand = f_rand(3);
  10.  
  11.  
  12. $new_name = $rand.".jpg";
  13.  
  14. $tmp_name = $ul_plik'.$a.'['tmp_name'];
  15.  
  16. $name = $ul_plik'.$a.'['name'];
  17.  
  18.  
  19.  
  20. copy($tmp_name, './tmp/'.$new_name);
  21.  
  22.  
  23.  
  24. resize($new_name,$w_1,"./img/mini/", "");
  25.  
  26. resize($new_name,$w_2,"./img/", "");
  27.  
  28. unlink('./tmp/'.$new_name);
  29.  
  30.  
  31.  
  32. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  33.  
  34. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  35.  
  36. ");
  37.  
  38. }
  39. ?>


tyle że nie jestem pewien tej linijki
Kod
if( is_uploaded_file($ul_plik'.$a.'['tmp_name'] ) )
i łączenia dwóch zmiennych pokombinujesz i powinno być ok biggrin.gif
evolucja
#Wilu88
No i po co to? Jaki jest sens przerabiania czegoś co działa i jest dynamiczne, na coś takiego?
Wilu88
Kolega poprosił o kod to przedstawiłem, a czy jest sens to niech on zdecyduje.
Barcelona
@evolucja własnie sprawdziałem to co napisałeś, czyli usunąłem tą pierwszą część kodu. I teraz na ftp zostaje wgrana prawidłowa ilość plików, jak wrzucam jeden to wrzuca się jedno a jak dwa to wrzucają się dwa. Tylko problem jest taki że tworzą się podwójne ogłoszenia. Napisze inaczej:
Do formularza dodaje dwa pliki i jak dodam to wszystko do bazy to tworzą się dwa ogłoszenia. Pierwsze z tym zdjęciem pierwszym oraz drugie ogłoszenie z tym zdjęciem drugim. Tak jakby pętla wykonywała zapytanie do bazy dla każdego obrazka z osobna.

@Wilu88 jednak pozostane przy tym co teraz jestem bo nie ma sensu przerabiać coś co już działa, ale ma małe niedociągnięcia.

Wkleje cały kod dla pewności

  1. <?
  2.  
  3.  
  4. function f_rand($ile) {
  5. for ($i=1; $i<=$ile; $i++)
  6. {$l_rand .= dechex(mt_rand());}
  7. return $l_rand;
  8. }
  9.  
  10.  
  11. function resize($foto, $szerokosc, $folder, $napis) {
  12.  
  13. $fotos = "./tmp/".$foto;
  14. $mini = $folder."/".$foto;
  15. if (!file_exists($mini)) {
  16. $img = imagecreatefromjpeg($fotos);
  17. $width = imagesx($img); // szerokosc jpga
  18. $height = imagesy($img); // wysokosc jpga
  19.  
  20. if ($width > $szerokosc || $height > $szerokosc){
  21. //poziomy / szerokosc
  22. if ($width>=$height) {$width_mini = $szerokosc;
  23. $x = $width/$width_mini;
  24. $height_mini = $height/$x;
  25. $litery_wielkosc = $width/60;}
  26.  
  27. //pionowy / wysokosc
  28. if ($width<$height) {$height_mini = $szerokosc;
  29. $x = $height/$height_mini;
  30. $width_mini = $width/$x;
  31. $litery_wielkosc = $height/60;}
  32.  
  33. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  34. }
  35. else
  36. {
  37. $img_mini = $img;
  38. }
  39. $txt = $napis;
  40. $fontpath = realpath('.');
  41. $kolor_tla = imagecolorallocate ( $img, 255, 255, 255 );
  42.  
  43. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width, $height);
  44. imagejpeg($img_mini, $mini, 100);
  45. @imagedestroy($img);
  46. @imagedestroy($img_mini);
  47. }
  48. }
  49.  
  50.  
  51.  
  52. if ($_SESSION["zalogowany"]=="tak") {
  53. include('menu.php');
  54. echo "Ogłoszenia s? najważniejsz? funkcj? tego serwisu. Masz tutaj możliwo?ć dodawania ogłoszeń do bazy danych.<br> Podczas pisania ogłoszenia należy wypełnić wszystkie pola!<br><br>
  55. <h2>UWAGA!! Jeżeli zdjęcie nie zostanie wybrane wtedy ogłoszenie zostanie dodane ze standardowym zdjęciem.</h2>";
  56. $tytul = mysql_real_escape_string (trim($_POST['tytul']));
  57. $data = mysql_real_escape_string (trim($_POST['data']));
  58. $tresc = $_POST['tresc'];
  59. $stan = mysql_real_escape_string (trim($_POST['stan']));
  60. $rodzaj = mysql_real_escape_string (trim($_POST['rodzaj']));
  61. $marka = mysql_real_escape_string (trim($_POST['marka']));
  62. $model = mysql_real_escape_string (trim($_POST['model']));
  63. $rocznik = mysql_real_escape_string (trim($_POST['rocznik']));
  64. $miejsca = mysql_real_escape_string (trim($_POST['miejsca']));
  65. $klimatyzacja = mysql_real_escape_string (trim($_POST['klimatyzacja']));
  66. $rejestracja = mysql_real_escape_string (trim($_POST['rejestracja']));
  67. $cena = mysql_real_escape_string (trim($_POST['cena']));
  68. $ul_plik = mysql_real_escape_string (trim($_POST['foto']));
  69.  
  70.  
  71. if (strlen($tytul)>2) {
  72.  
  73. ////////////////////////////////////////
  74.  
  75. //ustawienie wielkosci zmniejszanych obrazow
  76. $w_1 = 175;
  77. $w_2 = 400;
  78.  
  79.  
  80. if ($_FILES){
  81. foreach( $_FILES as $ul_plik )
  82. {
  83. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  84. {
  85.  
  86. $rand = f_rand(3);
  87.  
  88. $new_name = $rand.".jpg";
  89. $tmp_name = $ul_plik['tmp_name'];
  90. $name = $ul_plik['name'];
  91.  
  92. copy($tmp_name, './tmp/'.$new_name);
  93.  
  94.  
  95.  
  96. resize($new_name,$w_1,"./img/mini/", "");
  97. resize($new_name,$w_2,"./img/", "");
  98.  
  99.  
  100. unlink('./tmp/'.$new_name);
  101.  
  102.  
  103.  
  104. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  105. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  106. ");
  107.  
  108.  
  109. }
  110. else {
  111. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  112. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  113. ");
  114. }
  115. }
  116.  
  117. }
  118.  
  119. echo "
  120. <br><div class=\"potwierdzenie\"><center>Ogłoszenie zostało dodane</center>
  121. </div>";
  122.  
  123.  
  124. }
  125. $data = date("Y-m-d H:i:s");
  126. echo <<<KONIEC
  127. <br>
  128. <form action="" method="post" enctype="multipart/form-data" class="uniForm">
  129.  
  130. <fieldset><legend>Dane Samochodu</legend>
  131. <div class="ctrlHolder">
  132.   <label for="foto">Dodaj zdjęcie do ogłoszenia:</label><br>
  133.   <input type="file" name="foto"> <font size="1" color="red">*To zdjęcie będzie zdjęciem głównym, kolejne nie musz? być dodane</font><br>
  134.   <input type="file" name="foto_dwa"><br>
  135.   <label for="marka">Podaj marke samochodu:</label>
  136.   <input type="text" name="marka" style="width:100%;" class="textInput small" />
  137.   <label for="model">Podaj model samochodu:</label>
  138.   <input type="text" name="model" style="width:100%;" class="textInput small" />
  139.   <label for="rocznik">Podaj rocznik samochodu:</label>
  140.   <input type="text" name="rocznik" style="width:100%;" class="textInput small" />
  141.   <label for="miejsca">Podaj ilo?ć miejsc siedz?cych:</label>
  142.   <input type="text" name="miejsca" style="width:100%;" class="textInput small" />
  143.   <label for="klimatyzacja">Klimatyzacja:</label><br>
  144.   <select id="" name="klimatyzacja"><optgroup label='Wybierz jedn? opcję'><option value='TAK'>TAK</option><option value='NIE'>NIE</option></optgroup></select><br>
  145.   <label for="rejestracja">Podaj rejestracje samochodu*:</label>
  146.   <input type="text" name="rejestracja" style="width:100%;" class="textInput small" />
  147.   </div></fieldset>
  148.   <fieldset><legend>Ogłoszenie</legend>
  149. <div class="ctrlHolder">
  150.   <label for="tytul">Podaj tytuł ogłoszenia:</label>
  151.   <input type="text" name="tytul" style="width:100%;" class="textInput small" />
  152.   <label for="model">Podaj date ogłoszenia:</label>
  153.   <input type="text" name="data" style="width:100%;" class="textInput small" value="$data" />
  154.   <label for="rocznik">Napisz tre?ć ogłoszenia:</label><br>
  155.   <textarea name="tresc" id="editor"></textarea><br>
  156. KONIEC;
  157. ?>
  158. <script type="text/javascript">
  159. //<![CDATA[
  160.  
  161. CKEDITOR.replace( 'editor',
  162. {
  163. fullPage : true
  164. });
  165.  
  166. //]]>
  167. </script>
  168. <?
  169. echo <<<KONIEC
  170. <label for="cena">Podaj cene (zł):</label>
  171.   <input type="text" name="cena" style="width:100%;" class="textInput small" />
  172. </div></fieldset>
  173. <fieldset><legend>Informacje dodatkowe</legend>
  174. <div class="ctrlHolder">
  175. <p class="label">
  176.   Wybierz rodzaj ogłoszenia, oraz czy ma on zostać wy?wietlony na stronie
  177.   </p><table width="100%">
  178.  
  179.  
  180. <tr><td align="middle"><ul class="alternate">
  181.   <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">
  182.   <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>
  183.   </ul></td></tr></table>
  184.   </div></fieldset>
  185.   <div class="buttonHolder">
  186. <input type="submit" value=" wy?lij" class="primaryAction" />
  187. </div>
  188. KONIEC;
  189. }
  190. else {
  191. echo "<div class=\"potwierdzenie\"><center>Proszę się zalogować!</center>
  192. </div>";
  193.  
  194. }
  195.  
  196. ?>
evolucja
Nie chce mi się czytać całego kodu, wybacz. Cały problem w tym, że my tak naprawdę nie wiemy do czego to służy i jak ma działać smile.gif A ty gdybyś popatrzył na klamry w programie który je podświetla(np. notepad++) zauważył byś że zapytania wykonują się w pętli foreach.

  1. if ($_FILES) {
  2. foreach( $_FILES as $ul_plik )
  3. {
  4. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  5. {
  6.  
  7. $rand = f_rand(3);
  8.  
  9. $new_name = $rand.".jpg";
  10. $tmp_name = $ul_plik['tmp_name'];
  11. $name = $ul_plik['name'];
  12.  
  13. copy($tmp_name, './tmp/'.$new_name);
  14.  
  15.  
  16.  
  17. resize($new_name,$w_1,"./img/mini/", "");
  18. resize($new_name,$w_2,"./img/", "");
  19.  
  20.  
  21. unlink('./tmp/'.$new_name);
  22.  
  23.  
  24.  
  25. }
  26. }
  27. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  28. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  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','nazwa','$cena')
  34. "); }
Barcelona
Tak jak napisałeś w moim notepad++ z którego korzystam mam podświetlone klamry smile.gif

A więc przeniosłem zapytanie po za pętle foreach i teraz dodaje tylko jedno ogłoszenie do bazy danych smile.gif

Ale jednak teraz mam problem z opcją gdy zdjęcie nie jest dodane w formularzu.
Zasada działania jest taka, jak nie jest zadna fotka wybrana wtedy do bazy zostaje dodane ogłoszenie z nazwą domyślnej fotki która jest juz na ftp. I teraz jak nie wybiore zadnej fotki to tworzą się dwa ogłoszenia z ta domyślną (to chyba jest zależne od ilości inputów w formularzu). Tak, wiem identyczna sprawa jak w przypadku wyżej, zapytanie znajduje się w pętli, ale jednak jak to zrobić po za pętlą żeby skrypt wiedział że nie została wybrana żadna fotka i dodał jedno ogłoszenie z domyślną nazwą.
Mam tam warunek if( is_uploaded_file( $ul_plik['tmp_name'] ) ) i jak jest spełniony wtedy dodaje się ogloszenie z fotą a jak nie to z domyślną nazwą tylko to wszystko znajduje się w foreach.
Aktualnie ta część kodu wygląda tak (przeniosłem zapytanie po za foreach)

  1. if ($_FILES){
  2. foreach( $_FILES as $ul_plik )
  3. {
  4. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  5. {
  6.  
  7. $rand = f_rand(3);
  8.  
  9. $new_name = $rand.".jpg";
  10. $tmp_name = $ul_plik['tmp_name'];
  11. $name = $ul_plik['name'];
  12.  
  13. copy($tmp_name, './tmp/'.$new_name);
  14.  
  15.  
  16.  
  17. resize($new_name,$w_1,"./img/mini/", "");
  18. resize($new_name,$w_2,"./img/", "");
  19.  
  20.  
  21. unlink('./tmp/'.$new_name);
  22.  
  23.  
  24. }
  25. else {
  26. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  27. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  28. ");
  29. }
  30. }
  31.  
  32. }
  33. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  34. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  35. ");
evolucja
Przecież dałem ci już poprawioną i działającą funkcję w poprzednim moim poście, to ty dalej kombinujesz.
Barcelona
Racja, przepraszam najmocniej smile.gif Myślałem że wskazujesz mi miejsce błędu.

Już wystawiłem podziekowanie, ale jeszcze raz wielkie dzieki bo było to bardzo ważne dla mnie.

Jeszcze mam takie małe pytanko.
Jak z tej pętli wydobyć nazwy wszystkich plików bo chce w tabeli w bazie danych zapisywać te nazwy i wyświetlać (jako obrazki) przy konkretnym ogłoszeniu.
Ten pierwszy obrazek $ul_plik jest zapisywany jako $rand w bazie danych, a nie wiem jak to zrobić z kolejnymi.

--------------
Wracam z editem:
@evolucja działa prawie dobrze. Skrypt nie wykrywa że nie został dodany obrazek i dodaje puste pole w bazie.
Funkcja rand odpowiada za tworzenie unikatowych nazw plików, i tutaj nie wykrywa że nie ma pliku i nie randuje i daje pustą wartość. Próbowałem nawet w phpmyadmin zrobić domyślną wartość dla pola "obrazek" ale i tak dodawał się pusty rekord.
Wilu88
No to w tym drugim zapytaniu przypisz kolumnie obrazek jakąś wartość która będzie zawsze wysyłana gdy nie będzie obrazka.


  1.  
  2. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  3.  
  4. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','obrazek','$cena')
  5.  
  6. ");


W tym wypadku powinien przesłać wartość 'obrazek' do kolumny obrazek.
Barcelona
@Wilu88 ale ja już mam napisane takie zapytanie

  1. else {
  2. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  3. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  4. "); }


Ale nie wiedzieć czemu nie dodaje tej wartości
Wilu88
A jakiego typu masz kolumnę która przechowuje nazwę obrazka?? Bo jeśli inna niż VARCHAR lub TEXT to masz odpowiedź dlaczego.
Barcelona
typ tabeli jest varchar. Tabela jest dobrze zrobiona. Jak dodaje zdjęcie do ogłoszenia to w bazie jest dodawana nazwa pliku w kolumnie "obrazek", dopiero jak nie daje fotki to dodaje się puste pole.
Coś jest źle w kodzie.
Wilu88
A jakbyś przed tym zapytaniem zadeklarował zmienną:
$zmienna="obrazek";

i później w zapytaniu zamiast 'nazwa' wrzucił '$zmienna' może to coś zmieni, chociaż wątpię.
Barcelona
Cytat(Wilu88 @ 22.07.2010, 19:29:28 ) *
A jakbyś przed tym zapytaniem zadeklarował zmienną:
$zmienna="obrazek";

i później w zapytaniu zamiast 'nazwa' wrzucił '$zmienna' może to coś zmieni, chociaż wątpię.


To nic nie pomoże. Skrypt po prostu z niewiadomych dla mnie przyczyn nie wykonuje tego drugiego zapytania, w którym jest podana domyślna nazwa obrazka
evolucja
Ok wróciłem smile.gif
  1. if ($_FILES){

Co to ma być? Co to ma sprawdzać?


  1. if(empty($_FILES)) {
Barcelona
Ciesze się z powrotu twego smile.gif

dałem tak

  1. if(empty($_FILES)) {
  2. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  3. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  4. "); }


Ale niestety i to nie dało pożądanego rezultatu sciana.gif

  1. if ($_FILES){

Założenie było takie żeby sprawdzało czy zmienna istnieje, jak istenieje to wykonuje zapytanie z nawą pliku.
evolucja
Dlaczego ty wszystko robisz tak jak niepotrzeba smile.gif Daje ci odpowiednie fragmenty do zmienienia, to ty dopisujesz jakieś swoje wynalazki smile.gif Dodałem również system który ułatwi diagnozowanie. W przypadku problemów podaj też kod który został zwrócony, coś w stylu "012323".
  1. echo "0";
  2. if (!empty($_FILES)) {
  3. echo "1";
  4. foreach( $_FILES as $ul_plik )
  5. {
  6. echo "2";
  7. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  8. {
  9. echo "3";
  10.  
  11. $rand = f_rand(3);
  12.  
  13. $new_name = $rand.".jpg";
  14. $tmp_name = $ul_plik['tmp_name'];
  15. $name = $ul_plik['name'];
  16.  
  17. copy($tmp_name, './tmp/'.$new_name);
  18.  
  19.  
  20.  
  21. resize($new_name,$w_1,"./img/mini/", "");
  22. resize($new_name,$w_2,"./img/", "");
  23.  
  24.  
  25. unlink('./tmp/'.$new_name);
  26.  
  27.  
  28.  
  29. }
  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.  
  35. } else {
  36. echo "4";
  37. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  38. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  39. "); }
  40. echo "5";
Barcelona
A ja już tak mam że kombinuje.
Cały czas dodaje puste pole.

kod błędu 01225 smile.gif Z czego wynika że omija 4

________
Edit:
Rozważam nawet takie głupie rozwiazanie, żeby sprawdzać czy zmienna $rand jest pusta. Jak jest pusta to żeby dawało domyślną nazwe
evolucja
No to może tak tongue.gif
  1. echo "0";
  2. foreach($_FILES as $file) {
  3. if($file["error"] != UPLOAD_ERR_OK) { $error = true; }
  4. }
  5.  
  6. if (!$error) {
  7. echo "1";
  8. foreach( $_FILES as $ul_plik )
  9. {
  10. echo "2";
  11. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  12. {
  13. echo "3";
  14.  
  15. $rand = f_rand(3);
  16.  
  17. $new_name = $rand.".jpg";
  18. $tmp_name = $ul_plik['tmp_name'];
  19. $name = $ul_plik['name'];
  20.  
  21. copy($tmp_name, './tmp/'.$new_name);
  22.  
  23.  
  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.  
  32.  
  33. }
  34. }
  35. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  36. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  37. ");
  38.  
  39. } else {
  40. echo "4";
  41. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  42. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  43. "); }
  44. echo "5";
Barcelona
Teraz w drugą stronę: Dodaje się domyślna nazwa niezależnie od tego czy jest robiony upload czy nie.
Za każdym razem wypluwa kod: 045.

evolucja
Cholera, a sam nie możesz próbować różnych technik sprawdzania czy ktoś zuploadował plik? Weź mi printnij tablicę $_FILES bo ja w ogóle nie wiem jak to wygląda...
Barcelona
Próbowałem to na mnie krzyczałeś smile.gif Nie no żartuje, wierz mi że próbuje, ale nie wychodzi mi to zabardzo.
Zrobiłem print tablicy files.
Jest to przypadek kiedy nie dodaje foty:
  1. Array ( [foto] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) [foto_dwa] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )


Tutaj jak dodaje jedną fote:

  1. Array ( [foto] => Array ( [name] => 745626764_5.jpeg [type] => image/jpeg [tmp_name] => /tmp/phpDdXAoZ [error] => 0 [size] => 137403 ) [foto_dwa] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )


A tutaj jak dodaje dwie:
W tym przypadku jak wszystkie pola input type"file" są wypełnione to wypluwa taki kod: 0123235 i do bazy wysyła nazwe pliku, więc wszystko jest niby dobrze, ale jak dodam tylko jeden plik to już dodaje domyślną nazwę (sorki za to niedopatrzenie, powinienem to od razu wychwycić)

A tablica wygląda tak:

  1. Array ( [foto] => Array ( [name] => 745626764_5.jpeg [type] => image/jpeg [tmp_name] => /tmp/phpBqMGMh [error] => 0 [size] => 137403 ) [foto_dwa] => Array ( [name] => 745626764_4.jpeg [type] => image/jpeg [tmp_name] => /tmp/phpANHEwx [error] => 0 [size] => 179712 ) )
evolucja
Cholerka, zdecyduj się chłopie. Post temu mówiłeś że non stop dodaje domyślną nazwę, teraz, że znowu działa...

Z ostatniego postu sądzę, iż działa tak:
1. jak nie dodasz zdjęć, wysyła domyślną nazwę
2. jak dodasz jedno zdjęcie również domyślną wysyła
3. jak dodasz oba zdjęcia to wysyła dobre

Jeśli tak, to łap kod z poprawieniem punktu 2:
  1. echo "0";
  2. foreach($_FILES as $file) {
  3. if($file["error"] == UPLOAD_ERR_OK) { $uploaded = true; }
  4. }
  5.  
  6. if ($uploaded) {
  7. echo "1";
  8. foreach( $_FILES as $ul_plik )
  9. {
  10. echo "2";
  11. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  12. {
  13. echo "3";
  14.  
  15. $rand = f_rand(3);
  16.  
  17. $new_name = $rand.".jpg";
  18. $tmp_name = $ul_plik['tmp_name'];
  19. $name = $ul_plik['name'];
  20.  
  21. copy($tmp_name, './tmp/'.$new_name);
  22.  
  23.  
  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.  
  32.  
  33. }
  34. }
  35. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  36. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','$rand','$cena')
  37. ");
  38.  
  39. } else {
  40. echo "4";
  41. INSERT INTO ogloszenia (tytul, data, tresc, stan, rodzaj, marka, model, rocznik, miejsca, klimatyzacja, rejestracja,obrazek,cena)
  42. VALUES ('$tytul','$data','$tresc','$stan','$rodzaj','$marka','$model','$rocznik','$miejsca','$klimatyzacja','$rejestracja','nazwa','$cena')
  43. "); }
  44. echo "5";
Barcelona
Wielkie sorki, błąd z mojej stronki, sprawdziłem wszystkie opcje prócz tej z uploadem wszystkich możliwych pól i dlatego napisałem że za każdym razem dodaje domyślną nazwę. Teraz skrypt działa jak należy. Dodaje fotki na serwer razem z miniaturami, oraz dodaje do bazy tak jak należy. Wielkie dzięki za poświęcony czas thumbsupsmileyanim.gif

Jeszcze mam takie małe pytanie na marginesie.
Jak printuje tablice $rand to pojawiają mi się wszystkie nazwy plików jakie zostały wrzucone. Chciałem osobno wyświetlić nazwę każdego pliku ale jak robie

  1. echo $rand[0];

to niestety niestety nie wyświetla mi tej nazwy.

Konkretnie chodzi mi o to że te nazwy kolejnych plików będę chciał również zapisywać w bazie MySQL tylko mam problem z wyodrębnieniem każdej nazwy z osobna.

Pozdrawiam i jeszcze raz dzięki
evolucja
A ja jestem wrózką i sam sobie wymyślę jak ta tablica $rand wygląda... weź mi ją printnij.
Barcelona
Sorki, $rand nie jest tablicą tylko zmienną. Po prostu w pętli generuje nazwę dla plików.

W pętli zamieściłem wyświetlanie tej zmiennej i wyświetliło mi na stronie obydwie nazwy plików.
Zrobiłem to tak:

  1. foreach( $_FILES as $ul_plik )
  2. {
  3. echo "2";
  4. if( is_uploaded_file( $ul_plik['tmp_name'] ) )
  5. {
  6. echo "3";
  7.  
  8. $rand = f_rand(3);
  9.  
  10. $new_name = $rand.".jpg";
  11. $tmp_name = $ul_plik['tmp_name'];
  12. $name = $ul_plik['name'];
  13.  
  14. copy($tmp_name, './tmp/'.$new_name);
  15.  
  16.  
  17.  
  18. resize($new_name,$w_1,"./img/mini/", "");
  19. resize($new_name,$w_2,"./img/", "");
  20.  
  21.  
  22. unlink('./tmp/'.$new_name);
  23.  
  24.  
  25. echo $rand;
  26.  


W ten sposób wyświetla mi nazwę plików w jednej linni i wygląda ona tak:

012337d25e547662c0d32382d723231eb6228c395814f933ae30215 (są to dwie nazwy plików)

Zależy mi żeby każdą nazwę przypisać innej zmiennej, np:

  1. $foto_jeden = nazwa pierwszej fotki;
  2. $foto_dwa = nazwa drugiej fotki;
  3. $foto_trzy = nazwa trzeciej fotki;
  4. $foto_cztery = nazwa czwartej fotki;
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.