Hallo,
ich such nun schon seit längerem nach einer Lösung für mein Problem, dass ich aus einer Javascript-Funktion heraus einen Datenbankwert aktualisiere.
Dass dies ohne einer Server seitigen Programmiersprache wie PHP nicht möglich ist, ist mir bereits bewusst. Leider bekomme ich die Verbindung zwischen Client (Javascript) und Server (PHP) nicht so ganz hin...
Hier mal die wichtigen teile meines nicht funktionierenden Codes:
index.html:
<script type="text/javascript">
var request_Toggle = new XMLHttpRequest();
var stock = "og";
var licht = new Array(21);
function Licht_Click(lichtnr)
{
var url = "DB_Toggle.php";
//Request öffnen
request_Toggle.open('post', url , true);
//Requestheader senden
request_Toggle.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
//Request senden
request_Toggle.send('stock=' + stock + '&lichtnr=' + lichtnr);
//Request auswerten (PHP hat eig. keinen "Rückgabewert", dient nur zum aufruf der "Request_DB_auslesen" fkt.
request_Toggle.onreadystatechange = interpret_Request_Toggle;
}
function interpret_Request_Toggle()
{
switch (request_DB.readyState)
{
case 4:
if (request_DB.status != 200)
alert("AJAX request ist abgeschlossen hat aber folgenden Fehler:" + request.status);
else
{
//Erneutes auslesen und aktualisieren der Werte
Request_DB_auslesen(stock);
}
break;
default:
break;
}
}
</script>
<img id="Img_licht8" src="Bilder/licht_0.png" onclick="Licht_Click(8)" style="position:absolute; top:145px; left:970px;" />
DB_Toggle.php:
<?php
header('Content-Type: text/html; charset=utf-8');
$stock = $_POST['stock'];
$lichtnr = $_POST['lichtnr'];
//Mit MSSQL-Server verbinden
$serverName = "(local)\SQLEXPRESS";
$connOptions = array("Database"=>"S7_Haus_Variablen");
$conn = sqlsrv_connect($serverName, $connOptions);
if($conn === false)
{
echo "Verbindung zu MSSQL-Server fehlgeschlagen.</br>\n";
die( print_r( sqlsrv_errors(), true));
}
switch ($stock)
{
case "og":
$query = "UPDATE obergeschoss SET Wert_Toggle=1 WHERE [index]=" + $lichtnr;
$stmt = sqlsrv_query($conn, $query);
break;
case "eg":
$query = "UPDATE erdgeschoss SET Wert_Toggle=1 WHERE [index]=" + $lichtnr;
$stmt = sqlsrv_query($conn, $query);
break;
case "ke":
$query = "UPDATE keller SET Wert_Toggle=1 WHERE [index]=" + $lichtnr;
$stmt = sqlsrv_query($conn, $query);
break;
case "ga":
$query = "UPDATE garage SET Wert_Toggle=1 WHERE [index]=" + $lichtnr;
$stmt = sqlsrv_query($conn, $query);
break;
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
Wenn gewünscht kann ich auch gerne die komplette Website hier rein kopieren.
Wichtig ist im Grunde bloß, dass beim einem klick auf ein Bild ein Datenbankwert aktualisiert wird und nach erfolgreicher Aktualisierung eine Javascript Funktion aufgerufen wird, wobei dieser Funktionsaufruf auch nicht unbedingt sein muss.
Die Website wird mittels Passwort geschützt und es greifen, wenn überhaupt, maximal 5 Personen gleichzeitig drauf zu. Ich lege deshalb relativ wenig wert auf Browserkompatibilität und Ressourcenschonung.
Ich hoffe es findet sich jemand der mir bei diesem Problem helfen kann,
Toast