Witam. Kombinuję i kombinuję i nie mogę skumać. Chcę usunąć linie w pliku txt. Do tej pory używałem takiego kodu:
  1. if (isset($_POST["usun"])) {
  2. for ($i=0;$i<count($_POST["usun"]);$i++) {
  3. unset($dane[$_POST["usun"][$i]]);
  4. }
  5.  
  6. $f = fopen($plik, "w");
  7. foreach($dane as $linia) fputs($f, "$linia");
  8. fclose($f);
  9. }
  10.  
  11. // pierwsza pętla ładująca dane z pliku do list()
  12. for($i=0;$i<count($dane);$i++) {
  13. list($dane1[$i], $dane2[$i], $dane3[$i], $dane4[$i], $dane5[$i], $dane6[$i], $dane7[$i]) = explode("|", $dane[$i]);
  14. }
  15.  
  16. // potem ładowanie do tabelki
  17. for($i=0;$i<count($dane);$i++) {
  18. echo '<tr>
  19. <td style="width: 150px">'.$dane1[$i].'</td>
  20. <td style="width: 150px; text-align: center">'.$dane2[$i].'</td>
  21. //...
  22. // i tu newralgiczny element
  23. <input type="checkbox" name="usun[]" value="'.$i.'" />
  24. // ...

Czyli za pomocą checkbox przekazywałem index wiersza ($i) do tablicy $_POST i usuwałem wiersz o $dane[$_POST["usun"][$i]].
Chciałem jednak zmodyfikować kod pod względem sortowania. Użyłem kodu:
  1. array_multisort($dane6, $dane5, $dane4, $dane1, $dane2, $dane3, $dane7);

I tu nastąpił problem, gdyż w tabelce dane z pliku nie są przypisane już do indeksów pętli.
I tu pytanie. Jak mam dostać się do index już w pierwszej pętli for z list()? Normalnie można zrobić to tak:
  1. while( list( $index, $wartosc ) = each( $dane ) ) {
  2. echo $index . " - " . $wartosc . "<br>";
  3. }

A tu nie mogę poradzić sobie z "włożeniem" tych danych do tabelki.