Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kilka formularzy na 1 stronie - jak wybrać, który sumbit?
Forum PHP.pl > Forum > Przedszkole
qpeace1
skąd wiem jaki submit wybrał user jak dam mu możliwość zmiany kilku formularzy na stronie?

Mam taki problem:
- wczytuję z bazy danych w formie tabli dane o userach i ich uprawnieniach
- kolumny są takie:
ID | Login | Dane osobowe | uprawnienie1| uprawnienie2| uprawnienie3|Potwierdź zmiany
1 | jasd | Jan Iksiński | [x] | [] | [] | [Aktualizuj]
2 | ds | Anna Kowaska | [] | [x] | [] | [Aktualizuj]

jak widać jest kilka przycisków zatwierdź, jak chcę zmienić komuś uprawnienia, to co prawda zmieniam - ale nie temu co chcę, tylko ostatniemu wczytanemu userowi i nie wiem w czym problem. Oto trochę kodu:


plik:formularz.php
-----------------------------------
  1. <?php
  2. $zapytanie_sql="SELECT * FROM tabelka"; 
  3. $wynik_zapytania=mysql_query($zapytanie_sql);
  4. while($linia=mysql_fetch_array($wynik_zapytania))
  5. {
  6.  $id_user = $rekord["id"];
  7.  
  8.  echo '<tr>
  9. <Form action="zmien.php" method="post">
  10.  <td>'.$rekord["id"].'</td>
  11.  <td>'.$rekord["login"].'</td>
  12.  <td>'.$rekord["imie"].' '.$rekord["nazwisko"].'</td>';
  13.  
  14.  
  15.  if ($rekord["admin"] == "TAK"){
  16. echo'<td align="center" class="ramka"><input type="checkbox" checked="checked" name="admin1"></td>';
  17.  } else { 
  18. echo'<td align="center" class="ramka"><input type="checkbox" name="admin1"></td>';
  19.  }
  20. .
  21. .
  22. .
  23.  
  24. echo'<td><input type=submit value="Aktualizuj"> </td>';
  25.  
  26.  echo '</tr>';
  27.  
  28.  
  29. }
  30.  
  31.  echo '</Form></table>';
  32.  
  33. .
  34. .
  35. .
  36. ?>


plik zmien.php:
------------------------------------------------------------
  1. <?php
  2. $zapisz_id_usera = $_POST["id1"];
  3. $zapisz_admin= $_POST["admin1"];
  4.  
  5. ...
  6.  
  7.  
  8.  
  9. if ($zapisz_admin) {$zapisz_admin="TAK";} else {$zapisz_admin='NIE';}
  10.  
  11. $zmieniam_dane="UPDATE tabela SET pole_admin = '$zapisz_admin' WHERE id=$zapisz_id_usera ";
  12. $wykonaj_zmiane=mysql_query($zmieniam_dane);
  13. ?>


i nie wiem jak tu zhaczyć, który przycisk [Aktualizuj] wciśnięto, tj przy którym userze, bo zapisywać mi zapisuje, ale zawsze zmienia ostatni rekord w tabeli, a nie ten który ja chce zmienić
qpeace1
sorki wkradł się mały błąd, zamiast

while($linia=mysql_fetch_array($wynik_zapytania))
ma być
while($rekord=mysql_fetch_array($wynik_zapytania))
Crozin
Do każdego formularza dodajesz ukryte pole z ID elementu:
  1. <input type="hidden" name="identyfikator" value="np. 14" />
qpeace1
nic nie daje, już tego próbowałem ;-(

zrobiłem tak:
w plikuf ormularz.php:

  1. <?php
  2. echo '<td>
  3. <input type="hidden" name="aktualny_id" value="'.$id_user.'"> // tu nadaje wartość, która jest poprawnie nadana, bo jak dam type ="text" to są kolejne numery tablicy
  4. </td>';
  5. ?>


a w pliku zmien.php:
  1. <?php
  2. $zapisz_id_usera = $_POST["aktualny_id"]; // z input hidden
  3. $zmieniam_dane="UPDATE tablica SET pole_admin = '$zapisz_admin' WHERE id=$zapisz_id_usera";
  4. $wykonaj_zmiane=mysql_query($zmieniam_dane);
  5. ?>


i dalej dodaje mi zmiany do ostatniego rekordu w tabeli, a nie tego co ja chce.

już nie wiem w czym błąd ;-(
Crozin
A to wszystko masz w jednym formularzu czy dla każdego wiersza/użytkownika masz osobny <form></form>? Jeśli to pierwsze to przekaż dane o tym, którego użytkownika edytować bezpośrednio w przycisku submit winksmiley.jpg
  1. <?php
  2. echo '<td>
  3. <button type="submit" name="submit" value="' . $id_user . '">Aktualizuj</button>
  4. </td>';
  5. ?>
A potem:
  1. <?php
  2. $zapisz_id_usera = (int) $_POST['submit'];
  3. ?>
Shili
Pokaż html, który generuje apache.

Albo przyjrzyj się kawałkowi kodu - za każdym razem w pętli otwierasz form, a zamykasz go poza pętlą. Jeśli taki jest faktycznie wygerenowany html, to nic dziwnego, że jednak trochę problemów może zaistnieć.

@down
Preferuję nazwę czarownica ^^
qpeace1
no i o to mi chodziło ;-))) guitar.gif

ale teraz natrafiłem na jeszcze jeden dziwny problem, mianowicie, żeby dodać uprawnienia userowi wystarczy, że zanzaczę checkbox i dam na button [Aktualizuj], ale problem pojawia się w momencie kiedy chcę mu zabrać uprawnienia, wówczas muszę zabrać uprawnienia WSZYSTKIM userom i nacisnąć button [Aktualizuj] przy tym, którego akcja ma dotyczyć - wówczas jest ok, ale jak tylko u niego odznaczę uprawnienie a przynajmniej jedna osoba wśród innych userów będzie takie uprawnienie miała zaznaczone, to tabela mi się nie zaktualizuje. {mam nadzieję że ktoś to zrozumie co napisałem ;-)}

myślę że problem jest w tej linijce:
if ($zapisz_admin) {$zapisz_admin="TAK";} else {$zapisz_admin='NIE';}
ma ona sprawdzić, czy zmienna
$zapisz_admin= $_POST["admin1"];
da mi zaznaczony checkbox, czy odznaczony


Cytat(Shili @ 2.06.2008, 20:34:36 ) *
Pokaż html, który generuje apache.

Albo przyjrzyj się kawałkowi kodu - za każdym razem w pętli otwierasz form, a zamykasz go poza pętlą. Jeśli taki jest faktycznie wygerenowany html, to nic dziwnego, że jednak trochę problemów może zaistnieć.


słuszna uwaga, pomogła na pytanie 2 (zanim je zadałem ) ;-)
magik, czy co?


dzięki ;-))) czarodziej.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.