Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][php]usuwanie zdjec cd
olszam
post 4.02.2012, 16:49:46
Post #1





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

Ostrzeżenie: (0%)
-----


ktoś mi może wyjaśnić czemu mi nie usuwa zdjęcia ale rekord z bazy to już usunie.
w bazie mam kolumne nazwapliku ale tam to się tam znajduje cała ścieżka pliku
np.test/danezawody/Hakumen_(Emblem,_Crest).png
  1. <?php
  2. require 'polacz.php';
  3. mysql_query("SET NAMES utf8");
  4. mysql_query("SET CHARACTER SET utf8");
  5. mysql_query("SET collation_connection = utf8_polish_ci");
  6.  
  7. $idDaneZawody = isset($_GET['id']) ? (int)$_GET['id'] : NULL; //sprawdzaie czy zmienna id została przekazana w adresie
  8. if($idDaneZawody != NULL && is_numeric($idDaneZawody)){ //jeśli $idDaneZawody nie równa się NULL i jest liczbą
  9. $zapytanie = mysql_query("SELECT * FROM danezdjecia WHERE iddanezawody=".$idDaneZawody); //zapytanie wyciągające wszystko z bazy o podanym ID
  10. $array = mysql_fetch_array($zapytanie); //zapis wyniku do tablicy asocjacyjnej
  11. $NazwaZdjecia = $array['nazwapliku']; // wyciąganie z bazy nazwe zdjęcia
  12. unlink($NazwaZdjecia); //usuwa plik z serwera
  13. //mysql_query("DELETE FROM danezdjecia WHERE iddanezdjecia = ".$idDaneZawody); <<<zakomentowałem tu ponieważ nie chce już parę razy usuwać i znów dodawać tego samego
  14. header('Location: usunzdjdanezawody.php'); // po zakończeniu aktualizacji bazy, przekieruje nas do strony głównej.
  15. }
  16.  
  17. //Teraz w tym miejscu lista rozwijana:
  18. $sql3 = "SELECT * FROM danezawody WHERE faza = 0";
  19. $rezultat2 = mysql_query($sql3);
  20. echo '<form action="usunzdjdanezawody.php" method="post">';
  21. echo 'danezawody: <select name="iddanezawody">';
  22. while ($Wiersz2 = mysql_fetch_array($rezultat2)){
  23. if($Wiersz2['iddanezawody'] == $idDaneZawody){
  24. echo '<option value="'.$Wiersz2['iddanezawody'].'" selected="selected">'.$Wiersz2['rodzajzawodow'].' w '.$Wiersz2['miejscezawodow'].'</option>';}
  25. else {
  26. echo '<option value="'.$Wiersz2['iddanezawody'].'">'.$Wiersz2['rodzajzawodow'].' w '.$Wiersz2['miejscezawodow'].'</option>';}
  27. }
  28. echo '</select>
  29. <input type="submit" name="sprawdz" value="sprawdz" />
  30. </form>';
  31. //Tutaj wyświetlić zdjęcia
  32. if(isset($_POST['sprawdz'])){
  33. $zdj=(int)$_POST['iddanezawody'];
  34. $sql4="select * from danezdjecia where iddanezawody=$zdj";
  35. $rezultat=mysql_query($sql4);
  36. while($wiersz = mysql_fetch_array($rezultat)){
  37.  
  38. echo '<br/><img src="'.$wiersz['nazwapliku'].'" width="200" height="200"><br/>
  39.  
  40. '.$wiersz['opis'].'<br/><br/>
  41.  
  42. <a href="usunzdjdanezawody.php?id='.$wiersz['iddanezdjecia'].'">USUŃ</a>';
  43. }
  44. }
  45. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Chelo
post 4.02.2012, 18:00:08
Post #2





Grupa: Zarejestrowani
Postów: 178
Pomógł: 8
Dołączył: 19.03.2007

Ostrzeżenie: (0%)
-----


Używaj intval, nie int. Skoro unlink nie usuwa pliku, to sprawdź, czy $NazwaZdjecia zawiera dobrą ścieżkę, mysql_fetch_array możesz zmienić na mysql_fetch_assoc.
Go to the top of the page
+Quote Post
mortus
post 4.02.2012, 19:41:48
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Najpierw sprawdź, czy pod zmienną $NazwaZdjęcia rzeczywiście znajduje się ścieżka do pliku na serwerze i czy taki plik istnieje, czyli czy jest plikiem is_file(), później sprawdź prawa dostępu do pliku is_writable() i ewentualnie zmień je na 0666 chmod(), i dopiero wtedy spróbuj usunąć plik za pomocą unlink(). Przeglądnij komentarze w manualu dla funkcji unlink(). Upewnij się, że ścieżka jest właściwa dla systemu operacyjnego (chodzi o \ lub /).

Poza tym po header() obowiązkowo użyj exit(), bo cała reszta kodu zostanie wykonana mimo przekierowania.

@Chelo: W tym przypadku rzutowanie zadziała dokładnie tak samo, jak intval(). Poza tym rzutowanie jest o 300-650% szybsze i jest uważane za "lepszą praktykę".

Ten post edytował mortus 4.02.2012, 19:50:54
Go to the top of the page
+Quote Post
17misiek09
post 4.02.2012, 22:14:19
Post #4





Grupa: Zarejestrowani
Postów: 137
Pomógł: 8
Dołączył: 16.12.2011
Skąd: Kraków

Ostrzeżenie: (0%)
-----


a może zmienna $NazwaZdjecia zawiera dosłownie nazwę zdjęcia?
przed zmienna podaj nazwę folderu z którego chcesz usunąć zdjęcie.


--------------------
Lombi !! kłaniam Ci się od 00:45 dnia 2012-01-27 !! :)
Serdeczne dzięki !! :)

zespół na wesele?wejdź :)
ręcznie robione ozdoby, obrazy, figurki i wiele innych :) zapraszam :)
Go to the top of the page
+Quote Post
toaspzoo
post 4.02.2012, 22:23:48
Post #5





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


A może nazwa pliku zostala zapisana jako ta pierwotna (w bazie, np. : " DSC0001.jpg ") a skrypt zmieniał nazwy na inne w stylu np. " foto_xxx.jpg "



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

LS Easter egg <
Go to the top of the page
+Quote Post
17misiek09
post 4.02.2012, 23:04:55
Post #6





Grupa: Zarejestrowani
Postów: 137
Pomógł: 8
Dołączył: 16.12.2011
Skąd: Kraków

Ostrzeżenie: (0%)
-----


aaaaa ha biggrin.gif
juz wiem wink.gif

sprawa wyglada tak - zle robisz ze dodajesz do bazy danych caly link do zdjecia - calkowicie nie potrzebnie.
przy usuwaniu plikow nie jest wazny caly link, wystarczy podac katalog+nazwe zdjecia

takze dodawac do bazy danych mozesz cos takiego "/katalog/nazwazdjecia.jpg"
i usuwac w ten sam sposob przez unlink


--------------------
Lombi !! kłaniam Ci się od 00:45 dnia 2012-01-27 !! :)
Serdeczne dzięki !! :)

zespół na wesele?wejdź :)
ręcznie robione ozdoby, obrazy, figurki i wiele innych :) zapraszam :)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:40