Chat - Anfängerfragen

Gosu

New member
Hallöchen allerseits!

Ich bin noch relativ neu dabei was Javascripts anbelangt. Was ich erstellen möchte ist ein Chat. Oder beser gesagt ich habe bereits einen erstellt und möchte diesen allerdings nun etwas optimieren. Aktuell sieht es so aus das ich über einen Interval eine Funktion aufrufe, welche ein PHP-Script aufruft und eine Datenbankabfrage startet. Die Rückgabe wird danninnerhalb eines Div's ausgegeben.

mal nen Link zum Chat -> Chat by Gosu

Das Ganze hat 2 Probleme in meinen Augen. Punkt 1 ist das es schlecht für die Performance ist und Punkt2 ist, dass man keinen Text aus dem Chat kopieren kann, da dauernd refresht wird.


ich habe 2 Funktionen erstellt die momentan inaktiv sind...
function perma_Reload_max_Messages_Id(str)
function perma_Reload_read_Messages_Id(str)

mit diesen Funktionen möchte ich zum einen Abfragen, wieviele Nachrichten es insgesammt gibt (Abfrage der grössten Messages_ID) und eine weitere Abfrage (Abfrage der ID die jeder user bekommtm, welche sagt was der user bereits gelesen hat.

Mein Problem ist das ich nicht weiss wie ich die Ausgabewerte dieser beiden Abfragen vergleichen kann (da die Variablen aus Funktion1 in Funktion2 scheinbar leer sind). Ich muss diese allerdings vergleichen um dann Funktion3 aufzurufen, welche die neuen (noch nicht gelesenen Nachrichten) Ausgibt.

Für verbesserungsvorschläge bin ich immer zu haben.

Und sorry nochmal das ich nu das 3. mal poste! Hatte erst einmal gepostet...dann gesehen das mir der Titel nicht ganz gefällt...zurückgegangen...abgeändert...nochmal gepostet und alten gelöscht...und dann gesehen das der 2. zwar den gewünschten Titel hatte, aber iwie war der ganze Inhalt weg!!! Und ich hatte wesentlich mehr geschrieben als hier...könnte mir selber in den A.... :D Hoffe es ist mir zu verzeihen!!!

Sofern doch noch mehr Infos/Code gewünscht ist einfach sagen dann schick ich ggf nochmal nach!
 
Den Titel kann man ändern, dafür braucht man keinen neuen Thread eröffnen. Ist aber nicht schlimm, ich bereinige das gleich.

Bezüglich Chat würde ich dich bitten, mal hier im Forum ein bisschen die Suchfunktion zu nutzen, da haben wir schon viele sehr gute Lösungen erarbeitet. Ist nämlich auch die Frage, welche techn. Möglichkeiten du hast. Außer normalen Formular- oder Ajax-Requests gibt es nämlich noch andere Techniken, die aber serverseitig zugelassen sei müssen.
 
Mein Problem ist das ich nicht weiss wie ich die Ausgabewerte dieser beiden Abfragen vergleichen kann (da die Variablen aus Funktion1 in Funktion2 scheinbar leer sind). Ich muss diese allerdings vergleichen um dann Funktion3 aufzurufen, welche die neuen (noch nicht gelesenen Nachrichten) Ausgibt.
du musst die ergebnisse beider funktionen in einem scope speichern, auf dem beide zugriff haben.
* also im einfachsten fall global, was aber schlecht wäre.
* in eine (anonyme) kapselfunktion
Code:
(function()
{
  var nAllMsg = 0;
  var nKnownMsg = 0;
  ...
  // deine funktionen
})();
* du speicherst beide ergebnisse an einem objekt, welches auch die funktionen bereitstellt
Code:
var obj = {
  nAllMsg: 0,
  nKnownMsg: 0,
  perma_Reload_max_Messages_Id: function(str){...},
  perma_Reload_read_Messages_Id: function(str){...}
}
 
:)Möchte mich erst einmal bedanken für die Antworten!

Was den Titel anbelangt...Asche über mein Haupt!!! :D Zu meiner Verteidigung...ich hätte schon etwas früher schlafen müssen und wollte aber unbedingt noch hier posten...das es so unschön verlief...naja hatte erst alles mehr als ausführlich beschrieben gehabt und dann sowas...hätte selber heulen können! :D

@ mikdoe:
Was die Sache mit den Techniken anbelangt steh ich noch auf dem Schlauch - werde aber dann wohl mal ne Weile hier suchen. Wobei namen dieser Funktionen nett gewesen wären, da ich sonst nicht wirklich weiss wonach ich suchen sollte. Allerdings bin ich mir auch nicht so ganz sicher, ob es für mich ratsam ist -> wie gesagt bin absolut blutiger anfänger mit Javascript. Der Chat den ich da habe, den habe ich zu 90% oder mehr mit php geschrieben. Bin so schon froh das ich es bis dahin überhaupt zum laufen bekommen hab (war für mich aber auch vermutlich weit mehr Arbeit, als ihr euch vllt vorstellt lach...). :)

@ hesst:
das ist mir schon zu hoch..hab ka wie ich das genau machen sollte...
habe das mal so versucht was kogischer weise nicht klappen kann, aber weiss auch nicht genau wie ich es ändern müsste, da ich den Teil mit "obj" nicht wirklich verstehe....werde da wohl gleich mal nach suchen...hätte aber auch gegen Hilfe nichts einzuwenden! :)

Code:
<script>
(function()
{
    var nAllMsg = 0;
    var nKnownMsg = 0;

    $(document).ready(function()
    {
        $("button").click(function()
        {
            $.ajax(
            {
                url: "test.php", async: false, success: function(result)
                {
                    nKnownMsg = result;
                    alert(nKnownMsg);
                    $("#div1").html(result);
                }
            });
        });
    });

    $(document).ready(function()
    {
        $("button").click(function()
        {
            $.ajax(
            {
                url: "test2.php", async: false, success: function(result)
                {
                    nAllMsg = result;
                    alert(nAllMsg);
                    $("#div2").html(result);
                }
            });
        });
    });
    [COLOR="#FF0000"]var obj = {
        nAllMsg: 0,
        nKnownMsg: 0,
        perma_Reload_max_Messages_Id: function(str){...},
        perma_Reload_read_Messages_Id: function(str){...}
    }[/COLOR]
    if(nKnownMsg < nAllMsg)
    {
        alert("DB muss abgefragt werden!");
    }
})();
</script>

Also den roten Teil verstehe ich momentan noch garnicht....und beim Rest hoffe ich mal das es so passt! xD
 
Zurück
Oben