Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Specyficzny problem z formularzem
Forum PHP.pl > Forum > Przedszkole
ptr
Witam,
pracuję nad prostym systemem oceniania prac studentów. Studenci wysyłają pliki na serwer, plik trafia do odpowiedniego katalogu, tworzona jest lista wgranych plików wraz z imieniem i nazwiskiem oraz oceną, która domyślnie ma wartość zero. Lista jest prostym plikiem tekstowym.
W skrypcie edycja.php jest ona zczytywana linia po linii tak aby dla każdego rekordu można było edytować ocenę - każda linia zawiera pole <select> i w nim wybór oceny.

Problem polega na tym że nie bardzo wiem jak zrobić zapis przeprowadzonych zmian dla wszystkich rekordów.

poniżej kod:

  1. <?php
  2. $plik = "baza.txt";
  3.  
  4. if ((isset($_POST['edytuj'])) ) {
  5. $dane = file($plik);
  6. $f = fopen($plik, "w");
  7. foreach($dane as $linia){
  8.   fputs($f, $linia);
  9. }
  10. fclose($f); /* zamykam polączneie z plikiem */
  11. }
  12.  
  13. ?>
  14.  
  15. <form action="edytuj.php" method="post">
  16.  
  17.  
  18.  
  19. $plik = "baza.txt";
  20. $dane = file($plik); /* pobieram dane z pliku i zapisuje do tablicy (linia = rekord) */
  21.  
  22. for($i=0;$i
  23.  list($nazwisko[$i], $imie[$i], $plik[$i], $temat[$i], $przedmiot[$i], $rodz_stud[$i], $kat[$i], $ocena[$i] ) = explode("||", $dane[$i]);
  24.   /* dziele linię na tablicę i zapisuje dane do odpowiednich zmienncyh */
  25. }
  26.  
  27. for($i=0;$i
  28.   echo $nazwisko[$i]." ".$imie[$i].", ".$plik[$i].", ".$temat[$i].", ".$przedmiot[$i].", ".$rodz_stud[$i].", ".$kat[$i].", <select class=\"krotkie2\" name=\"edytuj\"><option selected=\"selected\">".$ocena[$i]."</option><option>2.0</option><option>3.0</option><option>3.5</option><option>4.0</option><option>4.5</option><option>5.0</option></select><br />";
  29. ";
  30.  
  31.  
  32.  
  33.  
  34. ?>
  35.  
  36. <input type="submit" value="edytuj" />
  37. </form>



Gdzie tkwi błąd?
erix
Kod
name=\"edytuj\"

Zamiast edytuj daj edytuj[]. Wtedy $_POST['edytuj'] będzie zawierało tablicę z ocenami. I w pętli zapisującej iteruj po tej tablicy, a nie po zawartości pliku. winksmiley.jpg

PS. Na przyszłość, korzystaj z odpowiedniego bbcode.
ptr
Dziękuję za pomoc, ale sposób nie za bardzo działa.
$_POST['edytuj']
zawiera pustą tablicę...

czy mogę prosić o jakiś przykład jak to ma wyglądać?
szczególnie jeśli chodzi o pętlę - jak iterować po tablicy z ocenami?
erix
Cytat
zawiera pustą tablicę...

Bo trzeba jeszcze przemianować pola w formularzu.

Cytat
czy mogę prosić o jakiś przykład jak to ma wyglądać?

Wszystko właściwie już opisałem, tylko to teraz zaimplementuj. Zwróć uwagę, który fragment kodu zacytowałem.

Cytat
szczególnie jeśli chodzi o pętlę - jak iterować po tablicy z ocenami?

Tak samo, jak po każdej tablicy; wystarczy tylko najpierw zadeklarować tę tablicę. Patrz: poprzedni mój post.
ptr
Cytat(erix @ 25.01.2009, 16:23:20 ) *
Bo trzeba jeszcze przemianować pola w formularzu.


Które pola? Przecież jest tylko pole select...
erix
Kod
<select class=\"krotkie2\" name=\"edytuj\">

Tu masz przecież ocenę.
ptr
dokładnie. i tutaj zmieniłem na
Kod
<select class=\"krotkie2\" name=\"edytuj[]\">


i nie działa. tablica jest pusta.
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.