Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuwanie danych z pliku za pomoca checkbox'a
Forum PHP.pl > Forum > Przedszkole
mentos101
Witam. Mam mały problem, otóż mam skrypt który usuwa rekordy w pliku i odpowiednio do rekordu plik,
Mój problem wyglada tak ze wszystkie checkboxy sie wyswietlaja, usuwa rekord w pliku i plik, ale jak chce usunac wiecej niz jeden rekord (czyli zaznaczam wiecej checkboxow ) to nie usuwa ich, usuwa tylko ostatni zaznaczony checkbox.
Oto skrypt:
  1. <?php
  2.  
  3. $plik = "zdjecia.php";
  4.  
  5.  
  6. if ((isset($_POST['usun'])) AND (is_numeric($_POST['usun']))) {
  7.  
  8.  
  9.  
  10. $dane = file($plik);
  11. unset($dane[$_POST['usun']]);
  12.  
  13.  
  14. $f = fopen($plik, "w");
  15. foreach($dane as $linia){
  16. fputs($f, $linia);
  17. }
  18. fclose($f);
  19.  
  20. }
  21.  
  22. $nazwy = $_POST['nazwa'];
  23. unlink("../cms/photos/".$nazwy);
  24. unlink("../cms/thumbs/".$nazwy);
  25.  
  26.  
  27.  
  28. ?>
  29. <br><br>
  30. <form action="uploadandlista.php" method="post">
  31.  
  32. <?php
  33. $dane = file($plik);
  34.  
  35. for($i=0;$i<count($dane);$i++) {
  36. list($nazwa[$i], $link[$i]) = explode(" || ", $dane[$i]);
  37.  
  38. }
  39.  
  40.  
  41.  
  42. for($i=0;$i<count($link);$i++) {
  43. echo '<input name="usun" type="checkbox" value="'.$i.'">' .$link[$i]."<br></input>";
  44. echo '<input name="nazwa" type="hidden" value="'.$nazwa[$i].'">';
  45. }
  46.  
  47.  
  48. ?>
  49. <br>
  50. <input type="submit" value="Usuń" />
  51. </form>

moze ktos wie jak temu zaradzic ? za pomoc z gory dziekuje smile.gif
Quantum
  1. echo '<input name="usun" type="checkbox" value="'.$i.'">' .$link[$i]."<br></input>";


na

  1. echo '<input name="usun[]" type="checkbox" value="'.$i.'">' .$link[$i]."<br></input>";


dodajesz do nazwy checkboxa [], wtedy w php będziesz mógł się odwołać tj. do tablicy smile.gif
mentos101
Probowałem wczesniej. Niestety to nie pomaga, a co gorsza w ogole wtedy nie usuwa.
Wykrywacz
Plików ci nie kasuje bo nie masz tego w pętli
  1. $nazwy = $_POST['nazwa'][$i];
  2. unlink("../cms/photos/".$nazwy);
  3. unlink("../cms/thumbs/".$nazwy);

Quantum
(is_numeric($_POST['usun']).

chyba przez to smile.gif

to tablica wtedy będzie, is_array.
mentos101
Ale nie usuwa rekordow ani plikow.

skrypt ktory przesłałem usuwa tylko jeden z zaznaczonych checkboxow;/

Podejrzewam ze cos jest nie tak z formularzem ktory wysyla nr rekordow. Bo sprawdzalem wczesniej i wysyla tylko jeden nr rekordu.
Ale nie wiem jak temu zaradzic.
Quantum
przeanalizuj, odpowiedź dałem pare postów wcześniej.

  1.  
  2. print_r($_POST);
  3.  
  4. echo '<form method="post">
  5. <input type="checkbox" name="usun[]" value="a">
  6. <input type="checkbox" name="usun[]" value="b">
  7. <input type="checkbox" name="usun[]" value="c">
  8. <input type="submit">
  9. </form>';
  10.  


jak myślisz czym będzie $_POST['usun'] ?. napewno funkcja is_numeric($_POST['usun']) zwróci false, warunek, w którym znajdują się instrukcje do usuwania nie zostaną wykonane, dodatkowo dałeś .(isset($_POST['usun'][$i])).
mentos101
a jak mozna było by to zmienic. poniewaz jestem bardzo poczatkujacy w php za bardzo nie mam pojecia co z tym zrobic.
Quantum
najlepiej napisać od nowa smile.gif z logiką winksmiley.jpg podpowiedź. przeiteruj elementy tablicy $_POST['usun'] w foreach i tam wstaw instrukcje do usuwania ;]
mentos101
Za bardzo mi to nie pomaga.. Poniewaz jestem jak wczesniej podkreslilem bardzo poczatkujacy.
A skrypt ktory przedstawilem jest modyfikacja innego skryptu ktory mial za zadanie usuwac dane z pliku ale za pomoca funkcji <select>.
Quantum
to powiedz mi, po co bierzesz się od razu za skrypty, których napisaniu nie podołasz ? tutaj nie dostaniesz gotowca, ale wskazówki, które mają Ci pomóc smile.gif

daj przykładową zawartość pliku zdjecia.php.
mentos101
oto przykładowa zawartosc pliku zdjecia.php:

samplepicture08.jpg || <a href=http://www.ko-plato.pl/cms/photos/samplepicture08.jpg >samplepicture08.jpg</a>
samplepicture05.jpg || <a href=http://www.ko-plato.pl/cms/photos/samplepicture05.jpg >samplepicture05.jpg</a>


Dzieka sniffer32 udało mi się zmodyfikowac skrypt, wykorzystalem pętle foreach i wszystko gra smile.gif
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.