Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Java][MySQL][PHP]Toggle button - dynamiczne zapisanie danych do MySQL
globalinfo
post 13.03.2017, 12:46:11
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ć. questionmark.gif sciana.gif

Ten post edytował globalinfo 13.03.2017, 12:59:11
Go to the top of the page
+Quote Post
Lord
post 13.03.2017, 13:16:17
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

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


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
Go to the top of the page
+Quote Post
globalinfo
post 13.03.2017, 13:35:07
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 8.10.2006

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


Cytat(Lord @ 13.03.2017, 13:16:17 ) *
a co chcesz uzyskać?



Check boks ustawia się w zależności jaką wartość zmiennej $status1 pobierze z bazy danych.
Chcę aby przełączenie buttonu w drugą pozycję spowodowało wysłanie wartości tego "chekboksu" do bazy danych.
Go to the top of the page
+Quote Post
Lord
post 13.03.2017, 13:51:40
Post #4





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

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


no to co ci podałem zadziała, w miejsce alert("zrob cos") przeslij to do bazy za pomoca ajaxa
Go to the top of the page
+Quote Post
globalinfo
post 13.03.2017, 14:12:46
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
Go to the top of the page
+Quote Post
Lord
post 13.03.2017, 14:28:28
Post #6





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

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


Cytat(globalinfo @ 13.03.2017, 15:12:46 ) *
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
Go to the top of the page
+Quote Post
viking
post 13.03.2017, 14:29:31
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.


--------------------
Go to the top of the page
+Quote Post
globalinfo
post 13.03.2017, 14:36:08
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. questionmark.gif
Go to the top of the page
+Quote Post
Lord
post 13.03.2017, 14:39:09
Post #9





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

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


pomyłka tongue.gif

i poczytaj o mysqli i pdo

Ten post edytował Lord 13.03.2017, 14:47:11
Go to the top of the page
+Quote Post
viking
post 13.03.2017, 14:42:26
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


--------------------
Go to the top of the page
+Quote Post
globalinfo
post 13.03.2017, 16:16:36
Post #11





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 8.10.2006

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


Cytat(viking @ 13.03.2017, 14:42:26 ) *
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ć.

Go to the top of the page
+Quote Post
viking
post 13.03.2017, 16:43:52
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ć.


--------------------
Go to the top of the page
+Quote Post
globalinfo
post 14.03.2017, 07:42:20
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
Go to the top of the page
+Quote Post
viking
post 14.03.2017, 07:53:48
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


--------------------
Go to the top of the page
+Quote Post
globalinfo
post 14.03.2017, 11:30:34
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 sciana.gif questionmark.gif

Ten post edytował globalinfo 14.03.2017, 12:59:58
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: 18.07.2025 - 12:58