Probleme mit dem AJAX Comet Tutorial

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme mit dem AJAX Comet Tutorial

    Hallo,

    ich wollte nun die erste Schritte in der AJAX-Welt unternehmen, da ich bei einem meiner Projekte einige Dinge habe, die ich darüber doch sehr gerne realisieren würde. Dafür habe ich mir das hier verfügbare Tutorial ([wiki]AJAX / Comet Chat Tutorial[/wiki]) angeschaut. Das Beispiel 2, dass also eine Aktualisierung des Contents nur bei rand(1,20) == 5 stattfindet, läuft bei mir problemlos und nun will ich es auf meine Bedürfnisse anpassen.

    Dafür habe ich meine Datenbank angebunden und frage zu beginn einfach nur ab, wie viele neue Datensätze seit dem letzten Mal hinzugekommen sind. Füge ich an die Ausgabe einfach ein mysql_num_rows($sql) an, funktioniert das prima (bei gleichbleibender Bedingung).

    Nun möchte ich allerdings die Ausgabe nicht zufällig erhalten, sondern nur exakt dann, wenn es neue Datensätze in der Datenbank gibt. Also habe ich die Anweisung

    Quellcode

    1. if (rand(1,20 == 5)
    auf

    Quellcode

    1. if (mysql_num_rows($sql) > 0)
    geändert. Seitdem bekomme ich keinerlei Ausgabe mehr. $sql ist bei mir ein fertiger mysql_query(), der auch funktioniert. Setze ich statt > ein >= ein, so bekomme ich bei jedem Aufruf Antworten. Nur mit > passiert garnichts.

    Eine weitere Änderung, die ich vorgenommen habe (die davon aber unabhängig sein sollte) : Neue Beiträge werden nicht an den bisherigen Text angehängt, sondern oben drüber geschrieben.

    Hat jemand eine Idee, woran das liegen könnte?

    Würde mich über Hilfe freuen, da ich doch schon eine Weile an diesem Problem sitze und es mir einfach nicht einleuchten will, wieso es nicht funktioniert.

    Gruß,
    Sorcerer
  • Bitte den Syntax richtig vorheben ;). Unter dem Editor-Feld findest du eine Leiste, wo es Sprachen-Spezifische einträge gibt.

    Sicher, dass du neue Einträge hast, die angezeigt werden sollten? Überprüf das am besten mit phpMyAdmin.
    Wie sieht dein SQL-Query aus?

    Das es mit >= funktioniert, ist logisch. Schließlich führt er es dann auch aus, wenn du keine neuen Einträge hast ;).
  • Hallo,

    die Codeformatierung werde ich künftig berücksichtigen, sorry dafür. Bin zuerst auf den Code-Button über dem Textfeld gestoßen.

    Mein Query sieht so aus:

    Quellcode

    1. SELECT * FROM throws WHERE date > ".$timestamp." ORDER BY date DESC
    und er funktioniert auch definitiv, weil sobald ich eine andere Bedingung einfüge (die ein Ergebnis liefert) und im return-text einfach ein mysql_num_rows() anhänge

    Quellcode

    1. return array( 'lastupdate' => time(),
    2. 'html' => '<p>server is still alive at '.date('Y-m-d H:i:s').' - '.mysql_num_rows($sql).' neue Ergebnisse</p>' );
    dann steht da dann immer die passende Anzahl dabei.

    Dass es neue Einträge gibt, kann ich garantieren, weil ich die, während ich mir das ganze auf meinem Desktop-PC anschaue, auf meinem Laptop generiere.

    Ist die Bedingung unabhängig von der Anzahl der neuen Einträge, dann steht halt im Text (je nach Bedingung unterschiedlich häufig) ein "0 neue Ergebnisse" und wenn ich dann ein paar generiere, steht da entsprechend "3 neue Ergebnisse" - oder halt mehr/weniger, je nachdem, wie viel Zeit ich hatte, welche zu erzeugen. Sobald ich als Bedingung

    Quellcode

    1. if (mysql_num_rows($sql) > 0)
    wähle, passiert nichts mehr, egal ob ich neue Einträge generiere oder nicht. Für ein >= gibt es alle 0,2 Sekunden einen Output, der halt dann heißt 0 neue Ereignisse oder 1 neues Ereignis (mehr als eins schaffe ich in der Zeit nicht auszulösen).

    Ich habe auch schonmal die Zeit von 0,2 auf 2 Sekunden angehoben, allerdings ohne eine Änderung festzustellen, obwohl ich in den 2 Sekunden deutlich mehr neue Einträge produziert habe.

    Gruß,
    Sorcerer
  • Hallo,

    ich hatte das weiterführende Tutorial registriert, allerdings nicht soweit geschaltet, dass es grundsätzlich das tut, was ich auch möchte und deswegen nicht weiter berücksichtigt. Ich habe es nun bei mir in einem ersten Testmodus aktiviert und es funktioniert. Das klärt allerdings noch immer nicht, wieso das andere Script mit der anderen Bedingung nicht funktioniert hat... Falls dazu jemand eine Idee hat, würde ich sie gerne hören ;)

    So, nun werd ich mich aber mal dran machen, den Code nicht nur Testhalber zu vernwenden, sondern wirklich auch in mein eigentliches Script zu übernehmen.

    Danke euch jedenfalls für die Hilfsbereitschaft. Ich glaube, ich werde in nächster Zeit (wenn mein Studium mir die Zeit dazu lässt...) mich weiteren Aufgaben bei mir widmen, die den Einsatz von AJAX erfordern und entsprechend hier wohl noch ein paar weitere Anfängerfragen stellen ;)

    Gruß,
    Sorcerer

    EDIT: Thema kann als erledigt markiert werden. Da ich noch keinen Account hatte bei der Themenerstellung, kann ich das wohl nicht selbst ändern...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sorcerer ()