Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: unlink w pętli - kilka plików
Forum PHP.pl > Forum > Przedszkole
lukas0987
  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
nospor
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
lukas0987
  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.
nospor
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()
lukas0987
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.
maryaan
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
lukas0987
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 " "?
maryaan
odpal taki skrypt

  1. <?php
  2. $lol = 'costamcostam';
  3. echo 'jakis/tekst/$lol.jpg';
  4. echo '<br>';
  5. echo "jakis/tekst/$lol.jpg";
  6. ?>
lukas0987
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ć.
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.