Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> unlink w pętli - kilka plików, jak zastosować unlik dla kasowania kilku plików
lukas0987
post 21.01.2007, 23:56:42
Post #1





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 13.04.2006

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


  1. <?php session_start();?>
  2. <?php include ('../nagloweklog.php');?>
  3.  
  4.  
  5. <?php
  6. if ($send=='usun'){
  7. include ('../../mysql_connect.php');
  8.  
  9. $liczba=$_POST["zdid"];
  10. for($i=0;$i<=count($liczba);$i++)
  11. {
  12. $zdid=$liczba[$i];
  13. $sql="DELETE FROM zdjecia WHERE zdid = '$zdid' LIMIT 1";
  14. $wynik=mysql_query($sql);
  15. unlink('../photo/$zdid.mini.jpg');
  16. unlink('../photo/$zdid.jpg');
  17. }
  18.  
  19. echo "<font class="style5">Usunięto - <a href="index.php">Lista</a>";
  20. }
  21. ?>


Chcę usunąć kilka zdjęć w galerii za pomocą formularza z buttonami typu checkbox.
Usuwanie z bazy danych działa idealnie. Ale mam kłopoty z kasowanie plików na serwerze.
$zdid to indywidualna nazwa pliku.
$zdid.mini.jpg - to miniaturka w tym samym katalogu

niestety coś mi to nie chce działać. ma ktoś jakieś propozycję?
Z góry dziękuję za sugestie.
Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post 22.01.2007, 08:35:39
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




polecam dokladna lekturę tego:
http://pl.php.net/manual/pl/language.types.string.php
by dowiedziec się jakie ciapki parsuja zmienne.

ps: przenosze tam gdzie miejsce


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lukas0987
post 22.01.2007, 17:50:15
Post #3





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 13.04.2006

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


  1. <?php session_start();?>
  2. <?php include ('../nagloweklog.php');?>
  3.  
  4.  
  5. <?php
  6.  
  7. if ($send=='usun'){
  8. include ('../../mysql_connect.php');
  9.  
  10. $liczba=$_POST["zdid"];
  11. for($i=0;$i<=count($liczba);$i++)
  12. {
  13. $zdid=$liczba[$i];
  14. $sql="DELETE FROM zdjecia WHERE zdid = '$zdid' LIMIT 1";
  15. $wynik=mysql_query($sql);
  16. unlink("../photo/$zdid.jpg");
  17. unlink("../photo/$zdid.mini.jpg");
  18. }
  19.  
  20. echo "<font class="style5">Usunięto - <a href="index.php">Lista</a>";
  21. }
  22.  
  23. ?>



Zanurzyłem się w lekturę. I nie bardzo rozumiem to.
Co w pierwszym skrypcie było nie tak?
Umieścić zmienną w {}?
Ja zamieniłem linijkę:
unlink('../photo/$zdid.jpg');
na:
unlink("../photo/$zdid.jpg");

Narazie wszystko jest fajnie. Usuwa mi pliki z dysku twardego, ale pojawia mi się błąd:
Warning: unlink(../photo/30.jpg): No such file or directory in c:\usr\krasnal\www\public_html\galeria_zdjecia\usun2.php on line 14

Warning: unlink(../photo/30.mini.jpg): No such file or directory in c:\usr\krasnal\www\public_html\galeria_zdjecia\usun2.php on line 15

Jakby ktoś miał chwilkę to bedę wdzięczny za pomoc.
Go to the top of the page
+Quote Post
nospor
post 22.01.2007, 18:33:43
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Zanurzyłem się w lekturę. I nie bardzo rozumiem to. Co w pierwszym skrypcie było nie tak? Umieścić zmienną w {}? Ja zamieniłem linijkę: unlink('../photo/$zdid.jpg'); na: unlink("../photo/$zdid.jpg");

no wlasnie chodzilo mi o apostrofy '. zmienne nie sa w nich parsowane. nalezalo zamienic na ", co tez uczyniles.

Teraz pojawil ci sie kolejny problem, ze nie ma takiego pliku co chcesz usunac. komunikat jasno mowi.
albo nie masz takiego pliku, albo masz tylko skrypt go nie widzi. sprobuj ze sciezką bezwzględną, a najlepiej najpierw sprawdz czy jest przy pomocy file_exists()


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
lukas0987
post 22.01.2007, 21:46:10
Post #5





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 13.04.2006

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


Linijka ta kasuje wpis w bazie danych. Skoro jest wpis to musi być plik (taki mój upload, najpierw uploaduje plik a póxniej dodaje wpis do bazy). Tylko nie wiem dlaczego on tak jakby powtarzał to jeszcze raz.
$sql="DELETE FROM zdjecia WHERE zdid = '$zdid' LIMIT 1";

