Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][MySQL][PHP]Zmiana w rekordzie tabeli po zaznaczeniu/odznaczeniu checkbox-a
krzesik
post 20.06.2013, 22:17:54
Post #1





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
krzychu0808
post 20.06.2013, 23:29:12
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


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/

Ten post edytował krzychu0808 21.06.2013, 08:06:05
Go to the top of the page
+Quote Post
krzesik
post 21.06.2013, 17:47:31
Post #3





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
krzychu0808
post 21.06.2013, 18:38:42
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

Ostrzeżenie: (10%)
X----


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 !

Ten post edytował krzychu0808 21.06.2013, 18:40:35
Go to the top of the page
+Quote Post
krzesik
post 21.06.2013, 20:44:05
Post #5





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


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ł?

Ten post edytował krzesik 21.06.2013, 19:21:30
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 08:25