Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]kasowanie pliku
Forum PHP.pl > Forum > Przedszkole
SUICIDE
Posiadam formularz dodawania bannerów. Wszystko działa na zasadzie pobrania grafiki, zakodowania jej w md5, wrzucenia do katalogu "pliki" oraz przesłania danych z formularza do bazy danych. Pola formularza to: id, tytul, opis, www, pojemnosc, nazwa, typ, autor, data, godz.
Jeśli chodzi o dodawanie chodzi bardzo dobrze.
Problem pojawia się z kasowaniem.
rekord danego id kasuje ładnie. Ale problem pojawia się ze skasowaniem odpowiedniego pliku. Nie bardzo wiem jak to ugryść.

  1. else if($_GET['a']=='del'){
  2. $id = $_GET['id'];
  3. @mysql_query("DELETE FROM polecane WHERE id='$id'")or die ("Błąd zapytania DELETE");
  4.  

oczywiście wiem że funkcja odpowiadająca za kasowanie pliku to unlink(wartosc).
Mając id danego wpisu musiałbym pobrać nazwę pliku która jest zapisana w kolumnie "nazwa" bazy danych.
Mógłbym prosić o jakąś podpowiedź?
nospor
Cytat
Mając id danego wpisu musiałbym pobrać nazwę pliku która jest zapisana w kolumnie "nazwa" bazy danych.

No i jaki masz problem? Nie wiesz jak się rekord z bazy pobiera?
Spawnm
Najpierw pobierasz nazwę pliku do kasacji, potem kasujesz rekord z bazy wink.gif
SUICIDE
  1. $p = @mysql_query("SELECT nazwa FROM polecane WHERE id='$id'")
  2.  
  3. unlink($x);
  4.  
  5. @mysql_query("DELETE FROM polecane WHERE id='$id'")or die ("Błąd zapytania DELETE");



Rozumiem że ten sposób też będzie poprawny?
nospor
mysql_fetch_assoc zwraca tablicę.... trudno ci będzie skasować tablicę..... Musisz wpierw z tej tablicy pobrać zawartosc pola i dopiero to kasować. Czemu nie czytacie dokumentacji tylko strzelacie na chybił trafił anuż sę uda...?
SUICIDE
  1.  
  2. $p = @mysql_query("SELECT nazwa FROM polecane WHERE id='$id'")
  3. $x = mysql_result($p)
  4.  
  5. unlink($x);
  6.  
  7. @mysql_query("DELETE FROM polecane WHERE id='$id'")or die ("Błąd zapytania DELETE");



Rozumiem że ten sposób jest teraz jak najbardziej prawidłowy czy dalej jestem w błędzie ?
nospor
Jeśli
var_dump($x);
wyświetla ci nazwę pliku do skasowania, znaczy że masz dobrze pobrane smile.gif
Tamten sposób też był prawie dobry. Jak ci pisałem, wystarczyło tylko z tej tablicy pobrać wartosc o czym ty zapomniałeś.
SUICIDE
no tak w sumie mogłem jeszcze zastosować $x['nazwa'];
Tylko teraz problem mam inny.

Plik który zostaje dodany do bazy danych ma też w nazwie katalog. Czyli po dodaniu rekordu wygląda to tak" /bannery/asf3253fgsdag325.png"

Teraz abym zastosował funkcję "unlink" musiałbym pozbyć się katalogu i sleshy.

Podpowiedź czy dobrze myślę. Funkcja replace?

Ewentualnie pozbyć się dodawania katalogu nazwy pliku.
SUICIDE
  1. $id = $_GET['id'];
  2. $p = @mysql_query("SELECT nazwa FROM polecane WHERE id='$id'");
  3. var_dump($x['nazwa']);
  4. $plik =basename($x['nazwa']);
  5. unlink($folder.$plik);
  6.  
  7.  


Wyskakujący błąd:

Warning: unlink(567959ac374dc59ec40d65d9cb5d2745.png) [function.unlink]: No such file or directory in moja/sciezka/nazwapliku.php on line 272


Przepraszam ale niestety nie potrafię tego sam rozwiązać.
nospor
Komunikat informuje cię, że nie ma pliku 567959ac374dc59ec40d65d9cb5d2745.png
Albo go faktycznie nie ma, albo szukasz go w złym katalogu. Proste.

ps: widać, że zmienna $folder jest pusta. Podejrzewam, że tak być nie powinno
SUICIDE
Dziękuję Tobie bardzo mocno.
Pomogłeś mi bardzo w rozwiązaniu problemu.
Jeśli można chciałbym umieścić dobre rozwiązanie dla osób szukających podobnego problemu.


  1. else if($_GET['a']=='del'){
  2. $id = $_GET['id'];
  3. $p = @mysql_query("SELECT nazwa FROM polecane WHERE id='$id'");
  4. $plik =basename($x['nazwa']);
  5. $folder1 = ('../bannery/');
  6. unlink($folder1.$plik);
  7.  
  8.  
  9. @mysql_query("DELETE FROM polecane WHERE id='$id'")or die ("Błąd zapytania DELETE");
  10. echo "<div style='border:1px solid silver;border-radius:3px;width:300px;height:30px;background-color: rgba(255, 50, 50, 0.5);filter: alpha(opacity=20);opacity:20;margin-left:25%;'>
  11. <p style='color:white;font-family-verdana;line-height:5px;margin-left:22%;'>Zdjęcie zostało usunięte</p>
  12. </div>";
  13.  
  14. }


+ pomógł dla Ciebie.
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.