W tym wypadku jeżeli zmienna jest w ' ' to nie jest parsowa. Dlaczego?
Dlaczego musiała być w " "?
Bo tej lekturze to ja bym to zrobił tak:
unlink("../photo/${zdid}.jpg");
Mam sporo wątpliwości? Jakby ktoś był wstanie mi pomóc to dziękuję ślicznie.
Go to the top of the page
+Quote Post
maryaan
post 22.01.2007, 22:33:05
Post #6





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


Cytat(lukas0987 @ 22.01.2007, 21:46:10 ) *
  1. <?php
  2. $sql="DELETE FROM zdjecia WHERE zdid = '$zdid' LIMIT 1";
  3. ?>

W tym wypadku jeżeli zmienna jest w ' ' to nie jest parsowa. Dlaczego?
w tym przypadku akurat jest parsowana = zamiast $zdid zosatnie podstawiona wartosc tej zmiennej, gdybys jednak zrobil tak:
  1. <?php
  2. $sql='DELETE FROM zdjecia WHERE zdid = "$zdid" LIMIT 1';
  3. ?>
to wtedy ciag w ogole nie zostanie przetworzony tylko wyswietlony tak jak jest zapisany


--------------------
Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
Go to the top of the page
+Quote Post
lukas0987
post 22.01.2007, 23:01:13
Post #7





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 13.04.2006

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


Przepraszam. Moja wina, (zamotałem troszkę).
Zapytanie SQL rozumiem.
TYlko nie rozumiem tego:
  1. <?php
  2. unlink('../photo/$zdid.jpg');
  3. unlink("../photo/$zdid.jpg");
  4. ?>


Kiedy wstawiać ' ' a kiedy " "?
Go to the top of the page
+Quote Post
maryaan
post 22.01.2007, 23:15:50
Post #8





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


odpal taki skrypt

  1. <?php
  2. $lol = 'costamcostam';
  3. echo 'jakis/tekst/$lol.jpg';
  4. echo '<br>';
  5. echo "jakis/tekst/$lol.jpg";
  6. ?>


--------------------
Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
Go to the top of the page
+Quote Post
lukas0987
post 23.01.2007, 17:06:34
Post #9





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 13.04.2006

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


I wszystko już rozumiem smile.gif
Wielkie Dzięki.
Teraz to już przynajmniej rozumie dokładnie co pisze w tej notce z php.
Muszę jeszcze tylko rozpracować jeden problem.
P.S.
maryaan dzięki za poświęcony mi czas.

Tak jak mówiłem on powtarza jeszcze raz funkcję. Po wciśnięci jeszcze raz F5 mam coś takiego.

  1. Warning: unlink(../photo/27.jpg): No such file OR directory IN c:\usr\krasnal\www\public_html\galeria_zdjecia\usun2.php ON line 14
  2.  
  3. Warning: unlink(../photo/27.mini.jpg): No such file OR directory IN c:\usr\krasnal\www\public_html\galeria_zdjecia\usun2.php ON line 15
  4.  
  5. Warning: unlink(../photo/.jpg): No such file OR directory IN c:\usr\krasnal\www\public_html\galeria_zdjecia\usun2.php ON line 14
  6.  
  7. Warning: unlink(../photo/.mini.jpg): No such file OR directory IN c:\usr\krasnal\www\public_html\galeria_zdjecia\usun2.php ON line 15




  1. <?php
  2. if ($send=='usun'){
  3. include ('../../mysql_connect.php');
  4. $liczba=$_POST["zdid"];
  5. for($i=0;$i<=count($liczba);$i++)
  6. {
  7. $zdid=$liczba[$i];
  8. echo "$zdid";
  9. $sql="DELETE FROM zdjecia WHERE zdid = '$zdid' LIMIT 1";
  10. $wynik=mysql_query($sql);
  11. unlink("../photo/$zdid.jpg");
  12. unlink("../photo/$zdid.mini.jpg");
  13. }
  14. echo "<font class="style5">Usunięto - <a href="index.php">Lista</a>";
  15. }
  16. ?>


Co ja tutaj zmaściłem?

Błąd znajdował się tutaj:
  1. <?php
  2. for($i=0;$i<=count($liczba);$i++)
  3. ?>


Dlaczego powtarzał funkcję jeszcze raz?
bo $i<=count..
Właśnie chodzi o to że mniejszy lub równy. A powinien być tylko mniejszy.
Czyli zamienić na: $i<count...

Dziękuję wszystkim za pomoc.
Wątek można już skasować.

Ten post edytował lukas0987 22.01.2007, 23:48:36
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: 12.07.2025 - 22:23