S3Ri0US: Datenbank wärend der Laufzeit updaten..

Hallo Leute..

Ich steh vor einem kelinen Problem.. und zwar:

Ich habe einen versteckten Text.. dieser wird per javaScript per Click auf einen Link angezeigt. So weit so gut.. nun soll aber wenn der User auf diesen Link klickt ein eintrag in der Datenbank geändert werden. Ist dies irgend wie über JavaScript möglich ? Ansonsten müsste ich auf PHP gehen.. was mir allerdings nicht gefaööen würde da so die Seite neu Läd ( wenn man auf den Link drüclt um den text anzeigen zu lassen )

Hoffe euch fällt was ein.  Schönen Sonntag noch.

  1. Hi!

    Ist dies irgend wie über JavaScript möglich ?

    Nein. Du kannst keine Datenbankeinträge mit JavaScript ändern.
    JS läuft clientseitig, also nur im Browser des Users.
    PHP hingegen arbeitet serverseitg. Damit wäre es möglich, Datenbankeinträge zu verändern.
    Was du mit JS machen könntest, wäre, ein PHP-Script anzufordern, daß diese Änderung dann vornimmt. Aber die Änderungen selbst können nicht mit JS vorgenommen werden.

    Schöner Gruß,
    rob

    1. Hello,

      Nein. Du kannst keine Datenbankeinträge mit JavaScript ändern.

      Das kommt doch ganz darauf an, wie man es auslegt!

      Den Trigger für die Änderung kann man sehr wohl mit JS geben.
      Wer dann im Hintergund die Arbeit macht, ist vollkommen unerheblich.
      Es muss ein Request ausgelöst werden, der die passenden Paramter (neue Daten) mitsendet.
      Und wenn die Antwort dann z.B. mittels JS in ein separates Fenster (0 oder 1px, ausgeblendet)umgeleitet wird oder der Server mit einem "204 No Content" antwortet, dann sieht es doch für den User so aus, als wäre nichts passiert.
      Den Rest erledigt dann wieder JavaScript (Anzeige "habe fertig")

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

      1. Hi!

        Das kommt doch ganz darauf an, wie man es auslegt!

        Den Trigger für die Änderung kann man sehr wohl mit JS geben.
        Wer dann im Hintergund die Arbeit macht, ist vollkommen unerheblich.

        Ja, aber das habe ich doch geschrieben:

        Was du mit JS machen könntest, wäre, dein PHP-Script anzufordern, daß diese Änderung dann vornimmt.

        Schöner Gruß,
        rob

  2. Hi,

    Ich habe einen versteckten Text.. dieser wird per javaScript per Click auf einen Link angezeigt.

    Was ist, wenn der Besucher Javascript deaktiviert hat?

    So weit so gut.. nun soll aber wenn der User auf diesen Link klickt ein eintrag in der Datenbank geändert werden. Ist dies irgend wie über JavaScript möglich ? Ansonsten müsste ich auf PHP gehen.. was mir allerdings nicht gefaööen würde da so die Seite neu Läd ( wenn man auf den Link drüclt um den text anzeigen zu lassen )

    Was du suchst ist wohl AJAX. Damit kannst du per Javascript eine HTTP-Anfrage an den Server schicken, ohne dass die komplette Seite neu geladen wird.
    Auch hier solltest du dir was überlegen, für Besucher, bei denen JS deaktiviert ist, oder deren Browser AJAX nicht unterstützt.

    mfG,
    steckl

  3. Hallo.

    nun soll aber wenn der User auf diesen Link klickt ein eintrag in der Datenbank geändert werden. Ist dies irgend wie über JavaScript möglich ? Ansonsten müsste ich auf PHP gehen.. was mir allerdings nicht gefaööen würde da so die Seite neu Läd ( wenn man auf den Link drüclt um den text anzeigen zu lassen )

    Jein :-)

    Das dürfte nur mit einer Kombination aus AJAX (d.h. mit dem JavaScript-XMLHttpRequest-Objekt) und PHP funktionieren. D.h. du rufst per JavaScript mit dem XMLHttpRequest-Objekt ein PHP-Skript auf, welches dann auf dem Server ausgeführt wird und eine Änderung in der Datenbank durchführt.

    Oder natürlich direkt mit PHP-Skripts. Mit einer AJAX-Funktion wird die Seite allerdings nicht neu geladen (was du ja auch nicht willst); es werden quasi nur Daten "nachgeladen" - oder eben nur bestimmte Skripte auf dem Server ausgeführt, die evtl. keine Daten zurückgeben.

    Da ich gerade aktuell dransitze (und auch selber elendig lange nach dem Kram suchen musste ;-) ) ein paar AJAX-Grundlagen:

    Instanzierung des XMLHttpRequest-Objektes:

    // Deklaration der globalen XMLHttpRequest-Variable
    var ajax=null;

    // Instanzieren des XMLHttpRequest-Objektes

    // Instanzierungsversuch Mozilla, Opera, Safari sowie Internet Explorer 7

    if (typeof XMLHttpRequest != 'undefined') // wenn ein solches Objekt existiert
        {
            // Objekt instanzieren
            ajax = new XMLHttpRequest();
        }

    if (!ajax) // Wenn obiges nicht funktioniert haben sollte
        {

    // Instanzierungsversuch Internet Explorer 6 und älter

    try
            {
                // Objekt instanzieren (Microsoft-spezifisch)
                ajax  = new ActiveXObject("Msxml2.XMLHTTP");
            }

    catch(e) // Wenn obiges nicht funktioniert haben sollte
            {
                try
                {
                    // Objekt instanzieren (Microsoft-spezifisch)
                    ajax  = new ActiveXObject("Microsoft.XMLHTTP");
                }

    catch(e) // Wenn auch der letzte Versuch nicht geglückt ist
                {
                    // Variable vorsichtshalber wieder auf null setzen
                    ajax  = null;

    // Fehlermeldung ausgeben:
                    window.alert('Ihr Browser unterstützt keine AJAX-Funktionalitaet.');
                }
            }
        }

    Dann hast du das XMLHttpRequest-Objekt in der Variable ajax.

    Beispiel einer Funktion:

    function tuEtwas(wert)
    {
     if(ajax) // Wenn das AJAX-Objekt besteht
     {
      // tuEtwas.php für synchronen Zugriff mit POST-Datenübergabe öffnen
      ajax.open('POST', 'tuEtwas.php', false);

    // RequestHeader schicken und auf URLEncode mit UTF-8-Zeichensatz einstellen
      ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");

    // Wenn der Readystate des Servers sich ändert:
      ajax.onreadystatechange = function()
      {
       if (ajax.readyState == 4) // Wenn der Server fertig ist
       {
        window.alert(ajax.responseText+' gibt der Server zurück. Offenbar hats geklappt');
       }
      };

    // entsprechende Daten senden
      ajax.send(wert);
     }
    }

    Diese Funktion würde nun das PHP-Skript tuEtwas.php ausführen und per POST die Variable wert übergeben, d.h. hier kannst du dann z.B. im PHP-Skript tuEtwas.php Änderungen an der Datenbank vornehmen.

    Gruß,

    Christian

  4. Hello,

    Dein Betreff ist irreführend.
    Es würde bedeuten, dass die Datenbankserver-Software während des laufenden Betriebes auf eine neue Version gebracht werden soll. Sowas klappt nur selten ...

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  5. Ich habe einen versteckten Text.. dieser wird per javaScript per Click auf einen Link angezeigt. So weit so gut..

    So weit, so breit.

    nun soll aber wenn der User auf diesen Link klickt ein eintrag in der Datenbank geändert werden.

    Was hat das mit dem oben beschriebenen zu tun?

    Ist dies irgend wie über JavaScript möglich ?

    Wenn ein "Link geclickt" wird, dann rattert doch im allgemeinen ein Webserver los, klar kann der DB-Einträge vornehmen, mit PHP oder Perl bspw..

    Ansonsten müsste ich auf PHP gehen.. was mir allerdings nicht gefaööen würde da so die Seite neu Läd ( wenn man auf den Link drüclt um den text anzeigen zu lassen )

    Aha, Du möchtest eine serverseitige Aktion ohne Nachladen der Seite, das ginge mit AJAX, wirf vielleicht mal einen Blick auf das AJAX-Tutorial _DES_MEISTERS_:
    http://webkompetenz.blogspot.com/2007/05/tutorial-ajax-5.html