Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Vorstelung meines Ersten Projektes

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Vorstelung meines Ersten Projektes

    Hallo PHP.de-Member,

    ich habe mich grade eben angemeldet und wollte mal von anderen wissen wie sie meinen ersten Versuch für einen Chat Finden:

    Klick hier!

    Einfach bei Login-Daten und Passwort einen neuen account erstellen.

    Frage(ERLEDIGT): Wie kann ich diesen blöden Reload ausschalten, aber trotzdem die daten immer wieder neu aus der mysql datenbank holen?

    Antwort: Ajax...^^

    Neue Frage(GELÖST): Die Umlaute werden nichtmehr richtig angezeigt, liegt im Code etwas falsch?
    Code:
    <script type="text/javascript" language="javascript">

    var http_request = false;

    function macheRequest(url) {

    http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
    http_request.overrideMimeType('text/xml');
    // zu dieser Zeile siehe weiter unten
    }
    } else if (window.ActiveXObject) { // IE
    try {
    http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}
    }
    }

    if (!http_request) {
    alert('Ende Kann keine XMLHTTP-Instanz erzeugen');
    return false;
    }
    http_request.onreadystatechange = alertInhalt;
    http_request.open('GET', url, true);
    http_request.send(null);

    }

    function alertInhalt() {
    if (http_request.readyState == 4) {
    var answer = http_request.responseText;
    //var answer = http_request.responseText;
    if(document.getElementById("inhalt").innerHTML != answer){
    document.getElementById("inhalt").innerHTML = answer;
    }
    else{
    document.getElementById("inhalt").innerHTML = "";
    }
    }

    }
    setInterval("macheRequest('?id=read')",1000);
    </script>

    <div id="inhalt">Lade..</div>
    Antwort:
    Simple Funktion hat gereicht:
    Code:
    function U_Replace($umlaut)
    {
    $umlaute=array(
    'ä' => "&auml;",
    'ö' => "&ouml;",
    'ü' => "&uuml;",
    'ß' => "&szlig;",
    );
    $umlaut=str_replace(array_keys($umlaute), array_values($umlaute), $umlaut);
    return $umlaut;
    }

    P.S: Der Link ist nur Online wenn ich Online bin (Dyndns )
    P.P.S: Es ist nur ein Prototyp, also bitte nicht überlassten


  • #2
    Hast du mit Ajax gemacht???
    Wenn ja... Dein Hoster wird sich freuen....

    Kommentar


    • #3
      ich habe alles mit php gemacht^^

      Edit: und außerdem läuft es eh auf meinem pc(noch)

      Kommentar


      • #4
        Garantiert nicht alles PHP. Aber sieht für den Anfang ganz gut aus. Wie gesagt " ' " ignoriert er.

        Kommentar


        • #5
          das ist wirklich alles php^^ und natürlich auch html zum schreiben und sow^^

          Kommentar


          • #6
            Wow, dann musst du mir beibringen wie du mit PHP eine laufende Uhr darstellst und neue Daten vom Server bekommst ohne einen erneuten Request

            Kommentar


            • #7
              Er meint damit das er weder Flash noch JavaApplets verwendet. Das Javascript im Spiel ist ist ja wohl klar.

              Kommentar


              • #8
                Zitat von Flor1an Beitrag anzeigen
                Er meint damit das er weder Flash noch JavaApplets verwendet. Das Javascript im Spiel ist ist ja wohl klar.
                auch kein javascript^^

                Uhrcode:
                PHP-Code:
                $this_tag date("w");
                    switch(
                $this_tag)
                    {
                        case 
                "1":
                            
                $tag "Montag";
                            break;
                        case 
                "2":
                            
                $tag "Dienstag";
                            break;
                        case 
                "3":
                            
                $tag "Mittwoch";
                            break;
                        case 
                "4":
                            
                $tag "Donnerstag";
                            break;
                        case 
                "5":
                            
                $tag "Freitag";
                            break;
                        case 
                "6":
                            
                $tag "Samstag";
                            break;
                        case 
                "0":
                            
                $tag "Sonntag";
                            break;
                    }
                    
                $jahr date("d.m.Y");
                    echo 
                "Heute ist ".$tag." der ".$jahr."<br>";
                    
                    
                $zeit_jetzt date("H:i:s");
                    echo 
                "Genaue Zeit: ".$zeit_jetzt;
                    echo 
                "<meta http-equiv='refresh' content='1; URL=?id=admin'>"
                deswegen soviele reloads^^

                Kann mir denn jemand sagen, wie ich eine MySQL Datenbank nau ausrufen kann, ohne die Seite komplett neuladen zu müssen...
                Weil das geblinke nervt echt^^

                Kommentar


                • #9
                  -> JavaScript: Ajax

                  Dann brauchst du auch keine Frames mehr!

                  Kommentar


                  • #10
                    Zitat von Flor1an Beitrag anzeigen
                    -> JavaScript: Ajax

                    Dann brauchst du auch keine Frames mehr!
                    Mir wurde gesagt Ajax ist sehr schwer und sehr auslastend für server o.ä

                    Kommentar


                    • #11
                      Es macht genau das selbe wie du jetzt mit meta refresh. Es macht einen neuen HTTP Request, ob der durch nen meta Tag oder durch javascript initialisiert wird ist völlig egal.

                      Kommentar


                      • #12
                        Im Idealfall transportiert es sogar weniger über die Leitung. Indem Du 2 Anfragen machst (die werden dann natürlich mehr):
                        1. Gibts was neues (aktueller Status: xy)
                        2. Wenn ja: Refresh / Hole alles ab Status xy

                        Für ein langes Chatprotokoll kann das schon nen Unterschied ausmachen.
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Müssen ja nicht mal zwei Abfragen sein. Wenn du bei dem "Gibts was neues" einfach die ID des letzten Eintrages mitschickst dann kann der Server entweder antworten "nein" oder eben die neuen Daten mitschicken. Aber nicht nur deswegen wäre es weniger. Du kannst schließlich auch die Daten als JSON übertragen und sparst dir somit ne Menge HTML.

                          Kommentar


                          • #14
                            Stimmt, das ist sogar noch besser - „es gibt nichts neues“ könnte bspw. auch ein leeres JSON-Objekt sein und die JSON-Rückgabe wird immer an den aktuellen Content angefügt.
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              Zitat von nikosch Beitrag anzeigen
                              Stimmt, das ist sogar noch besser
                              Noch besser wäre es, HTTP sinnvoll zu nutzen* - Last-Modified-Timestamps/If-Modified-Since mitsenden, ggf. mit 304 Not Modified antworten ...


                              * sofern man davon noch reden kann, wenn es schon als „Chat-Protokoll“ missbraucht wird.

                              Kommentar

                              Lädt...
                              X