Hi,
ich führe mit diesem Code einen Ajaxrequest aus. Kommt ein ein response zurück soll die Seite neu geladen werden:
Die newspoll.php sieht so aus:
Das Problem ist nun die erste Select Abfrage. Hier wird bei einem Treffer richtig mit "mysql_query("DELETE FROM news WHERE zeit < $time")" der Wert aus der DB gelöscht aber keine Antwort an das Ajax geschickt. Wenn ich allerdings "mysql_query("DELETE FROM news WHERE zeit < $time")" weg lasse wird eine Antwort an die Ajaxseite geschickt und die Seite aktuallisiert.
ich führe mit diesem Code einen Ajaxrequest aus. Kommt ein ein response zurück soll die Seite neu geladen werden:
Code:
<script type="text/javascript">
var xmlhttpreq = null;
function GetHTTPRequest() {
var xmlhttp = false;
try {
xmlhttp = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xmlhttp = false;
}
}
}
return xmlhttp;
}
xmlhttpreq = GetHTTPRequest();
function StartRequest() {
// Persistente Verbindung öffnen
var timestamp = Math.floor(new Date().getTime()/1000);
xmlhttpreq.open('GET', 'newspoll.php?timestamp='+timestamp, true);
xmlhttpreq.onreadystatechange = handle_response;
xmlhttpreq.send(null);
}
function handle_response() {
if (xmlhttpreq.readyState==4 && xmlhttpreq.status==200) {
location.reload();
}
// Bei Verbindungsabbruch gleich neu initialisieren
if (xmlhttpreq.readyState==4) {
StartRequest();
}
}
</script>
Die newspoll.php sieht so aus:
PHP:
<?php
set_time_limit(0);
include ("db.php");
$timestamp = $_GET["timestamp"];
$i = 1;
do
{
$time = time();
$abfrage = "SELECT * FROM news WHERE zeit < $time";
$ergebnis = mysql_query($abfrage);
$num = mysql_num_rows($ergebnis);
If ($num > 0)
{
echo "ja";
$i = 0;
$loesch = mysql_query("DELETE FROM news WHERE zeit < $time");
}
$abfrage = "SELECT * FROM news WHERE erstell > $timestamp";
$ergebnis = mysql_query($abfrage);
$num = mysql_num_rows($ergebnis);
If ($num > 0)
{
echo "ja";
$i = 0;
}
sleep(2);
}
while ($i > 0);
?>
Das Problem ist nun die erste Select Abfrage. Hier wird bei einem Treffer richtig mit "mysql_query("DELETE FROM news WHERE zeit < $time")" der Wert aus der DB gelöscht aber keine Antwort an das Ajax geschickt. Wenn ich allerdings "mysql_query("DELETE FROM news WHERE zeit < $time")" weg lasse wird eine Antwort an die Ajaxseite geschickt und die Seite aktuallisiert.