Philip Herrmann: Javascript Variable an PHP übergeben

Hallo,

mein Problem:
Ich habe in fenster.php einen Farbwähler, der Farbcodewird mit Klick auf eine Farbe in das Textfeld "farbe" geschrieben.

Dann habe ich zwei Buttons (kein Submit) in dem Formular:
Speichern und Schliessen.

Speichern soll ruft eine Funktion in Javascript auf und dort möchte ich abfragen ob der Farbwert, den man ja auch manuell eingeben kann in meiner Datenbank schon vorhanden ist, wenn nicht eintragen...

Doch wie übergebe ich etwas von JavaScript an PHP ???

Danke
Philip

  1. Hallo,

    Hi,

    mache aus dem Speicher-Button einen submit Button und die Variable wird an PHP übergeben.

    mfg

    PHP_Dude

  2. Hallo Philip,

    Dann habe ich zwei Buttons (kein Submit) in dem Formular:
    Speichern und Schliessen.

    Du musst die Speichern-Funktion entsprechend erweitern, ein Beispiel:
    Bisher hat 'speichern()' den Farbwert 'farbe' (hier ccff33) per Javascript in das Textfeld 'farbwert', das zu Form 'farbform' gehoert, uebertragen. Jetzt soll die Uebertragung an das PHP-Script 'farbscript.php' uebertragen werden.
    Am einfachsten erscheint mir, wenn die 'farbscript.php' gleichzeitig auch die Seite mit dem Formular ist.
    Die Javascriptfunktion speichern aenderst du wie folgt:
    function speichern(farbe)
    {
      zunaechst die urspruengliche Speicherfunktion
      // neu hinzu kommt
      window.location.href = window.location.href + '?farbe=' + document.farbform.farbwert.value;
    }
    Du leitest also von der Seite 'farbscript.php' an 'farbscript.php?farbe=ccff33' um.
    farbscript.php enthaelt den Teil
    <?php
    if(!empty($_GET['farbe'])) //wenn farbe gesetzt ist und einen Wert enthaelt
    {
      kucksdu_in_datenbank(); // deine PHP-Datenbankfunktion
    }
    ?>

    Gruß,

    Dieter

    1. Danke Dieter,

      jedoch wird ein neues Fenster aufgerufen und nichts in die DB eingetragen.

      Könnte es sein weil ich kein window sondern ShowModalDialog aufrufe.

      Also ich nutze schon Dein:
      window.location.href = window.location.href + '?farbe=' + document.Formular.farbe.value;

      Danke
      Philip

      1. Hallo Philip,

        Könnte es sein weil ich kein window sondern ShowModalDialog aufrufe.

        Ich hab keine Ahnung, was ShowModalDialog ist, aber vermutlich was MS-Spezifisches. Das waere also schon eine moegliche Fehlerursache.

        Gruß,

        Dieter

        1. Hi Dieter,

          hab bei MSDN geschaut:

          Es gibt ShowModalDialog und ShowModlessDialog

          Ich werde es versuchen zu ändern, auf jedenfall liegt es an ShowModalDialog!

          Danke nochmal
          Philip

          1. Hallo Philip,

            Nach meinem Verstaendnis ist der einzige Vorteil von ShowModalDialog, dass das Fenster immer im Vordergrund liegt. Wenn Du darauf verzichten kannst, bist du mit window.open besser bedient, weil es browseruebergreifend ist.

            Danke nochmal

            Kein Problem

            Gruß,

            Dieter

            1. Привет Dieter.

              Nach meinem Verstaendnis ist der einzige Vorteil von ShowModalDialog, dass das Fenster immer im Vordergrund liegt.

              Ein nicht zu unterschätzender, wenn du das meinst, was ich meine (siehe MSDN: showModalDialog). Das kann zwar nervend, aber in Intranet-Anwendungen durchaus von Vorteil sein. An den OP: ein modaler Dialog ist eigentlich dazu gedacht, den Fluss einer Seite so lange aufzuhalten, bis er durch eine Useraktion geschlossen wird. Idealerweise funktioniert das Ganze so:

              var ret = showModalDialog("url.html");

              und in url.html musst du die Eigenschaft window.returnValue festlegen, also das, was der modale Dialog als Ergebnis liefern soll. Willst du sowas nicht, reicht in der Tat ein simples Popup aus.

              Дружба!
              Siechfred

              --
              Hinweis an alle Karnevalsmuffel: Aschermittwoch ist alles vorbei.
              1. Hallo Siechfred,

                Ich stimme Dir zu, was den Vorteil anbetrifft, ich wuerde mir aber eher ueberlegen, eine browseruebergreifende Loesung zu schreiben (sowas mit timeout und focus). Aber ich kenne natuerlich die Bedingungen des OPs nicht.

                Gruß,

                Dieter