Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]pole option i update checked we wszystkich danych
Forum PHP.pl > Forum > Przedszkole
17misiek09
mam taki kod:
  1. function ban_user(){
  2. $sql=mysql_query("SELECT id,user,banned,activated FROM users WHERE activated=1 ORDER BY id");
  3. echo "<FORM method='post' action='$PHP_SELF'><table>
  4. <tr><th>Id</th><th width='70' align='left'>login</th><th></th></tr>";
  5. $i = 0;
  6. while ($row = mysql_fetch_array($sql)) { $i++;
  7.  
  8. $id = $row['id'];
  9. $user=$row['user'];
  10. $banned=$row['banned'];
  11. if ($banned==1){
  12. $checked='checked="checked"';}
  13. else{
  14. $checked='';
  15. }
  16. echo "<tr><td>";
  17. echo "$id</a></td><td width='100' height='20'>$user</td><td>";
  18. echo "<input type='checkbox' name='banuj[]' value='$id' $checked />
  19. <label for='$id'></label></td></tr>";
  20. }
  21. </table><br/><br/>";
  22. echo "<INPUT name='banuj[]' value='Zablokuj/odblokuj' type='submit'>";
  23. echo "</FORM>";
  24. echo '<br/><br/>';
  25.  
  26. if(isset($_POST['banuj']))
  27. {
  28. foreach($_POST['banuj'] as $d)
  29. {
  30. $sql =mysql_query( "UPDATE `users` SET `banned`=1 WHERE `id` = '$d'");
  31. header("Location: ban");
  32. }
  33. }
  34. }


jak w takim przypadku zaktualizowac dane w bazie danych dotyczace uzytkownikow, ktorych odznaczylem?
startowo zaden nie jest zaznaczony, zaznaczam jakiegos, klikam Zablokuj/odblokuj i go zaznacza - to jest OK
pozniej banuje kolejnego i kolejnego
w koncu pasuje, zeby jednag ktoregos odbanowac - jak to w tym formularzu poprawic?
jak zrobic, aby dane, ktore nie naleza do $d zostaly zaktualizowane "banned"=0?
Kshyhoo
Tablica w pętli?
17misiek09
hmm tak, bo wyswietlam np 10 rekordow.
z tych 10 rekordow zaznaczam sobie 4 - przekazuje je w tablicy do petli i petla kazdy rekord updatuje w bazie danych.

ale problem w tym, ze updatuje tylko z jedna wartoscia (1)
a nie updatuje juz osob niezaznaczonych (0).
Kshyhoo
Bo lecisz pętlą a ale nie z tablicą, tylko jednym elementem. Przykład:
  1. if (isset($_POST["usun"])) {
  2. for ($i=0;$i<count($_POST["usun"]);$i++) {
  3. $id = $_POST["usun"][$i];
  4. mysql_query("DELETE FROM pracownicy WHERE id=$id");
  5. }
  6. }
17misiek09
Cytat(Kshyhoo @ 16.01.2014, 20:20:45 ) *
Bo lecisz pętlą a ale nie z tablicą, tylko jednym elementem. Przykład:
  1. if (isset($_POST["usun"])) {
  2. for ($i=0;$i<count($_POST["usun"]);$i++) {
  3. $id = $_POST["usun"][$i];
  4. mysql_query("DELETE FROM pracownicy WHERE id=$id");
  5. }
  6. }


nie rozumie jak to zastosowac do swojego przypadku :/
Kshyhoo
Cytat(17misiek09 @ 16.01.2014, 20:28:27 ) *
nie rozumie jak to zastosowac do swojego przypadku :/

Trochę chęci.
17misiek09
Cytat(Kshyhoo @ 16.01.2014, 20:36:44 ) *
Trochę chęci.



no dobra...tylko jak tu zupdatowac rekordy, ktorych tablica nie przekazuje?
tutaj wszystkie zaznaczone rekordy sa updatowane na "banned"=1
a te odznaczone (nieprzekazane) do tablicy jak zupdatowac?
Kshyhoo
Ostatnia podpowiedź. Przekazujesz jeden raz $d a masz przekazać $_POST["banuj"][$i];, czyli tablicę.
17misiek09
  1. function ban_user(){
  2. $sql=mysql_query("SELECT id,user,banned,activated FROM users WHERE activated=1 ORDER BY id");
  3. echo "<FORM method='post' action='$PHP_SELF'><table>
  4. <tr><th>Id</th><th width='70' align='left'>login</th><th></th></tr>";
  5. $i = 0;
  6. while ($row = mysql_fetch_array($sql)) { $i++;
  7.  
  8. $id = $row['id'];
  9. $user=$row['user'];
  10. $banned=$row['banned'];
  11. if ($banned==1){
  12. $checked='checked="checked"';
  13. }
  14. else{
  15. $checked='';
  16. }
  17. echo "<tr><td>";
  18. echo "$id</a></td><td width='100' height='20'>$user</td><td>";
  19. echo "<input type='checkbox' name='banuj[]' value='$id' $checked />
  20. <label for='$id'></label></td></tr>";
  21. }
  22. </table><br/><br/>";
  23. echo "<INPUT name='banuj[]' value='Zablokuj/odblokuj' type='submit'>";
  24. echo "</FORM>";
  25. echo '<br/><br/>';
  26.  
  27. if (isset($_POST["banuj"])) {
  28. for ($i=0;$i<count($_POST["banuj"]);$i++) {
  29. $id = $_POST["banuj"][$i];
  30. mysql_query("UPDATE `users` SET `banned`=1 WHERE `id` = '$id' AND activated=1");
  31.  
  32. }
  33. }
  34. }


leci tablica.
jesli zaznaczam cos, to updatuje, ale jesli zostawiam odznaczone, albo odznaczam to nie updatuje...
Kshyhoo
A jak to trzymasz w bazie? Pole ENUM?
17misiek09
pole id? jako INT(11)

Cytat(Kshyhoo @ 16.01.2014, 21:20:53 ) *
A jak to trzymasz w bazie? Pole ENUM?

kolego pomoz mi zasnac dzis przed polnoca sad.gif

sam sobie pomoglem wink.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.