phpbar.de logo

Mailinglisten-Archive

[php] PHP und Formular - direktes Zugreifen auf Felder

[php] PHP und Formular - direktes Zugreifen auf Felder

Lutz Zetzsche php at sea-rescue.de
Don Aug 28 18:03:35 CEST 2003


Hi Barbara,

Zitat von Barbara Hofbauer <b.hofbauer at office-only.de>:

> Noch zur Erklärung: In die Textfelder (unsichtbar) DatVon1 und DatBis1
> werden die Anzahl Sekunden seit 1.1.70 (oder so?) eingetragen, um damit dann
> die Differenz der Tage berechnen zu können.
>
> <?php
>   $DatEin=60*60*24;
>   echo "<input type='button' name='day' value='".$tagArr[mday]."'";
> ?>
>   onclick="
> <?php
>   $DatG1 = date("U",
> mktime(0,0,0,$tagArr[mon],$tagArr[mday],$tagArr[year]));
>
> Echo("DatBis.value='$tagArr[mday].$tagArr[mon].$tagArr[year]';DatBis1.value=
> $DatG1;");
>   Echo("AnzahlNacht.value=DatBis1.value/$DatEin-DatVon1.value/$DatEin;");
> ?>
>   ">
>
> Nun sähe mein Code für die neue Form eigentlich so aus:
>
> <?php
>   $DatEin=60*60*24;
>   echo "<select size='1' name='AnzahlNacht'";
> ?>
>   onchange="
> <?php
>   $DatG=DatVon1.value;
>   $AnzahlNacht=AnzahlNacht.value;
>   $DatBis=date("d.m.Y", $DatG + $AnzahlNacht * $DatEin);
>   Echo("DatBis.value='$DatBis';");
> ?>
>   ">
>
> Das Problem ist, dass die Variable $DatG nun nicht den Inhalt von
> DatVon1.value annimmt, sondern den Wert "DatVon1.value". Wieso kann ich zwar
> im oberen Beispiel mit den Values der Felder rechnen aber im unteren nicht?

Also mich verwirrt das Ganze etwas, ich glaube aber, Dein Problem liegt in der
unuebersichtlichen und fehlerhaften Vermischung von PHP und Javascript,
verbunden mit aehnlich lautenden Variablennamen im PHP- und Javascript-Code.

Das erste Beispiel funktioniert, weil Du hier mit PHP HTML- und Javascript-Code
generierst, wobei Du natuerlich die PHP-Variablen einsetzen kannst. Du bewegst
Dich ja in PHP.

In Deinem zweiten Beispiel willst Du aber eine Javascript-Variable, also ihrem
Inhalt, im PHP-Skript in eine PHP-Variable abfuellen: $DatG=DatVon1.value;. Das
geht natuerlich nicht. Ein Wunder, dass PHP hier nicht sowieso einen Fehler
produziert. Muesste es eigentlich, denn fuer PHP muesste da ja
$DatG='DatVon1.value'; stehen, wenn ich jetzt nicht total verwirrt bin. :-) Um
in Deinem PHP-Skript DatVon1.value in $DatG abzufuellen, musst Du direkt den
Wert des Formularfelds aus $_POST bzw. $_GET auslesen. Z.B. so:

$DatG = $_POST['DatVon1'];
$DatG = $_GET['DatVon1'];

> Ich hatte natürlich auch einen Befehl in folgender Art probiert:
>
>   Echo("DatBis.value='date(\"d.m.Y\", DatVon1.value + AnzahlNacht.value *
> $DatEin)';");

Versuch es anstattdessen mal so (ungetestet...):

echo('DatBis.value='.date("d.m.Y", ($_POST['DatVon1'] + $_POST['AnzahlNacht'] *
$DatEin))); (fuer POST)

echo('DatBis.value='.date("d.m.Y", ($_GET['DatVon1'] + $_GET['AnzahlNacht'] *
$DatEin))); (fuer GET)

>
> Aber hier habe ich natürlich ziemliche Probleme mit den vielen Hochommas und
> ganz egal, wie ich es auch mache, es funktioniert einfach nicht. $DatVon1
> wird DatVon1.value ja erst nach dem Senden und neuladen des Formular und
> genau das will ich ja vermeiden. Bei dem ersten Beispiel mußte ich ja auch
> nicht neuladen.

Jetzt verwirrst Du mich wieder... :-) Wo kommt den jetzt $DatVon1 ploetzlich
her? ;-) Also ich durchschaue Dein Problem noch nicht so ganz, ich habe aber
den Verdacht, dass Du ein Bisschen PHP und Javascript vermischt und
verwechselst. Vielleicht hilft Dir das Gesagte aber bereits weiter. Ansonsten
bitte ich Dich, Dein Problem etwas genauer zu praezisieren, ggf. per PM, falls
es hier zu OT sein sollte.

Eventuell kannst Du Dein Problem auch ganz auf Javascript-Seite loesen, aber ich
weiss nicht genau, wie Dein Ansatz derzeit aussieht und wo Du genau
hinmoechtest.

Viele Gruesse

Lutz

php::bar PHP Wiki   -   Listenarchive