From Input als Link
Mike
- php
0 Vinzenz Mai0 tk0 Gunnar Bittersmann- css
0 Matti Mäkitalo1 EKKi
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
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
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
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
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
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
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
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
Mahlzeit Tom,
und Du antwortest *mir*, weil ...?
;-)
MfG,
EKKi
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
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
@@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'
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/)
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
'ǝɯɐu$ ıɥ
ein Link, der nicht linkt, ist kein Link.
Ein Link, der nicht linkt, ist link.
ssnɹƃ
ʍopɐɥs