Edit: das Problem tritt nun auch bei niedrigeren ids als 50 für last auf. hatte ids im 20ziger bereich für last und alles super, dann habe ich weitere einträge gelöscht und für last wurde somit nur noch id 4 übergeben und chat ist leer. also hat mit 50 nichts zu tun, somit kann ich nicht sagen wann der fehler auftritt, nur das er dauernd auftritt, aber die tatsache, dass das script nicht in die if läuft und id_new kein wert bekommt ist nach wie vor gültig.
ich bin kurz davor Wahnsinnig zu werden! ich habe einen Fehler in meinem script der für mich einfach nur unlogisch ist und ich sehe daher die ursache nicht. ich habe versucht mit der konsole, dem fehler auf die schliche zu kommen. nun den fehler glaube ich gefunden zu haben, aber die ursache nicht. ich hoffe jemand mit mehr erfahrung kann mir weiterhelfen. durch diesen fehler funktioniert das gesamte script nicht und somit komme ich seit 2 tagen nicht weiter und es muss funktionieren.
möchte sich jemand direkt selbst auf die suche machen und die konsole quälen, dann freut mich das natürlich sehr und hier dafür die seite und logindaten:
http://www.sparcubes.de
login: Gast
pw: gast
ich fasse mal zusammen was ich rausgefunden habe. relevante script stellen mit bezug poste ich direkt dazu. die vollständigen quellcodes hänge ich unten an. ich hoffe, dass es so besser nachvollziehbar ist.
noch kurz als vorab info, es handelt sich um einen chat, das sollte vielleicht noch gesagt sein. ^^ so wisst ihr wenn ihr selbst auf der seite schaut auch wenigstens worum es geht.

