Ajax/PHP Chat Problem

Hallo liebe WWW-User,

ich brauche mal wieder die Hilfe eines AJAX/PHP Experten!
Ich bin dabei einen einfachen AJAX Chat zu programmieren und stoße auf ein Problem.

Ich lese aus einer Datenbank alle User aus und liste sie auf.
Beim „OnClick“ lädt Ajax, aus der selben Datendank den Chatverlauf der jeweiligen Person und die Talk_ID (siehe unten). Danach „kopiert“ das Script die einzelnen Posts in den .

Die Datenbank ist folgendermaßen aufgebaut:
Absender
Empfaenger
Text
Chat_ID
(ID der Nachricht, bzw. des Datenbankeintragen = unabhängig vom Chatpartner)
Talk_ID
(ID der Unterhaltung:
Person-A Person-B = 1
Person-C Person-A = 2)

Soweit alles kein Problem.
Nach gewisser Zeit (5 Sekunden) soll AJAX jetzt die Post laden die der Talk_ID des Chatpartners entsprechen, aber eine größere Chat_ID als die vorherigen haben, sonst lädt er ja alle 5 Sekunden alle Posts neu!

Mein Problem:
Wie kann ich die beim ersten AJAX-Request ermittelte höchste Chat_ID und die Talk_ID dem 2. AJAX Script übergeben?
Hab es mit globalen Javascript Variablen probiert -> Ging nicht AJAX ist ja asynchron und die „TimeOut Update“-Funktion findet sie nicht.
Hab es mit inner.HTML in der ersten AJAX Abfrage probiert, aber auch darauf hat das 2. Script keinen Zugriff, da ein AJAX Script ja so zu sagen unabhängig von allen anderen Elementen der Hauptseite erstellt wird und so auch dort nichts „suchen“ kann.

Habt ihr einen Lösungsvorschlag?
Ich kann auch noch die Datenbank umbauen, wenn es sein muss, weil die Seite momentan noch lokal auf meinem PC läuft und nicht online ist!
Wenn ihr Code-Schnipsel braucht sagt bescheid, denke aber, dass ich mein Problem sehr ausführlich erklärt habe!

LG Alexander

Moin moin,

Hab es mit inner.HTML in der ersten AJAX Abfrage probiert,
aber auch darauf hat das 2. Script keinen Zugriff, da ein AJAX
Script ja so zu sagen unabhängig von allen anderen Elementen
der Hauptseite erstellt wird und so auch dort nichts „suchen“
kann.

Das mir neu .
Selbe domain selber aufrufer , selber dom .

übrigens, hättest dir die ganze erklärung sparen können.
keiner wird schlau daraus was script1 und script2 bedeutet ?
Selbe webseite , selbe domain ?
Ohne Klares Vollständiges Beispiel wird das so nix. Du musst das schon so
nachvollziehbar und leicht machen , das leute die ncht bei dir zuhause und im kopf sind , das für eine Lösung nutzen können.

Es gibt regeln , und ohne Beispiel , weiss man nicht welche Regel du wie interpretierst.

Selbe Webseite/Domain
Ich hab hier mal die 2 Dateien, wenn das weiterhilft:
chat.php:

function updateChat(user)
{
document.getElementById(„ajax“).innerHTML="<center><img src=‚images/loading.gif‘></center>";
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject(„Microsoft.XMLHTTP“);
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(„ajax“).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open(„GET“,„functions/chat_ajax.php?action=load&user=“+user,true);
xmlhttp.send();
}
function SendChat(talk,chatid)
{
var Content = document.getElementById(„ajax“).innerHTML;
document.getElementById(„ajax“).innerHTML=document.getElementById(„ajax“).innerHTML + „<center><img src=‚images/loading.gif‘></center>“;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject(„Microsoft.XMLHTTP“);
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(„ajax“).innerHTML=Content + xmlhttp.responseText;
}
}
xmlhttp.open(„GET“,„functions/chat_ajax.php?action=update&talk=“+talk+"&chatid="+chatid,true);
xmlhttp.send();
}

