Stránka 11 z 13
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 15:56
od kiRRow
Nejprve si uprav ty buttony
<button type="submit" name="tlacitko" value="1">Zhasnout</button>
$mysqli = mysqli_connect($server, $user, $pass, $db); //připojení k MySQL
//zde pak testujes jestli je tlacitko == 1 - došlo k odeslání formuláře a ne jen k načtení stránky
// pokud je tlacitko == 1 tak zapíšeš hodnotu stav do databáze a pokračuješ dál
$sql = 'SELECT * FROM arduino_data WHERE modul="led"'; // tady už se ti načte nová hodnota
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 15:59
od KamilV
Kony píše: ↑14 kvě 2020, 14:18
ale taky to nic neudělá, prostě to do té DB nezapíše 1 a tlačítko tam pořád zůstavá Rozsvítit,ale když tak na to koukám a přemýším na to, tak tento kod jen zobrazí tlačítko dle stavu, ale změnu stavu to udělat nemůže
Přesně tak. Vždy musíš říct, co řešíš. Řešil jsi vykreslení tlačítka, nepochopil jsem z toho, že obsluhu formuláře nemáš.
Tedy: teď se tě vykreslí správný formulář a v hidden inputu máš novou hodnotu, u toho formu si dej do action nějaký skript, který tu hodnotu updatne v db a udělá redirect zpět na výpis s tlačítkem. To už se zobrazí v opačném stavu.
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 16:02
od KamilV
kiRRow píše: ↑14 kvě 2020, 15:56
Nejprve si uprav ty buttony
<button type="submit" name="tlacitko" value="1">Zhasnout</button>
$mysqli = mysqli_connect($server, $user, $pass, $db); //připojení k MySQL
//zde pak testujes jestli je tlacitko == 1 - došlo k odeslání formuláře a ne jen k načtení stránky
// pokud je tlacitko == 1 tak zapíšeš hodnotu stav do databáze a pokračuješ dál
$sql = 'SELECT * FROM arduino_data WHERE modul="led"'; // tady už se ti načte nová hodnota
Tahat tu hodnotu ve value submitu není best practice, protože ve chvíli, kdy těch hodnot bude chtít více, do submitu je nenacpe, hiddenů může mít kolik chce.
Dále není úplně šťastné vykonávat obsluhu formu ve stejném skriptu, jako je výpis. Při obnovení výpisu se bude chtít znovuodeslat formulář.
Zažitá praxe je, že se form odešle na nějaký skript s aplikační logikou, udělá co je potřeba a přesměruje na URL s prezentační vrstvou. Na výpisu pak můžeš mačkat F5 jak chceš, ale form se znovu neodešle...
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 16:09
od kiRRow
Hodnota je v hiddenu ... v button value je hodnota toho, že tento button byl stisknut, aby se zápis prováděl pouze při odeslání formuláře a né při jakémkoliv načtení stránky.
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 16:28
od Kony
Takze z toho zase vim prd hihi
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 16:30
od KamilV
Jo takhle, no tak i to se dá poznat z isset($_POST['hodnota']), tedy z toho hiddenu.
Value u submitů se používá ve chvíli, kdy jich má form více (typicky "Uložit", "Uložit a zpět") a skript pak reaguje podle toho, kterým tlačítkem bylo odesláno.
No ale hlavně bych se držel toho, aby aplikační logika byla v samostatném skriptu, takže vlastně celý tento příspěvek je zbytečný

Re: Wifi zásuvka
Napsal: 14 kvě 2020, 18:39
od Kony
Uz si s tim hraju pekne dlouho a stejne neprijdu na to jak udelat aby to fungovalo vcetne zmen tech hodnot v DB
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 19:41
od KamilV
Nějakých 6 h, to není žádnej zásek

Dokud v sobě nemáš 3 turky a za oknem se znovu nerozednilo, žádný programátorský problém jsi neřešil
Ale teď vážně. A jako vždy. Ukaž co máš.
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 20:39
od Kony
Vzdy neco zkusim a kdyz nejde tak umazu, snazim se nejak pracovat z sql prijazem,
$sql = 'UPDATE * FROM arduino_data WHERE modul="led"' VALUE ="1";
$doSql = $mysqli->query($sql);
Ale asi to spatne formuluju a nebo to spatne zadavam do toho prijazu na click buttonu
Re: Wifi zásuvka
Napsal: 14 kvě 2020, 21:27
od KamilV
Hm, a jak bys takový dotaz lidsky přečetl?
"Uprav všechno z arduino_data, pokud modul je led hodnota je 1"
Úplně to není košér, že?
Nechtěl bys spíš něco ve smyslu:
"Uprav arduino_data tak, že sloupec hodnota je 1, pokud modul je led"?
Kód: Vybrat vše
$sql = 'UPDATE arduino_data SET hodnota='.(int)$hodnota.' WHERE modul="led"';