das problem was ich habe ist, dass der chatstream irgendwann einfach leer bleibt und keine nachrichten mehr geladen werden.
Also was habe ich rausgefunden?
1. habe ich festgestelltdas der fehler auftritt sobald die id-abfrage in der home.php einen wert größer als 50 erhält und als folge plötzlich der chatstream plötzlich leer bleibt.
Als Bezug dieser Auszug:
hierbei handelt es sich um die 50. letzte id im chatlog, die beim ersten aufruf ermittelt wird, damit direkt die letzten 50 beiträge im chat sind.
Code: Alles auswählen
$startid = runSQLQuery ("SELECT id FROM chat_log ORDER BY id DESC LIMIT 49,1");
$startid = mysql_fetch_array($startid);
$startid = $startid == false ? "0" : $startid['id'];
...
...
...
<input type="text" id="last_chat_entry" value="<?php echo $startid; ?>" />
hier als Bezug die chatquery.php:
Code: Alles auswählen
<?php
require_once ("../../config.php");
require_once ("../../connect.db.php");
$id2 = runSQLQuery ("SELECT id FROM chat_log ORDER BY id DESC LIMIT 0,1");
$id2 = mysql_fetch_array($id2);
echo $id2['id'];
?>
Code: Alles auswählen
$.ajax ({
type: "POST",
url: "/includes/chat/chatquery.php",
>>> success: function (id2) { <<<
if (id2 > last) {
last2 = last;
last = id2;
id_new = id2;
loadchat();
}
else {
window.setTimeout("controlling()", 1000);
}
}
});
4. setze ich in der if-bedingung id2 oder last händisch auf den aktuell entsprechenden wert, dann funktioniert es wieder, was zudem dafür spricht, das es bei der wertübergabe an die if probleme gibt.
ABER WARUM?
bis last <= 50 funktioniert alles einwandfrei
bei last > 50 erhält last nach wie vor den korrekten wert und id2 erhält laut debugging auch den richtigen wert, aber die if wird nie ausgeführt (was sie aber sollte) und id_new = id2 wird nie gesetzt.
ich finde das alles so unlogisch und sehe absolut nicht die ursache für diesen fehler.
Nun der gesamte quellcode als Referenz:
chat.control.js:
Code: Alles auswählen
//Controlling
var last = $("#last_chat_entry").val();
var id_new;
var last2;
var userlist = 60;
var noreload = 0;
function controlling () {
if (noreload == 0) {
if (userlist == 60) {
userlist = 0;
$.ajax({
type: "POST",
url: "/includes/chat/user.on.php",
success: function (msg) {
$("#userStream").html(msg);
}
});
}
userlist++;
$.ajax ({
type: "POST",
url: "/includes/chat/chatquery.php",
success: function (id2) {
if (id2 > last) {
last2 = last;
last = id2;
id_new = id2;
loadchat();
}
else {
window.setTimeout("controlling()", 1000);
}
}
});
$("#new_chat_entry").val(id_new);
}
}
controlling();
function loadchat () {
$.ajax ({
type: "POST",
url: "/includes/chat/loadchat.php",
data: "id=" + last2 + "&id2=" + id_new,
success: function (msg) {
zeichen = new Array (/auml/g, /Auml/g, /ouml/g, /Ouml/g, /uuml/g, /Uuml/g, /szlig/g);
ersetzen = new Array ("ä","Ä","ö","Ö","ü","Ü","ß");
for (i=0; i<zeichen.length; i++) {
msg = msg.replace(zeichen[i],ersetzen[i]);
}
$("#chatStream").append(msg);
window.setTimeout("controlling()", 1000);
document.getElementById("chatStream").scrollTop = document.getElementById("chatStream").scrollHeight;
}
});
}
//Message senden
$("#msgSenden").submit(function() {
if ($("#chatMsg").val() != "") {
noreload = 1;
$("#response").html("Sende...");
message = $("#chatMsg").val();
$("#chatMsg").val("");
zeichen = new Array (/\u00e4/g, /\u00c4/g, /\u00f6/g, /\u00d6/g, /\u00fc/g, /\u00dc/g, /\u00df/g);
ersetzen = new Array ("auml","Auml","ouml","Ouml","uuml","Uuml","szlig");
for (i=0; i<zeichen.length; i++) {
message = message.replace(zeichen[i],ersetzen[i]);
}
$.ajax ({
type: "POST",
url: "/includes/chat/sendmsg.php",
data: "message=" + message,
success: function (msg) {
$("#response").html("Gesendet.");
$("#chatMsg").focus();
noreload = 0;
window.setTimeout("controlling()", 1000);
}
});
}
else {
alert ("Bitte gebe eine Nachricht ein!");
}
return false;
});
$("#chatMsg").keypress(function (event) {
if (event.which == 13) {
$("#msgSenden").submit();
$("#areacount").html("500");
return false;
}
});
$("#chatMsg").keyup(function () {
$("#areacount").html(500 - $("#chatMsg").val().length);
});
Code: Alles auswählen
<?php
require_once ("../../config.php");
require_once ("../../connect.db.php");
$id2 = runSQLQuery ("SELECT id FROM chat_log ORDER BY id DESC LIMIT 0,1");
$id2 = mysql_fetch_array($id2);
echo $id2['id'];
?>
Code: Alles auswählen
<?php
require_once ("../../config.php");
require_once ("../../connect.db.php");
require_once ("../functions/date.format.php");
$id = $_POST['id'];
$id2 = $_POST['id2'];
$messages = runSQLQuery ("SELECT * FROM chat_log WHERE id > '{$id}' AND id <= '{$id2}' ORDER BY id ASC");
while ($msg = mysql_fetch_array($messages)) {
$groupid = runSQLQuery ("SELECT groupID FROM user_daten WHERE username = '{$msg['username']}'");
$groupid = mysql_fetch_array($groupid);
$chatColor = runSQLQuery ("SELECT chat_color FROM user_groups WHERE groupID = '{$groupid['groupID']}'");
$chatColor = mysql_fetch_array($chatColor);
?>
<b class="pointer" title = "<?php echo dateFormat($msg['timestamp'],"s"); ?>"><span style="color:<?php echo $chatColor['chat_color']; ?>"><?php echo htmlentities($msg['username']); ?></span></b> - <?php echo htmlentities($msg['message']); ?><br />
<?php
}
?>
gruß
knuff