Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sprawdzanie pola formularza z kolumną bazy danych
Forum PHP.pl > Forum > Przedszkole
enemyofarcha
Witam, mam mały problem. Przy wysyłaniu zdjęć chcę żeby wyskakiwał mi błąd jeżeli plik o takiej nazwie jest na serwerze. Wszystko jest pięknie, tylko sprawdza mi nazwe pliku tylko z pierwszym wierszem tabeli. Jak to ugryźć żeby sprawdzał wszystkie komórki z kolumny [zdj_plik].

Na chwilę obecną funkcja wygląda tak:
  1. if ($_POST['dodaj_zdjecie']) {
  2.  
  3. $ilosc = $_POST["ilosc"];
  4. for($i=0; $i < $ilosc; $i++) {
  5.  
  6. $sprwawdz = "SELECT * FROM fiona_zdj_dane";
  7. $wynik = mysql_query($sprwawdz);
  8. while ($r1 = mysql_fetch_array($wynik)) {
  9.  
  10. $plikzbazy = $r1['zdj_plik']; }
  11.  
  12.  
  13.  
  14.  
  15. if (strtolower($_FILES['zdjecie'.$i]['name']) != strtolower($plikzbazy)
  16. && (!empty($_FILES['zdjecie'.$i]['name'])) && ($_FILES['zdjecie'.$i]['type'] =="image/jpeg")) {
  17.  
  18. $zdjecie_dodane[$i] = '<span style="color:#2a9834;">ZDJĘCIE:</span> '.strtolower($_FILES['zdjecie'.$i]['name']).' <span style="color:#2a9834;">(</span>'.$_POST['tytul'.$i].'<span style="color:#2a9834;">) zostało dodane.</span><br/><br/>'."\n";
  19.  
  20. // wysylanie pliku -->
  21.  
  22. $add="../zdjecia/".$_FILES['zdjecie'.$i]['name']; // Ścieszka gdzie pliki będą wysyłane.
  23.  
  24. //echo $add;// sprawdź czy ścieżka jest dobra.
  25.  
  26. if(move_uploaded_file ($_FILES['zdjecie'.$i]['tmp_name'],$add)) {
  27. chmod("$add",0777); } else {
  28. echo "Coś jest nie tak. Skontaktuj się z administratorem."; exit; }
  29. $img = imagecreatefromjpeg($add); $size = GetImageSize($add);
  30.  
  31. if(($size[0] <= 640) && ($size[1] <= 640))
  32.  
  33. { $max_width = $size[0]; $max_height = $size[1]; }
  34. elseif ($size[0] > $size[1]){
  35. $max_width = 640; $max_height = (int)(640 * $size[1] / $size[0]); }
  36.  
  37. else { $max_width = (int)(640 * $size[0] / $size[1]); $max_height = 640; }
  38.  
  39. $img_mini = imagecreatetruecolor($max_width, $max_height);
  40.  
  41. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $max_width, $max_height, $size[0], $size[1]);
  42. ImageJpeg($img_mini,$add,100);
  43.  
  44. /*///* Tworzenie miniaturki *///*/
  45.  
  46. if(($size[0] <= 100) && ($size[1] <= 100))
  47.  
  48. { $n_width = $size[0]; $n_height = $size[1]; }
  49. elseif ($size[0] > $size[1]){
  50. $n_width = 100; $n_height = (int)(100 * $size[1] / $size[0]); }
  51.  
  52. else { $n_width = (int)(100 * $size[0] / $size[1]); $n_height = 100; }
  53. // Rozmiar miniaturki.
  54.  
  55. $tsrc="../zdjecia/"."tb_".$_FILES['zdjecie'.$i]['name']; // Ścieszka gdzie będą miniaturki plików.
  56.  
  57. //echo $tsrc;// sprawdź czy ścieżka jest dobra.
  58.  
  59. $im=ImageCreateFromJPEG($add); $width=ImageSx($im); $height=ImageSy($im); $newimage=imagecreatetruecolor($n_width,$n_height);
  60.  
  61. imagecopyresampled($newimage,$im,0,0,0,0,$n_width,$n_height,$width,$height); ImageJpeg($newimage,$tsrc,100); chmod("$tsrc",0777);
  62.  
  63.  
  64. // dodawanie do bazy -->
  65.  
  66. $zdjecie = ($_FILES['zdjecie'.$i]['name']);
  67. $opis = trim($_POST['tytul'.$i]);
  68. $kat = trim($_POST['kategorie']);
  69. $pod = trim($_POST['podkategorie']);
  70. $data = trim($_POST['data']);
  71.  
  72. $sql = "INSERT INTO fiona_zdj_dane (zdj_opis, zdj_kat, zdj_plik, zdj_pod, zdj_data) VALUES ('$opis', '$kat', '$zdjecie', '$pod', '$data')";
  73. $dodaj_zdjecie = mysql_query($sql)or die ('blad: ' . mysql_error());
  74.  
  75. } else {
  76.  
  77. if (!empty($_FILES['zdjecie'.$i]['name']) && ($_FILES['zdjecie'.$i]['type'] =="image/jpeg")):
  78. $jest_plik[$i] = '<span style="color:#c91414;">ZDJĘCIE:</span> '.strtolower($_FILES['zdjecie'.$i]['name']).' <span style="color:#c91414;">(</span>'.$_POST['tytul'.$i].'<span style="color:#c91414;">) nie zostało dodane. Taka sama nazwa pliku!</span><br/><br/>'."\n";
  79.  
  80. elseif (!empty($_FILES['zdjecie'.$i]['name']) && ($_FILES['zdjecie'.$i]['type'] != "image/jpeg")):
  81. $zly_format[$i] = '<span style="color:#8c0101;">Zły format pliku </span>'.strtolower($_FILES['zdjecie'.$i]['name']).'. <span style="color:#8c0101;">Dopyszczalny format plików to JPEG</span><br/><br/>'."\n";
  82.  
  83. else:
  84. $brak_pliku[$i] = '<span style="color:#c96014;">Nie wybrano pliku w '.$_FILES['zdjecie'.$i]['name'] = $i +"1".' miejscu.</span><br/><br/>'."\n";
  85. endif;
  86. }
  87. }
