Mike: From Input als Link

Hallo,

habe wieder mal eine Frage.

  
        <form name="send1" method="post" action="#">  
        <input type="hidden" name="send1" value="SE_SC_BI_1114">  
        <a href="interface.home.studio/homeputer.studio.touch.php" onclick='javascript:document.form.submit()'>TEST</a>  
        </form>  

Habe der folgenden Code. Möchte Wert an die nächste Seite übergeben, aber nicht mit GET (was ohne Problme geht), sondern mit POST. Da ich hier später ein ARRAY übergeben möchte (viele Werte >255 Zeichen).

Der Name soll zum Testen send1 sein und den Wert SE_SC_BI_1114 übergeben.

Wenn ich den Link anklicke (ja es soll ein Link sein), öffnet sich die nächste Seite, nur bekomme ich dort die Werte nicht.

$Send1 = var_dump($_POST);

gibt 0 zurück.

Leider finde ich den Fehler nicht, auch google hat mir nicht weiter geholfen. Weiß auch nicht genau nach was ich suchen soll, da ich nicht weiß was ich falsch mache.

Danke für die Hilfe!

mfg mike

  1. Hallo Mike,

    <form name="send1" method="post" action="#">
            <input type="hidden" name="send1" value="SE_SC_BI_1114">
            <a href="interface.home.studio/homeputer.studio.touch.php" onclick='javascript:document.form.submit()'>TEST</a>
            </form>

      
    
    > Der Name soll zum Testen send1 sein und den Wert SE\_SC\_BI\_1114 übergeben.  
      
    ich vermute, es gibt eine bessere Lösung :-)  
      
    
    > Wenn ich den Link anklicke (ja es soll ein Link sein), öffnet sich die nächste Seite, nur bekomme ich dort die Werte nicht.  
      
    Logisch, diese werden ja auch nicht an diese "Seite" gesandt. Wenn Du das vorhast, dann solltest Du entsprechend umformulieren:  
      
    a) das gewünschte Skript zum Ziel des Formulars machen,  
       d.h. den Wert des action-Attributs entsprechend setzen  
      
    b) musst Du verhindern, dass der Link ausgeführt wird, dazu verwendest Du  
       `return false;`{:.language-javascript} im onclick-Handler.  
       Das Label "javascript:" kannst Du getrost entsorgen. Es ist überflüssig.  
      
    ~~~html
      
            <form name="send1" method="post" action="interface.home.studio/homeputer.studio.touch.php">  
            <input type="hidden" name="send1" value="SE_SC_BI_1114">  
            <a href="interface.home.studio/homeputer.studio.touch.php" onclick='document.form.submit(); return false;'>TEST</a>  
            </form>  
    
    

    $Send1 = var_dump($_POST);

    var_dump gibt sowieso nichts zurück, Du möchtest *ausgeben*, was in $_POST steht:

    echo "<pre>\n";  # für lesbare Formatierung  
    var_dump($_POST);  
    echo "</pre>\n";  
    
    

    Wenn Du Werte von einer Seite zur anderen schleppen willst, solltest Du nicht mit versteckten Formularfeldern arbeiten, sondern mit Sessions.

    Freundliche Grüße

    Vinzenz

    1. Hallo und Danke für die schnelle Antwort!

      Also so wie Du es geändert hast, gaht es leider auch nicht.

      Bekomme dann die Fehlermeldung: Notice: Undefined index: send1 in C:\xampp\htdocs\home_control\interface.home.studio\homeputer.studio.touch.php on line 127

      Bedeutet doch, dass ich den Wert nicht richtig über gebe.

      Mit Session habe ich auch schon Probiert. Habe damit auch Wert auch ausgetauscht, aber wie ändere ich die Werte, wenn ich ich einen Link anklicke?

      Also es soll später so sein:

      Link1 (send1 = "xxx", wert1 = "1")
      Link2 (send1 = "yyy", wert1 = "4")

      Die Werte send1 und wert1 werden dann auf der nächsten Siete gebraucht.

      Das heißt das sich die Werte mit jedem Link ändern sollen.

      mfg mike

      1. Hello,

        Bekomme dann die Fehlermeldung: Notice: Undefined index: send1 in C:\xampp\htdocs\home_control\interface.home.studio\homeputer.studio.touch.php on line 127

        Bedeutet doch, dass ich den Wert nicht richtig über gebe.

        Wo hast Du denn danach gesucht? Hast Du auch $_POST['send1'] benutzt?

        Mit Session habe ich auch schon Probiert. Habe damit auch Wert auch ausgetauscht, aber wie ändere ich die Werte, wenn ich ich einen Link anklicke?

        Das Session-Array ist wie ein Arbeitsspeicher auf dem Server zu betrachten. Du kannst darin also beim einen Request Daten hinterlegen und beim nächsten Request wieder darauf zugreifen, sie löschen, überschreiben, weitere dazu abspeichern...

        Also es soll später so sein:

        Link1 (send1 = "xxx", wert1 = "1")
        Link2 (send1 = "yyy", wert1 = "4")

        Die Werte send1 und wert1 werden dann auf der nächsten Siete gebraucht.

        Dann musst Du aber doch nicht das Verweisziel des Formulares ändern (Action-Attribut) mit dem Link, sondern den Inhalt des Hidden-Inputs (value).

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hallo zusammen,

          also habe da ganze jetzt so gemacht:

          erste Seite

            
                      <!-- # Bilderleuchte # -->  
                      <form name="link1" action="interface.home.studio/homeputer.studio.touch.php" method="post">  
                        <input name="send1" value="SE_SC_BI_1114" type="hidden">  
                        <input name="wert1" value="1" type="hidden">  
                        <input name="bild1" value="test.gif" type="hidden">  
                      </form>  
                      <a href="#" onclick="document.forms['link1'].submit();">Bilderleuchte ist <?php echo $data["EM_SC_BI_1114"]; ?></a>  
          
          

          zweite Seite

            
          <?php  
            
                 echo $_POST["send1"];  
                 echo $_POST["wert1"];  
                 echo $_POST["bild1"];  
            
          ?>  
          
          

          Das ganze funktioniert, aber wollte ich ein Array übergeben, aber leider habe ich das nicht hin bekommen.

          Hier meine Versuch.

          $arr = array("send1" => "SE_SC_BI_1114", "wert1" => "1", "bild1" => "test.gif");
          .
          .
          .
          <input name="arr" value="<? serialize($arr) ?>" type="hidden">
          .
          .

          nur jetzt kommt nicht auf der zweiten Seite an.

          $arr = unserialize($_POST['send1']);
          print_r ($arr);

          Leider geht das so wohl nicht?!

          mfg mike

          1. Daoch noch ein anderes Problem ;(

            Fire Fox sgt mir das die Daten neu geladen werden müssen. Das leigt an den POST Befehl, kann man da etwas machen?

            Sonst muss ich mir doch noch ne andere Möglichkeit einfallen lassen :(

            mfg mike

          2. Mahlzeit Mike,

            $arr = array("send1" => "SE_SC_BI_1114", "wert1" => "1", "bild1" => "test.gif");
            .
            <input name="arr" value="<? serialize($arr) ?>" type="hidden">

            $arr = unserialize($_POST['send1']);
            print_r ($arr);

            Leider geht das so wohl nicht?!

            Jedenfalls nicht, wenn Du den Parameter, den Du übergibst (name="arr"), gar nicht ausliest ($_POST['send1']).

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Hello,

              $arr = array("send1" => "SE_SC_BI_1114", "wert1" => "1", "bild1" => "test.gif");
              .
              <input name="arr" value="<? serialize($arr) ?>" type="hidden">

              ^
                                             |
                                             +--- was könnte dort wohl fehlen?
                                                  Tipp: "Standardausgabe"

              Außerdem müsste der Ordnung halber auch der HTML-Kontext für das serialisierte Array beachtet werden!

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Mahlzeit Tom,

                und Du antwortest *mir*, weil ...?

                ;-)

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Hello,

                  Mahlzeit Tom,

                  und Du antwortest *mir*, weil ...?

                  ;-)

                  ... es in dem Thread hier gerade so gut passte :-)

                  Aber, dass etwas fehlt und außerdem Short-Open-Tags verwendet wurden, hast Du doch auch gesehen, oder?

                  Liebe Grüße aus dem schönen Oberharz

                  Tom vom Berg

                  --
                   ☻_
                  /▌
                  / \ Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
  2. Hallo Mike,

    Neben dem was Vinzenz schon schrieb:

    <a href="interface.home.studio/homeputer.studio.touch.php" onclick='javascript:[code lang=javascript]document.form.submit()'>TEST</a>[/code]

    Hast du dir schonmal ausgeben lassen was in document.form drinsteht?

    Habe der folgenden Code. Möchte Wert an die nächste Seite übergeben, aber nicht mit GET (was ohne Problme geht), sondern mit POST.

    Dann baue ein ganz normales Formular mit einem ganz normalen Submit-Button - wenn dir das Aussehen nicht gefällt korrigiere das mit etwas CSS. Aber so wie du es jetzt machst sorgst du dafür, dass das Formular nur mit Javascript abgeschickt werden kann.

    Gruß,
    Tobias

  3. @@Mike:

    nuqneH

    Wenn ich den Link anklicke (ja es soll ein Link sein)

    Nein, das glaube ich nicht. Warum denkst du das?

    Warum willst du das Funktionieren der Seite von JavaScript abhängig machen?

    Zum Absenden von Forumlaren dienen ein Submit-Buttons: <button type="submit">TEST</button>.

    Du willst den Button wie ein Link _aussehen_ lassen? Kein Problem, dazu gibt es CSS. Hintergrund weg, Rahmen weg, Farbe, Unterstreichung …:

    button  
    {  
    	background: none;  
    	border: none;  
    	color: blue;  
    	cursor: pointer;  
    	text-decoration: underline;  
    }
    

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  4. Hi,

    <form name="send1" method="post" action="#">
            <input type="hidden" name="send1" value="SE_SC_BI_1114">
            <a href="interface.home.studio/homeputer.studio.touch.php" onclick='javascript:document.form.submit()'>TEST</a>
            </form>

      
    Zusätzlich zu den anderen Kommentaren:  
    Ein Klick auf den Link löst zuerst das `submit`{:.language-javascript} aus und danach noch das Linkereignis.  
    Der Browser wird die Ausführung des ersten Ereignisses durch das zweite unterbrechen.  
    Als Folge rufst du nur den Link auf, und dieser Request enthält die Formulardaten eben nicht.  
      
    Wenn du bei dieser Lösung bleiben willst, dann musst du das weitere Ausführen des Links unterbrechen, z.B. in dem der Event-Handler `false`{:.language-javascript} zurückliefert.  
      
    Bis die Tage,  
    Matti
    
    -- 
    [Webapplikationen in C++ entwickeln](http://tntnet.org/)
    
  5. Mahlzeit Mike,

    Wenn ich den Link anklicke

    ... sollte Dein Browser die angegebene Ressource anfordern und ggf. darstellen. Das wird gemeinhin als "verlinken" bezeichnet.

    (ja es soll ein Link sein),

    Warum? Zum Abschicken eines Formulars ist ein Button die richtige Wahl - kein Link. Du kannst dem Button natürlich mittels CSS das Aussehen eines Links geben. Ein Link ist aber definitiv falsch: ein Link, der nicht linkt, ist kein Link.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. 'ǝɯɐu$ ıɥ

      ein Link, der nicht linkt, ist kein Link.

      Ein Link, der nicht linkt, ist link.

      ssnɹƃ
      ʍopɐɥs

      --
      Gestern noch zu blöd, den Computer einzuschalten,
      heute schon die eigene Homepage.