<?php echo "
"; echo " "; $abfrage = "SELECT \* FROM user WHERE user != '$user' and status != 'unactivated' ORDER BY user"; $ergebnis = mysql\_query($abfrage); while($row = mysql\_fetch\_object($ergebnis)) { $functionuser = $row-\>user; $P = "50"; include("functions/userinfo.php"); echo " $onlinestatus $row-\>user "; } echo " "; echo " "; echo " "; echo " "; echo " "; echo ""; echo " Senden "; echo " "; echo " "; echo " "; echo ""; ?\> chat\_ajax.php: <?php session_start();
header("Content-Type: text/html; charset=iso-8859-1"); ?\><?php $user = $_SESSION['user'];
$partner = $\_GET['user']; if ($\_GET['action'] == "load") { echo " ### $partner - $user"; include("../sql.php"); $functionuser = $partner; $P = "50"; include("userinfo.php"); $Partnerbild = $Userbild; $functionuser = $user; $P = "50"; include("userinfo.php"); echo " "; $abfrage = "SELECT Talk\_ID FROM chat WHERE empfaenger = '$user' and absender = '$partner' LIMIT 0,1"; $ergebnis = mysql\_query($abfrage); while($row = mysql\_fetch\_object($ergebnis)) { $Talk\_ID = $row-\>Talk\_ID; } if ($Talk\_ID == "") { $abfrage = "SELECT Talk\_ID FROM chat WHERE empfaenger = '$partner' and absender = '$user' LIMIT 0,1"; $ergebnis = mysql\_query($abfrage); while($row = mysql\_fetch\_object($ergebnis)) { $Talk\_ID = $row-\>Talk\_ID; } } $abfrage = "SELECT \* FROM chat WHERE Talk\_ID = '$Talk\_ID' ORDER BY Talk\_ID"; $ergebnis = mysql\_query($abfrage); while($row = mysql\_fetch\_object($ergebnis)) { if ($row-\>absender == $user) { $Bild = $Userbild; $Float = "right"; } else { $Bild = $Partnerbild; $Float = "left"; } echo " "; echo " "; echo "$row-\>text"; echo " "; echo " "; $Last\_Chat\_ID = $row-\>Chat\_ID; } echo " "; echo " $Talk\_ID "; echo " $Last\_Chat\_ID "; #Beide DIVS sind nach der ersten Abfrage gefüllt :wink: } elseif ($\_GET['action'] == "update") { $Talk\_ID = $\_GET['talk']; $Last\_Chat\_ID = $\_GET['chatid']; include("../sql.php"); $functionuser = $partner; $P = "50"; include("userinfo.php"); $Partnerbild = $Userbild; $functionuser = $user; $P = "50"; include("userinfo.php"); $abfrage = "SELECT \* FROM chat WHERE Talk\_ID = '$Talk\_ID' and Chat\_ID \> '$Last\_Chat\_ID' ORDER BY Talk\_ID"; $ergebnis = mysql\_query($abfrage); while($row = mysql\_fetch\_object($ergebnis)) { if ($row-\>absender == $user) { $Bild = $Userbild; $Float = "right"; } else { $Bild = $Partnerbild; $Float = "left"; } echo " "; echo " "; echo "$row-\>text"; echo " "; echo ""; $Last\_Chat\_ID = $row-\>Chat\_ID; } echo " document.getElementById('Talk\_ID').innerHTML = '$Talk\_ID'; document.getElementById('Last\_Chat\_ID').innerHTML = '$Last\_Chat\_ID'; "; } ?\> Hoffe das hilft dir/euch weiter! :wink: LG Alexander

Hab es mitlerweile selber gelößt!
Ging eigentlich total einfach, mit ein paar PHP-Sessions!
Ignoriert meinen schlecht geschriebenen Code einfach! :wink:

Ach so du sprichst vom PHP - Script und nicht vom JS Script .

Hat also garnichts mit dem DOM sondern, wie halte ich PHP Script Daten .