luck
Nie czytałem całego posta, bo już na początku dzieją się jakieś cuda. Tak chcesz sprawdzać wszystkie rekordy? Po co pobierasz wszystkie zdjęcia z bazy i jedziesz po nich pętlą? Masakra! Nie lepiej zrobić po prostu coś w stylu:
  1. $liczba_zdjec = "SELECT COUNT(*) FROM fiona_zdj_dane WHERE zdj_plik=\"". mysql_real_escape_string($_FILES['zdjecie'.$i]['name'])) ."\"";
Jeśli wynik zapytania == 0, to jedziesz dalej, jeśli > 0 zgłaszasz błąd i kończysz. O ile oczywiście chociaż mniej więcej zrozumiałem o co Ci chodziło.
enemyofarcha
luck Jednak nie do końca zrozumiałeś... Musi sprawdzać nazwę (pliku). Przykładowo.

Wysyłamy plik bedziedobrze.jpg
to musi sprawdzić czy w bazie danych w całej kolumnie zdj_plik istnieje taka nazwa...
erix
Możesz powiedzieć, po co tak?

Nie lepiej zapisywać pliki korzystając z ID w nazwie i dopiero potem odwoływać się adekwatnie do tego, co masz w bazie?

Poza tym, ~luck dobrze prawi, tylko nie zrozumiałeś jego wypowiedzi, znasz podstawy SQL?
enemyofarcha
luck, jednak trochę mi pomogłeś winksmiley.jpg zrobiłem to troszeczke inaczej, ale działa.

  1. $liczba_zdjec = "SELECT * FROM fiona_zdj_dane WHERE zdj_plik='".strtolower($_FILES['zdjecie'.$i]['name'])."'";
  2. $wynik = mysql_query($liczba_zdjec);
  3. while ($r1 = mysql_fetch_array($wynik)) {
  4.  
  5. $plikzbazy = $r1['zdj_plik'];
  6. }


Także, trochę mnie naprowadziła Twoja wypowiedź. 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.