Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Mario 06. 12. 2016, 17:20:29
-
Dobry den
Potreboval by som pomoct s upravou php scriptu neviem kde robim chybu. Ide oto ze mam na svojej stranke pouzity toggle switch a chcem aby zapisoval do databazi 1 zapnuty 0 vypnuty. Avsak do mysql nic nezapise vedeli by ste mi poradit ?
[Kod]
index.php
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8">
function ajax(id){
var checked = $("#checkbox"+id).is(':checked');
var data = {
aktiv: id
};
$("#ajax").load("ajax.php", data);
};
</script>
<div id="NAfBke4aIqld" style="position: absolute; top: 0px; left: 0px; width: 1px; height: 1px; z-index: 2147483647;"><div id="o0xlpIFzqdWC" style="position: absolute; top: 0px; left: 0px; width: 1px; height: 1px; z-index: 2147483647;"></div></div>
<div class="state-background background-fill">
</div>
<div class="handle">
</div>
</div>
<input type="checkbox" name="switch" style="display: none;" id="checkbox1" onClick="ajax(1);">
<script src="./iOS7 Switch_files/build.js"></script>
<script type="text/javascript" charset="utf-8">
var Switch = require('ios7-switch')
, checkbox = document.querySelector('input')
, mySwitch = new Switch(checkbox);
mySwitch.el.addEventListener('click', function(e){
e.preventDefault();
mySwitch.toggle();
}, false)
</script>
ajax.php
<?php
$con = mysql_connect('localhost','root','raspberry');
mysql_select_db('controlr');
$datum = date("Y-m-d h:i:s");
if(IsSet($_POST["aktiv"]) and $_POST["aktiv"] != "") {
$id = $_POST["aktiv"];
$r = mysql_query("SELECT * FROM tabulka WHERE ID = '$id'");
if($zaznam = mysql_fetch_array($r)) {
$stav_db = $zaznam["stav"];
}
if($stav_db == 0) $stav = 1;
elseif($stav_db == 1) $stav = 0;
mysql_query("UPDATE tabulka SET stav = '$stav', datum = '$datum' WHERE ID = '$id'");
}
?>
Mysql
(https://s15.postimg.org/57gaywytl/Screen_Shot_2016_12_06_at_17_19_29.png)
-
To bude asi tím, že $_POST["aktiv"] máš prázdné.
K čemu ty 2 SQL dotazy? Udělej to jedním UPDATE.
-
1. Ak v databáze hodnota so zadaným ID neexistuje, ten skript, tak ako je napísaný, ju tam nepridá - na to je INSERT.
2. Prečítajte si niečo o sql injection :-[
-
to mame krasnou ukazku pro hovnokod.cz :-)
-
Koukám, že v té databázi chybí nejen hodnota ID, ale i sloupec ID.
Nechápu, proč se někdo snaží dávat číslo do apostrofů.
-
zapiš do php scriptu echa a podívej se, co ti vrací ajax. Doplň sloupec ID. Ten update query se zkonstruuje správně? Přidej si za to "or die(mysql_error())" a podívej se, co ti vrací ajax. Vezmi ten update query s hodnotami, které by měl obsahovat a vlož do phpmyadmina. Vrací požadovaný výsledek? Čísla v apostrofech? Lepší je spojovat proměnné s řetězci pomocí teček "bla bla bla ".$hodnota." bla bla".
Taky jsem tak začínal. Je to hrůza. Nauč se to dělat pořádně od začátku. Později se to špatně přecvičuje