mysql-PHP chat onlineanzeige

  • mysql-PHP chat onlineanzeige

    Hallo,
    ich habe einen chat mit PHP und MYSQL geschrieben. Das klappt auch prima, nur an der Online anzeige (wer die Chat-Seite gerade offen hat) harpert es!
    Ich dachte es wäre am besten wenn ich es so mache:
    Alle 5 Sekunden wird der eigene Name eingetragen (oder aktualisiert) und alle Namen, die älter als 6 Sekunden alt sind, werden gelöscht.
    Hier ist der Code:


    PHP-Quellcode

    1. mysql_query("DELETE FROM online WHERE TIMESTAMPDIFF(SECOND, time, NOW()) > 6;",$connect);
    2. //Alte Namen werden gelöscht
    3. mysql_query("DELETE FROM online WHERE name='".mysql_real_escape_string($name)."';",$connect);
    4. //Der eigene Name wird ausgetragen
    5. mysql_query("INSERT INTO online (name,time) VALUES ('".$name."',NULL);", $connect);
    6. //... und wieder eingetragen
    7. //Dann werden die Nachrichten ausgelesen
    8. //Hier werden alle Namen angezeigt
    9. $sql_string = "SELECT * FROM online ORDER BY name ASC;";
    10. $ergebnis = mysql_query($sql_string, $connect);
    11. $rows = mysql_num_rows($ergebnis);
    12. echo 'Online:<br>';
    13. for ($i=0; $i<$rows; $i+=1)
    14. {
    15. echo mysql_result($ergebnis,$i,"name");
    16. echo "<br>";
    17. }
    Alles anzeigen



    Nur wenn ich das Fenster dann öffne, ist es manchmal so, dass der eigene Name oder der Name von jemandem, der eigentlich online ist, nicht angezeigt wird.

    Woran könnte das liegen, wie könnte ich das verbessern oder gibt es eine bessere methode für eine Onlineanzeige?

    Viele Grüße,
    maxda



    EDIT: Teil vom Code vergessen!

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

  • Du solltest erst mal beim eintragen nicht mit NULL sondern mit NOW() arbeiten. Sonst trägst du noch als Zeit 01.01.1970 0:00 ein und das ist definitiv länger her als jeweils 6 Sekunden.

    Desweiteren verwendest du die Variable $rows, die wird aber im gezeigten Stück Code nirgendwo gesetzt. Wäre also durchaus denkbar, das $rows nicht mit der tatsächlichen Anzahl an Einträgen übereinstimmt. Das selbe gilt für den Query String, dessen Ergebnis in der Variable $ergebnis wohl gespeichert sein sollte. Auch dieser Codeteil ist nicht hier drin.

    Du zeigst uns zwar etwas relevanten Code, aber nicht den ganzen. Probleme, die außerhalb des gezeigten Teiles existieren, kann dir keiner beheben.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Benutzer online 1

    1 Besucher