kostenloser Webspace werbefrei: lima-city


Chat Aktualisierung

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    testworld

    testworld hat kostenlosen Webspace.

    Ich möchte gerne das mein Chat sich automatisch alle 1,5sec aktualisiert(keinensogre nicht auf lima^^) die php tag/datei">datei chat.php sieht so aus:
    <?php
    include('inc/connect.php');// Verbindung aufbauen
    
    
    $zeit = time() - 420;
    
    $chatabfrage = "SELECT userID, text FROM chat WHERE zeit >= '$zeit'";
    $chatergebnis = mysql_query($chatabfrage);
    while($chat = mysql_fetch_object($chatergebnis))
       {
       $nameabfrage = "SELECT username FROM user WHERE id = '$chat->userID'";
    $nameergebnis = mysql_query($nameabfrage);
    $name = mysql_fetch_object($nameergebnis);  
    
       echo "$name->username : $chat->text <br />";
       }
    ?>


    Da ich aber nicht JS kann weiß ich nicht wie ich das verwirklichen kann o.O Google hat mir auch keine wirklichen Lösungen geliefert^^
    Wie verwirkliche ich das am besten?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Das geht generell (soweit ich informiert bin) nur mit AJAX
    AJAX = Asyncronus Javascript And Xml, was soviel heißt, dass es auf Javascript basiert und mit XML arbeitet.
    Die Funktion, die du nützen willst ist leicht umzusetzen. Du brauchst nur ein PHP-Script (das du bereits hast) und ein HTML oder PHP File in dem das ganze dann in einem (schönen) Layout präsentiert wird. Zusätzlich musst du das ganze noch alle 1,5 Sekunden mit einem Intervall (wird in UNIX-Zeit angegeben) aktualisierst.

    Das AJAX Script: load.js:
    function loadData()
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'pfad/zu/deiner/datei.php', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("chatwindow").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send(null);
     }
    }
    
    //globale Instanz von XMLHttpRequest
    var xmlHttp = false;
     
    //XMLHttpRequest-Instanz erstellen
    //... fuer Internet Explorer
    try {
        xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        try {
            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
            xmlHttp  = false;
        }
    }
    //... fuer Mozilla, Opera, Safari usw.
    if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
        xmlHttp = new XMLHttpRequest();
    }
    setInterval("loadData()", 1500);
    Erklärung:
    "pfad/zu/deiner/datei.php" - Die Datei, die das PHP Script zum Laden der Inhalte aus MySQL beinhaltet (kein Template mit HTML, nur der Inhalt aus der MySQL Tabelle
    "chatwindow" - Das <div>-Element, welches im HTML oder PHP File angezeigt wird
    Du musst natürlich noch das js File verlinken, mit "<script type="text/javascript href="load.js"></script>" dürfte dem abgeholfen sein.
  4. Autor dieses Themas

    testworld

    testworld hat kostenlosen Webspace.

    Schonaml einen großen dank für deine antwort :smile:

    Allerdings scheint es nciht ganz zu klappen meine datein:

    chat.php
    <?php
    include('inc/connect.php');// Verbindung aufbauen
    
    
    $zeit = time() - 420;
    
    $chatabfrage = "SELECT userID, text FROM chat WHERE zeit >= '$zeit'";
    $chatergebnis = mysql_query($chatabfrage);
    while($chat = mysql_fetch_object($chatergebnis))
       {
       $nameabfrage = "SELECT username FROM user WHERE id = '$chat->userID'";
    $nameergebnis = mysql_query($nameabfrage);
    $name = mysql_fetch_object($nameergebnis);  // Triarier Baukosten abfragen
    
       echo "$name->username : $chat->text <br />";
       }
    ?>


    chat.html
    <script type="text/javascript href="js/load.js"></script>
    <div id="chat"></div


    js/load.js
    function loadData()
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'chat.php', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("chat").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send(null);
     }
    }
    
    //globale Instanz von XMLHttpRequest
    var xmlHttp = false;
     
    //XMLHttpRequest-Instanz erstellen
    //... fuer Internet Explorer
    try {
        xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        try {
            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
            xmlHttp  = false;
        }
    }
    //... fuer Mozilla, Opera, Safari usw.
    if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
        xmlHttp = new XMLHttpRequest();
    }
    setInterval("loadData()", 1500);



    Bin ich zu dämlich oder woran leigts? :D

  5. Schau mal in die Fehlerkonsole bei FF.
    Drck dafür auf Extras > Fehlerkonsole. Da steht mit sicherheit was drinnnen. Klick zuerst oben auf "Löschen" und dann aktualisiere deine Webseite. Jetzt schau nochmal nach. Jetzt sollte in Rot eine Fehlermeldung kommen (zB getElementById("blahh") is null). Wenn das der Fall ist kannst du den Fehler sicherlich alleine im JS Code finden, da dort sogar Zeile und Zeichen auch dabei stehen.

    Wenn nicht hab ich zur Sicherheit dein Ladescript ein wenig umgescriptet, da ich mich anders mir der DB in Verbindung setze, probiers zur Sicherheit mal.
    chat.php
    include('inc/connect.php');// Verbindung aufbauen
    $zeit=time()-86400; //1 Tag zuvor, du willst ja nur Daten abfragen, 420 in UNIX Zeit wäre so ca. 4,2 Sekunden, da kann nichts kommen...
    
    $sql = 'SELECT * FROM `chat` WHERE `zeit` < "'.$zeit.'"'; // Alles vor 1 Tag abfragen
    $result = $db->query($sql);
     while($row = $result->fetch_assoc()) {
      $sql2 = 'SELECT * FROM `user` WHERE `id` = "'.$row['userID'].'"';
      $result2 = $db->query($sql2);
       if(!empty($row['userID'])) {
       while($row2 = $result2->fetch_assoc()) { $username = $row2['username']; } // Benutzernamen abfragen
       }else{
       $username = 'Unbekannt'; // Falls der Benutzer bereits geloescht wurde
       }
       echo $username.': '.$row['text'].'<br />';
      }


    Und probier das hier als load.js (ist kürzer und umfagsärmer):
    function load_bg(id) {
    if (window.XMLHttpRequest) {
     xmlhttp=new XMLHttpRequest();
      }else{
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
     xmlhttp.onreadystatechange=function() {
      if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       document.getElementById("right_bg").innerHTML=xmlhttp.responseText;
      }
    }
    xmlhttp.open("GET","chat.php",true);
    xmlhttp.send();
    }
    und deine chat.html hat zwar keinen Doctype und sonst auch nix (beim Validator glatt durchgefallen :blah:) aber du hast noch Fehler drinnen:
    <script type="text/javascript" href="js/load.js"></script> <!-- das " hat gefehlt -->
    <div id="chat"></div> <!-- Hier hast du ein > vergessen -->
  6. Autor dieses Themas

    testworld

    testworld hat kostenlosen Webspace.

    1. Also die Fehlerkonsole in FF zeigt keine Fehler an...
    Deshalb habe ich mal die 2. Möglcihkeit genutzt doch da passierte auh nichts und die fehlerkonsole zeigt auch nichts an

    Hast du vielleicht eine Idee woran das liegen könnte? bzw. hast du sen Script shconmal getestet?... :confused:


    mfg
  7. Klar. AUf meiner Webseite benütz ich das auch hin und wieder mal. Außerdem hab ich das bei nem Kumpel auch schon in ein Script getan.
    + Hast du JavaScript aktiviert?
    + Welchen Browser benützt du? IE zcikt manchmal..
    + Vieleicht ist die Datei, in der das PHP Script ist, falsch platziert? Bei mir war das auch oft. Zeig uns deinen Baum, wo die Dateien liegen!
    + Ist das JS-Script im Header mit <script src=""></script> angegeben?
    + Probiers mal mit der Struktur-> sollte gehen:
    index.html
     /js/ajaxscript.js
     /ajax/chat.php
    
    und ändere den Link im chat.js auf "../ajax/chat.php" oder "ajax/chat.php" sollte gehen


    EDIT: Mir ist noch was aufgefallen. Wennd du in der DB einen <?php ?> Code hast, wird dieser weder ausgeführt noch angezeigt. Logische Erklärung: Text wird in ein .js File geladen -> PHP funkt nicht in einem .js File.
    ALSO: Wenn du den Inhalt des Chats in der Datenbank in der Form "<?php echo 'Herbert: <b>Trink das</b>'; ?>" gespeichert hast kann die DB und das JS File nichts dafür.

    Beitrag zuletzt geändert: 7.8.2010 12:37:10 von limabone
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!