Dynamisches Bewertungssystem mit Ajax

  • Hey Leute,


    gleich zum Anfang mal: Wo kann ich ordentlich Ajax lernen? Gibt es da vielleicht ein bestimmtes Buch, das jemand mir empfehlen kann oder eine Webseite? Bisjetzt habe ich nur von http://ajax.frozenfox.at/ und http://www.webmaster-crashkurs.de/ gehört. Leider finde ich die beide nicht so toll. Das erste ist da schon besser, aber da ist immer noch zu wenig erklärt.


    Ich möchte ein relativ "statisches" PHP Skript mit Ajax so umsetzen, dass man die Seite index.php nicht neuladen muss. Bei einem Webprojekt werden auf der Startseite Sprüche vorgestellt. Jede Woche oder so soll es einen Spruch geben. Diesen aktuellen Spruch können die Besucher dann entweder liken (wie bei facebook) oder haten (d. h. nicht mögen). Das ganze System habe ich wie gesagt mit PHP umgesetzt.


    [attachment=1]<!-- ia1 -->Unbenannt.PNG<!-- ia1 -->[/attachment]


    Doch, wie kann ich es jetzt so machen, dass der User einfach zum Beispiel "Mag ich nicht :(" drückt und dann folgende Meldung erscheint:


    [attachment=0]<!-- ia0 -->Unbenannt2.PNG<!-- ia0 -->[/attachment]


    Die Seite soll natürlich nicht neu geladen werden. Auf der oben gennanten Seite (http://ajax.frozenfox.at/) habe ich etwas von REQUESTS gelesen. Jedoch finde ich, dass das zu wenig erklärt ist.


    Mit freundlichen Grüßen und Hoffen auf Hilfe,
    Philipp E.

  • So schwierig ist es doch nicht:

    • XMLHttpRequest-Objekt erzeugen
    • Request öffnen (request.open)
    • Request absenden (request.send)
    • Empfangene Daten auswerten


    Ein Tipp: Den Request nicht asyncron machen, damit das Script wartet, bis der Request fertig ist:

    Code
    request.open("get|post",url,false);


    Kann sein, dass ich da was vergessen habe, bin auch kein Ajax-Experte.


    Hoffe, ich konnte helfen,
    webmaster3000

  • Naja, wenn man keine Ahnung von Ajax hat, dann ist es nicht so leicht^^


    Schritt 1:

    Code
    var request = new XMLHttpRequest();


    Das verstehe ich selbstverständlich.


    Schritt 2:

    Code
    request.open('post', 'statement.php', false);


    Das REQUEST Objekt wird jetzt geöffnet. Das post ist einfach die Methode, statement.php ist die URL der "im Hintergrund aufzurufenden Datei" und false gibt was an? Gibt es an, dass es nicht asynchron laufen soll?


    Schritt 3:

    Code
    var input = ...;
    request.send(input);


    Das wird dann an die Datei gesendet. Doch wie kann ich das darein packen?

  • Zitat von &quot;Basiii&quot;

    Schritt 1: Lerne JavaScript


    Uneingeschränkt der beste Weg.


    Dennoch: wenn du Daten Senden willst, musst du in dein Skript noch

    Code
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


    reinpacken.
    Außerdem muss die variable input so in Art aussehen: name=wert&name2=wert&name=wert ...


    Und ja, das false in open() gibt an, dass es nicht asynchron abläuft, d. h. dein Skript wartet, bis die Antwort kommt.

  • Dein script speichert die ip's wenn man das "formular" abschickt, damit mensch nicht mehrmals klicken kann. (habe meine ip geändert und schon gins wieder; so gemerkt)


    hat nen fehler.....konnte 30 dislikes machen ohne ip zu verändern.....solltest du beheben :P




    weiß nicht ob das sinnvoll ist, aber du könntest statt den ip's speichern sehr langlebige cookies setzten?

  • Zitat von &quot;Sarkkan&quot;

    [...] egal ob du sie plain in eine txt schreibt oder verschlüsselt in eine Datenbank.


    Der Vollständigkeit halber: es spricht nichts dagegen, sie verschlüsselt in eine Datei zu speichern.

  • @Basiii: Was meinst du mit "Lerne Javascript". So viel Javascript muss man dafür ja wohl nicht können.


    @drPHIP132: Komischerweise habe ich ziemlich viele Hates/ Dislikes. Woran kann das liegen? Der Code ist sauber, ich habe ihn mehreren Test ausgesetzt. Wenn man neu lädt, dann dürfte das nicht funktionieren. Außerdem stürzt mein phpMyAdmin immer ab!


    @all: Stimmt, das sollte ich dann mal angeben. Aber Cookies wären vielleicht wirklich eher angebracht.

  • Zitat von &quot;Yamram&quot;

    Aber Cookies wären vielleicht wirklich eher angebracht.


    Cookies sind aber nicht zuverlässig. Man kann Browser so konfigurieren, dass sie gar nicht akzeptiert werden oder nach dem Schließen gelöscht, es ei denn, man nimmt Flash-Cookies oder Evercookies.
    IPs können sich aber auch verändern.


    Gruß,
    webmaster3000

  • Zitat von &quot;Yamram&quot;

    @drPHIP132: Komischerweise habe ich ziemlich viele Hates/ Dislikes. Woran kann das liegen? Der Code ist sauber, ich habe ihn mehreren Test ausgesetzt. Wenn man neu lädt, dann dürfte das nicht funktionieren. Außerdem stürzt mein phpMyAdmin immer ab!




    15.017 sinds, nicht? Wieviele haben denn den Link bekommen? Die mögen dich wohl nicht.

  • Zitat von &quot;Yamram&quot;

    @Basiii: Was meinst du mit "Lerne Javascript". So viel Javascript muss man dafür ja wohl nicht können.


    Auch wenn dies an Basiii ging, antworte ich mal:
    Doch, dafür sollte man schon so ein wenig Grundkenntnisse haben. Schließlich musst du erst einmal das Grundverständnis dafür haben, was du da machst und wieso.
    Also was es mit dem "onreadystatechange = function(){}" z.B auf sich hat und wie du das Ergebnis deiner Ausfrage auswertest bzw. die Richtigen Daten an den Server übermittelst.
    Ich meine.. natürlich kannst du in PHP direkt anfangen dich an die Datenbankschnittstelle zu wagen, was aber schwierig wird, wenn du keinen Plan von Variabeln, Grundlagen und Co in PHP hast :wink:


    Zitat von &quot;Yamram&quot;

    Außerdem stürzt mein phpMyAdmin immer ab!


    Ich gehe mal davon aus, dass dein phpMyAdmin so konfiguriert ist, dass es versucht alle Einträge zu laden?
    Klingt auf jeden Fall so, wenn du viele Einträge hast und es immer abschmiert. Wenn es nicht daran liegt einfach noch mal neu installieren?

  • webmaster3000: Tja, anscheinend gibt es immer einen Weg!


    @drPHIP132: Den Link haben maximal 10 Leute bekommen, ich glaube eher, da hat jemand, der mehr Ahnung hat als ich, sich einen Scherz erlaubt. Naja, ich habe die Funktion sowieso rausgenommen.


    Sarkkan: Grundkenntnisse in Javascript habe ich, könnte aber nicht schaden, das mal zu wiederholen. Ja, aber wie installiere das neu auf einem Freehoster?

  • Zitat von &quot;Yamram&quot;

    Ja, aber wie installiere das neu auf einem Freehoster?


    Indem du dein Verzeichnis, in dem die Dateien deiner Homepage liegen, 1:1 hochlädst.
    Du brauchst nicht mal PHP, wenn deine Ajax-Skripte keine PHP-Dateien aufrufen, was sie aber sicher nicht machen werden.


    Gruß,
    webmaster3000

  • Zitat von &quot;webmaster3000&quot;


    Indem du dein Verzeichnis, in dem die Dateien deiner Homepage liegen, 1:1 hochlädst.
    Du brauchst nicht mal PHP, wenn deine Ajax-Skripte keine PHP-Dateien aufrufen, was sie aber sicher nicht machen werden.


    Gruß,
    webmaster3000


    Er meinte mehr, wie er ein neues phpMyAdmin installiert :)
    Dazu einfach die neuste Version von phpMyAdmin downloaden und auf den Server in ein Verzeichnis werfen^^

  • Hmmmmm... ok, dann werde ich das mal mit meinem langsamen Internet versuchen.


    Aber, wieso sehe ich jetzt nicht irgendwo ein phpMyAdmin auf dem Server? Ist das vor mir versteckt? Wenn ja warum?



    EDIT
    Da ich denke, dass auf den kostenlosen Servern von square7.ch auch Ajax ein bisschen braucht, möchte ich ein Ladebild einfügen. Wie geht das? Nehmen wir mal an das Bild wäre eine einfache GIF-Grafik.

  • Zitat von &quot;Yamram&quot;

    Aber, wieso sehe ich jetzt nicht irgendwo ein phpMyAdmin auf dem Server? Ist das vor mir versteckt? Wenn ja warum?


    Das kann durchaus auf einer Ebene liegen, auf der du über dein normales Verzeichnis keinen Zugriff hast.
    Das kommt ganz einfach daher, da phpMyAdmins immer eine potenzielle Hintertür sein können. Vor kurzem erst wurde z.B. ein Sicherheitszertifikathersteller durch ein offenes phpMyAdmin gehackt.
    Und die sollten doch eigentlich auf Sicherheit ziemlich achten.

  • Oke. Das ist interessant. Irgendeine juristische Einrichtung wurde auch mal gehackt, weil die irgendeine kostenlose Software benutzt. Immer interessant, sowas zu hören.


    Ich denke mal, du warst zu früh, um den Edit zu lesen:


    Da ich denke, dass auf den kostenlosen Servern von square7.ch auch Ajax ein bisschen braucht, möchte ich ein Ladebild einfügen. Wie geht das? Nehmen wir mal an das Bild wäre eine einfache GIF-Grafik.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!