Witam,
Chciałbym nadmienić, że to mój pierwszy skrypt wykorzystujący AJAX'a i jeszcze nie za bardzo czaje ocb.
Skrypt ma na bieżąco sprawdzać dostępne godziny w na liście 'termin'. Wygląda to tak:
termin.php:
<?php
if($_POST['confirm']){
require("mysql.php");
$query="UPDATE wizyty SET zajety=1 WHERE godz='".$_POST['termin'].":00'";
$result = mysql_query($query) or die ("Blad przy wykonywaniu zapytania: " .mysql_error());
echo "Termin: ".$_POST['termin'];
echo " Zmianiono ".mysql_num_rows($result)." wpis w bd.";
}
?>
<html>
<script>
function populate(inForm){
ajax();
(...)
}
(...)
function ajax(){
function getXMLHttpRequest() {
var request = false;
try {
request = new XMLHttpRequest();
} catch(err1) {
try {
request = new ActiveXObject('Msxml2.XMLHTTP');
} catch(err2) {
try {
request = new ActiveXObject('Microsoft.XMLHTTP');
} catch(err3) {
request = false;
}
}
}
return request;
}
var r;
r = getXMLHttpRequest();
r.open('GET', 'response.php', true);
r.send(null);
r.onreadystatechange = processResponse;
function processResponse(){
if (r.readyState == 4) {
if (r.status == 200) {
for(i=0; i<r.responseXML.getElementsByTagName('godz').length; i++){
form1.termin.options[i] = new Option(r.responseXML.getElementsByTagName('godz')[i].childNodes[0].nodeValue, r.responseXML.getElementsByTagName('godz')[i].childNodes[0].nodeValue);
}
}
}
}
}
</script>
<body onLoad="populate(form1);">
<form name="form1" method="post">
Termin:<select name="termin" onFocus="ajax()"></select>
<input type="submit" name="confirm" value="OK">
</form>
</body>
</html>
response.php:
<?php
header('Content-type: text/xml');
require ("mysql.php");
$query = "SELECT godz FROM wizyty WHERE zajety=0";
$result = mysql_query($query) or die ("Blad przy wykonywaniu zapytania: " .mysql_error());
$num = mysql_num_rows($result);
if ($num > 0) {
$zmienna='<?xml version="1.0" encoding="utf-8"?>';
$zmienna.='<response>';
while ($row = mysql_fetch_row($result)) {
$part =str_split($row[0], 5);
$zmienna.='<godz>'.$part[0].'</godz>';
}
$zmienna.='</response>';
echo $zmienna;
}
else
{
echo "Nie ma rekordów w bazie!";
}
?>
Problem w tym, że jeśli otworzę sobie w przeglądarce 2 takie formularze i zatwierdzę godzinę w pierwszym, to w pierwszym wszystko ładnie się przeładuje, a w drugim po kliknięciu na listę znika zatwierdzona w pierwszym form. godzina, ale ostatnia na liście powtarza się dwa razy. Jak to zlikwidować?