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

  • Logan
    hat ein Thema erstellt [Erledigt] Vorstelung meines Ersten Projektes.

    [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

  • Arne Drews
    antwortet
    Edit: Ich sehe aber grade...die Umlaute werden nichtmehr richtig angezeigt...woran liegt das?
    Soweit ich mich erinnern kann, hat innerHTML Probleme mit Umlauten etc.

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Und bitte deine Fragen als neuen Beitrag schreiben und nicht in deinem Ausgangsposting editieren.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von Flor1an Beitrag anzeigen
    Kann man mit JS den HTTP Status Code auslesen?
    Jein. In der Praxis unterschlagen bei AJAX die Browser eine 304-Antwort, bzw. machen einen Statuscode 200 daraus - damit man sich als Scriptschreiber nicht damit beschäftigen muss, beides abzufragen. Caching läuft sozusagen im Hintergrund ab, transparent für den JavaScripter.

    Aber man braucht ihn ja auch nicht unbedingt direkt auslesen können - dass sich eine (vom Browser kommentarlos erneut mit 200 zur Verfügung gestellte) Antwort von der vorherigen nicht unterscheidet, sollte das Script auch selber feststellen können.


    Zitat von Logan Beitrag anzeigen
    Ich sehe aber grade...die Umlaute werden nichtmehr richtig angezeigt...woran liegt das?
    Vermutlich am fehlerhaften Umgang mit Zeichenkodierungen.
    (Bzw. ggf. auch einfach an der naiven Übertragung von Daten ohne kontextgerechte Kodierung. JavaScript arbeitet intern immer mit UTF-8 - wenn also die Seite eine andere Kodierung verwendet, ist mindestens die Anwendung von encodeURIComponent erforderlich, bevor man Daten per HTTP überträgt; ggf. dann auch serverseitig eine Umkodierung, wenn man dort nicht mit UTF-8 arbeiten will.)

    Generell solltest du heutzutage für alles UTF-8 nutzen, so lange kein gewichtiger Grund dagegen spricht.

    Einen Kommentar schreiben:


  • Logan
    antwortet
    Ich danke euch für die Idee mit Ajax...ich habe jetzt 30 Minuten gesucht und habe es geschaft...

    Ich werd mich jetzt genauer damit beschäftigen, aber vielen vielen dank^^

    Edit: Ich sehe aber grade...die Umlaute werden nichtmehr richtig angezeigt...woran liegt das?

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    HTTP wird doch sowieso für alles Missbraucht. Sei es nun Videoübertragung a la Youtube oder VoIP bei Skype.
    Kann man mit JS den HTTP Status Code auslesen?

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    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.

    Einen Kommentar schreiben:


  • Logan
    antwortet
    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.ä

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    -> JavaScript: Ajax

    Dann brauchst du auch keine Frames mehr!

    Einen Kommentar schreiben:


  • Logan
    antwortet
    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^^

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:

Lädt...
X