Pomoc s jednoduchým formulářem – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pomoc s jednoduchým formulářem – PHP – Fórum – Programujte.comPomoc s jednoduchým formulářem – PHP – Fórum – Programujte.com

 

Konycz0
Newbie
8. 5. 2020   #1
-
0
-

Ahoj, potřeboval bych pomoc s jednoduchým formulářem, který bude načítat data z MySQL a měnit je....

nyní mám toto :

<?php
        $server = "localhost";
        $user = "kony";
        $pass = "xxxxxxxxx";
        $db = "Domacnost";

        $mysqli = mysqli_connect($server, $user, $pass, $db); //připojení k MySQL

        $sql = 'SELECT * FROM arduino_data WHERE modul="svetlo1"';
        $doSql = $mysqli->query($sql);
        if($doSql->num_rows == 0){
                $sql = 'INSERT INTO arduino_data (modul, hodnota) VALUES ("svetlo1", 0)';
                $doSql = $mysqli->query($sql);
        }

        if(isset($_POST['odeslano'])){ //pokud byl formulář odeslán
                $hodnota = sanitize($_POST['stav']);

                $sql = 'UPDATE arduino_data SET hodnota="'.$hodnota.'" WHERE modul="svetlo1"';
                $doSql = $mysqli->query($sql);

                if($hodnota == 1){
                        echo 'Světlo 1 zapnuto';
                }
                else{
                        echo 'Světlo 1 vypnuto';
                }
                echo '<br /><br />';
        }

        $sql = 'SELECT * FROM arduino_data WHERE modul="svetlo1"';
        $doSql = $mysqli->query($sql);
        $hodnota = $doSql->fetch_assoc()['hodnota']; //načte hodnotu led z DB

        $zapnuto1Checked = $hodnota == 1 ? 'checked' : ''; //nastaví výchozí hodnotu radio buttonu
        $vypnuto1Checked = $hodnota == 0 ? 'checked' : '';


        echo '<form action="" method="POST" >';
                echo '<input type="hidden" value="1" name="odeslano" />';
                echo '<input type="radio" name="stav" value="1" '.$zapnuto1Checked.' /> Zapnout<br>';
                echo '<input type="radio" name="stav" value="0" '.$vypnuto1Checked.' /> Vypnout<br><br>';
                echo '<input type="submit" value="Odeslat">';
        echo '</form>';

        function sanitize($input){
                $input = htmlspecialchars($input);
                $input = htmlentities($input);
                $input = strip_tags($input);
                $input = trim($input);
                return $input;
        }
?>


To mi vloží na stránku možnost pro jedno světlo, ale já bych potřeboval abych tam měl těch možností víc.... Jako by toto udělat několikrát na jednu stránku a samozřejmě se bude jen měnit u každého hodnota v tabulce "svetlo1","svetlo2","svetlo3" atd

Nahlásit jako SPAM
IP: 213.211.34.–
Konycz0
Newbie
8. 5. 2020   #2
-
0
-

Abych to jednoduše upřesnil :

Potřebuji mít na php stránce 3 dvojice radiobuttonu a potom jedno odesílací tlačítko... Při načtení stránky se php připojí k MySQL kde zjistí aktuální hodnoty radiobuttonu a dle toho je nastaví. Pokud změním radiobottony a dám odeslat, tak aby se stavy zapsaly do MySQL databáze.....

Nahlásit jako SPAM
IP: 213.211.34.–
peter
~ Anonymní uživatel
4014 příspěvků
10. 5. 2020   #3
-
0
-

A v cem je problem? V zasade muzes zkopirovat cast PHP 3x a totez s casti HTML.
Ja bych pouzil cyklus, ale to neni podstatne.

<input type="radio" name="stav

<input type="radio" name="list_svetla['.$i.']" value="0" '.($list_svetla[$i]==0?'checked':'') .' 
<input type="radio" name="list_svetla['.$i.']" value="1" '.($list_svetla[$i]==1?'checked':'') .' 

$list_svetla = array();
if (isset($_GET['list_svetla'] && is_array($_GET['list_svetla'])) {
$list = $_GET['list_svetla'];
$i = 0;
$list_svetla[$i] = isset($list[$i]) ? ($list[$i]>0 ? 1 : 0) : 0;
...
}
Nahlásit jako SPAM
IP: 193.84.197.–
Konycz0
Newbie
10. 5. 2020   #4
-
0
-

Dokazal by si mi pomoct treba mail za mensi uplatu ?? Uz me to nejak funguje, ale chtel bych to trosku rozsirit

Nahlásit jako SPAM
IP: 213.211.34.–
peter
~ Anonymní uživatel
4014 příspěvků
11. 5. 2020   #5
-
0
-

Kdyz nevidime tvuj kod, tezko ti nekdo muze poradit, co v nem mas spatne.
500 kc za kazdou zapocatou hodinu.

Nahlásit jako SPAM
IP: 2001:718:2601:258:68e6:48f3:2d23:2bda...–
peter
~ Anonymní uživatel
4014 příspěvků
11. 5. 2020   #6
-
0
-

A taky by bylo fajn, pridat tam vypis chyb, ktere ti to pise. error_reporting, mysql_error a pod. Ale, jestli ti funguje ten prvni kod, a kdyz to 3x rozkopirujes, opravis, tak nevidim duvod, proc by nemel fungovat.


Tou opravou je mysleno to, aby
html inputy name=stav byli ve tvaru name=stav1, name=stav2, ...
a vsechny php, kde je to treba opravit, napr $hodnota = sanitize($_POST['stav1']);
 

Ja bych teda pro zmenu stavu pouzil GET misto POST pro odeslani formulare, ale to je jedno. Proto jsem ti to vypsal s GETem.

Nahlásit jako SPAM
IP: 2001:718:2601:258:68e6:48f3:2d23:2bda...–
peter
~ Anonymní uživatel
4014 příspěvků
11. 5. 2020   #7
-
0
-

Jo, mimochodem, to sanitize mas spatne. Ja radeji pouzivam nazev escape, ale to tez neni dulezite :)
Takhle:

escapeHtml = htmlspecialchars
escapeSqlKey = "`" . prevedNaZnaky_az09($key) . "`"
escapeSqlKey = "`" . mysqli::real_escape_string($key) . "`"
escapeSqlValue = "'" . mysqli::real_escape_string($value) . "'"


$input = htmlentities($input); // to ma smysl jen pro vypis do html kodu, prevod & na &amp;
$input = strip_tags($input); // to ma smysl jen pro vypis html kodu, smaz tagove znacky <tag> </tag>
$input = trim($input); // smaz mezery a tabelatory pred a za textem

cili, bys tam mel mit 3 funkce. Kdyz pouziji tvou terminologii, tak

sanitizeHtml = trim + strip_tags + htmlentities nebo jen htmlentities
sanitizeRadioStav =  $value==1 ? 1 : 0 // hodnotu, kterou prectes z html input radio, porovnani s 1
$value = $value==1 ? 1 : 0 // to je totez jako if ($value==1) {$value=1;} else {$value=0;}
sanitizeSqlValue = mysqli::real_escape_string($value)
Nahlásit jako SPAM
IP: 2001:718:2601:258:68e6:48f3:2d23:2bda...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 57 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý