Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Zmiana w rekordzie tabeli po zaznaczeniu/odznaczeniu checkbox-a
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam, mam w tabeli w każdym rekodzie następujący kod definiujący checka
  1. if ($r['udostepnij'] == 1)
  2. {
  3. echo "<td width=100 align=center><input type=\"checkbox\" name=\"udostepnij\" checked=\"checked\"></input>";
  4. }
  5. else {
  6. echo "<td width=100 align=center><input type=\"checkbox\" name=\"udostepnij\"></input>";
  7. }
  8.  


chciałbym aby automatycznie po kliknięciu w pustego checka rekord w bazie zmienił swoją wartość na 1 a na pełnego checka na 0,

nie chodzi mi o zapytanie SQL bo takie mam
  1. mysql_query("update tabela SET udostepnij='1' WHERE id='$id'") OR die('Błąd zapytania: '.mysql_error());
  2. echo '<meta http-equiv="refresh" content="1; url=rej.php">';




prosze o pomoc w temacie

krzychu0808
Jeżeli miało by się to odbywać bez przeładowania strony to na szybko można wykorzystać Jquery, Ajax.
Jeżeli klikniesz checkbox, uruchamia się skrypt php który zmienia wartość w bazie.

Przykłady wywołania skryptów PHP przez ajax + obsługa zdarzeń użytkownika.
http://www.doman.art.pl/kursjs/kurs/jquery/jquery_ajax.html

A tutaj troszkę o checkbox w Jquery:
prosty przykład: http://bazawiedzy.cichaprzystan.org/62/jak...est-zaznaczony/
więcej informacji: http://api.jquery.com/checkbox-selector/
krzesik
ale chyba nie o to mi chodziło...
chciałbym zaznaczyc checka (niezaznaczonego) nastepnie wykonuje się zapytanie zmieniając wartość w bazie, strona się przeładowuje i widoczny jest zaznaczony check i odwrotnie
krzychu0808
Moim zdaniem bardziej wydajne będzie wykorzystanie ajax do tego bo ograniczymy ilość zapytań. Użytkownik będzie chciał zaznaczyć 10 pozycji i mamy 10 x ilość zapytań strony i za każdym razem musi czekać za przeładowaniem. A jak dobrze napiszemy JS + Ajax to wyślemy tylko 10 zapytań i zmiana następuje natychmiast.

Chyba że to tylko taki pojedynczy checkbox to można się zastanowić. No i jeżeli ktoś wyłączy JS to nie zaznaczy tego !
krzesik
tak to jest pojedynczy check

więc tak udało mi się zrobić że zaznacza checka i zmienia wartość w bazie (po przeładowaniu check jest zaznaczony) jednak mam problem w druga stronę, aby "odznaczyć" checka
oto kod:

  1. .......
  2. if ($r['udostepnij'] == 1){
  3. echo "<td width=100 align=center>
  4. <input type=\"checkbox\" name=\"udostepnij_on\" onclick=\"submit();\" checked=\"checked\"></input>";
  5. }
  6. if ($r['udostepnij'] == 0) {
  7. echo "<td width=100 align=center>
  8. <input type=\"checkbox\" name=\"udostepnij_off\" onclick=\"submit();\"></input>";
  9. }
  10. ......
  11.  
  12.  
  13. $id = trim($_POST['id']);
  14. $udostepnij_off = trim($_POST['udostepnij_off']);
  15.  
  16.  
  17. if(!empty($udostepnij_off) and !empty($id)) {
  18. mysql_query("update tabela SET udostepnij='1' WHERE id='$id'")
  19. or die('Błąd zapytania: '.mysql_error());
  20. echo '<meta http-equiv="refresh" content="0; url=rej.php">';
  21. }
  22. $id = trim($_POST['id']);
  23. $udostepnij_on = trim($_POST['udostepnij_on']);
  24.  
  25. if(!empty($udostepnij_on) and !empty($id)) {
  26. mysql_query("update tabela SET udostepnij='0' WHERE id='$id'")
  27. or die('Błąd zapytania: '.mysql_error());
  28. echo '<meta http-equiv="refresh" content="0; url=rej.php">';
  29. ......


wiem już ze zapytania działają OK, problem leży w :
<b> <input type=\"checkbox\" name=\"udostepnij_on\" onclick=\"submit();\" checked=\"checked\"></input>";</b>
a konkretnie w checked=\"checked\" jak to usune to zmiany do bazy trafiaja jak należy, ale nie moge tegu usunać bo nie wiem wtedy który jest zaznaczony....
sad.gif


ma ktos jeszcze jakis pomysł?
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.