![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 8.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Znalazłem fajny przykład animowanego przycisku Toggle button. Dostosowałem sobie kod do swoich potrzeb. Kod <script type="text/javascript"> function status(){ var el = document.getElementById('status1'); $.post("uaktualnienie.php", { status1: status1 }); } </script> <form method="get" action="./"> <label for="status1"> </label><input type="checkbox" <? if ($status1==0){echo "checked disabled";}?> id="status1" name="status1" data-on="Aktywny" data-off="Nieaktywny" /> </form> I teraz chciałbym aby klikniecie przycisku spowodowało wysłanie danej do bazy. Nie bardzo mogę sobie z tym poradzić. ![]() ![]() Ten post edytował globalinfo 13.03.2017, 12:59:11 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
https://developer.mozilla.org/pl/docs/Web/A...ddEventListener
musisz jakąś akacje dać jeszcze... http://jsbin.com/vijomefefo/edit?html,js,output a co chcesz uzyskać? Ten post edytował Lord 13.03.2017, 13:24:34 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 8.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
no to co ci podałem zadziała, w miejsce alert("zrob cos") przeslij to do bazy za pomoca ajaxa
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 8.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak i nie bardzo chce działać - tj. mam taki komunikat
Cytat Uncaught TypeError: Cannot read property 'addEventListener' of null at VM444 kontrol.php:146 Kod <script type="text/javascript"> function status(){ $.post("uaktualnienie.php", { status1: status1 }); } var el = document.getElementById("status1"); el.addEventListener("change", status1, false); </script> <form method="post" action="./"> <label for="status1"> </label><input type="checkbox" <? if ($status1==1){echo "checked disabled";}?> id="status1" name="status1" data-on="Aktywny" data-off="Nieaktywny" /> </form> Plik uaktualnienie.php Kod // Connect to MySQL
include("dbconnect.php"); $status1=$_POST['status1']; $zapytanie = "UPDATE `Sterowanie` SET `L1`='$status1' WHERE `ID`='1'"; $idzapytania = mysql_query($zapytanie); Ten post edytował globalinfo 13.03.2017, 14:28:43 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
Kod <form method="post" action="./"> <label for="status1"> </label><input type="checkbox" <? if ($status1==1){echo "checked disabled";}?> id="status1" name="status1" data-on="Aktywny" data-off="Nieaktywny" /> </form> <script type="text/javascript"> function status(){ $.post("uaktualnienie.php", { status1: status1 }); } var el = document.getElementById("status1"); el.addEventListener("change", status, false); </script> https://developer.mozilla.org/pl/docs/Web/API/Window/onload viking ma racje, mój bład: https://api.jquery.com/change/ Ten post edytował Lord 13.03.2017, 14:36:28 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
https://api.jquery.com/ready/
albo wrzuć script pod element. Skoro korzystasz z jquery to najlepiej nie mieszaj z czystym js. -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 8.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Komunikat o błędzie już nie występuje, ale dane nie zapisują się do bazy.
![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
pomyłka
![]() i poczytaj o mysqli i pdo Ten post edytował Lord 13.03.2017, 14:47:11 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jakieś błędy w konsoli albo po stronie PHP? mysql już dawno nie powinieneś używać tylko np PDO. Twój kod jest podatny na sql injection i mało czytelny. id = '1' - kolumna id na pewno nie jest stringiem tylko liczą zatem id = 1. Do funkcji status nigdzie nie przekazujesz status1.
Ten post edytował viking 13.03.2017, 14:44:24 -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 8.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jakieś błędy w konsoli albo po stronie PHP? mysql już dawno nie powinieneś używać tylko np PDO. Twój kod jest podatny na sql injection i mało czytelny. id = '1' - kolumna id na pewno nie jest stringiem tylko liczą zatem id = 1. Do funkcji status nigdzie nie przekazujesz status1. PHP i konsola nie wyświetla błędów. id = '1' z tym nie mam problemu ponieważ dane mi się pobierają bezbłędnie. status1 - nie bardzo wiem jak to uzupełnić. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
https://jsfiddle.net/omoyr6kf/
Status będzie true/false, możesz sobie choćby filter_var na 1/0 przekształcić. -------------------- |
|
|
![]() ![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 8.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wstawiłem warunki jednak dalej dane się nie zapisują.
Wszystko wskazuje że post się nie wykonuje po kliknieciu. Dodatkowo mam komunikat Cytat kontrol.php:404 Uncaught TypeError: $(...).prop is not a function at HTMLInputElement.<anonymous> (kontrol.php:404) at HTMLInputElement.dispatch (jquery-1.10.2.js:5095) at HTMLInputElement.elemData.handle (jquery-1.10.2.js:4766) Kod <form method="post" action=""> <label for="status1">Status1</label> <input type="checkbox" id="status1" name="status1" data-on="Aktywny" data-off="Nieaktywny" /> </form> <script type="text/javascript"> $('#status1').on('change', function(e) { e.preventDefault(); $.post("uaktualnienie.php", { status1: $(this).prop('checked') }); }); </script> plik uaktualnienie.php Kod // Connect to MySQL
include("dbconnect.php"); if(isset($_POST['status1'])){ if ($_POST['status1']==TRUE){$status1=1;} if ($_POST['status1']==FALSE){$status1=0;} $zapytanie = "UPDATE `Sterowanie` SET `L1`='$status1' WHERE `ID`='1'"; $idzapytania = mysql_query($zapytanie); } Ten post edytował globalinfo 14.03.2017, 07:54:16 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jak widzisz kod działa na jsfiddle i wysyła żądanie. Tak w ogóle to mamy już jquery 3.1. Spróbuj attr()
Ten post edytował viking 14.03.2017, 07:57:50 -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 8.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
No udało wreszcie zapisać do bazy.
Z takim kodem udało się zapisać daną do bazy Kod <input type="checkbox" <? if ($status1==1){echo "checked disabled";}?> id="status1" name="status1" data-on="Aktywny" data-off="Nieaktywny" /> </form> <script type="text/javascript"> $('#status1').on('change', function(e) { e.preventDefault(); var bufor = $(this).attr("checked"); alert('dana przekazana to - '+bufor); $.post("uaktualnienie.php", { status1: bufor }); }); </script> Ale teraz gdy mam wartość 1 dla $status1 przycisk mam w pozycji "Aktywny" i teraz funkcja nie działa. Jak z tym sobie poradzić aby funkcja działała przy $status1=1 czy $status1=0 ![]() ![]() Ten post edytował globalinfo 14.03.2017, 12:59:58 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 12:58 |