Übergabe einer variable in PHP
Lutz
- php
Hallo,
ich habe dieses Problem schon mal in einem anderen Forum gepostet. ich komme einfach nicht weiter.
Weiss jemand was ich falsch mache warum wird meine Variable aus dem Texinput "was" nicht übergeben?
Ich poste mal den Code und bin über jede Hilfe Dankbar.
Gruß
Lutz
<form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
<table width="100%" border="0" cellpadding="0" cellspacing="2">
<tr>
<td class="schwarz12">
<input name="was" type="text" id="was" value="<?php echo $was ?>">
<?php if (!$was) {?>
<select name="hw" id="hw" onChange="MM_jumpMenu('parent',this,0)">
<option value=" " selected>- - - - </option>
<option value="<?php echo $PHP_SELF ?>?was=<?php echo $_POST['was'];?>&hw=1">PC</option>
<option value="<?php echo $PHP_SELF ?>?was=<?php echo $_POST['was'];?>&hw=2">Monitor</option>
<option value="<?php echo $PHP_SELF ?>?was=<?php echo $_POST['was'];?>&hw=3">Drucker</option>
</select>
<?php }?>
<?php if ($hw == '1') { ?>
<input name="pcnr" type="text" id="pcnr" value="<?php echo $pcnr?>">
<input name="system" type="text" id="system" value="<?php echo $system?>">
<?php }?>
<input type="submit" name="Submit" value="Abschicken">
</td>
</tr>
</table>
</form>
Hi Lutz,
ich verstehe leider nicht so ganz, wo das Problem liegt. Könntest du den Fehler nochmal genau beschreiben?
Viele Grüße
Ben
Hallo
klar gerne,
Hatte auch was vergessen. Das javascript für das sprungmenü.
also nach dem aufrufen sind zwei felder sichtbar.
in das Feld "was" soll ein Text eingetippt werden, dann soll im Listenmenü PC ausgewählt werden, dann sollen eigentlich die Variablen im url sichtbar sein, nur "was" bleibt leer.
Die Variable "was" nicht übergeben. Allerdings wenn ich in das textfeld einen werte eingebe dann auf submit gehe , wird die variable übergeben.
Die Übergabe sollte aber erst nach Auswahl aus dem Listenfeld stattfinden.
Hier nocheinmal der ganze code.
Danke
Lutz
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
</head>
<body>
<form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
<input name="was" type="text" id="was" value="<?php echo $was ?>">
<?php if (!$was) {?>
<select name="hw" id="hw" onChange="MM_jumpMenu('parent',this,0)">
<option value=" " selected>- - - - </option>
<option value="<?php echo $PHP_SELF ?>?was=<?php echo $_POST['was'];?>&hw=1">PC</option>
<option value="<?php echo $PHP_SELF ?>?hw=2&was=<?php echo $was?>">Monitor</option>
<option value="<?php echo $PHP_SELF ?>?hw=3&was=<?php echo $was?>">Drucker</option>
</select>
<?php }?>
<?php if ($hw == '1') { ?>
<input name="pcnr" type="text" id="pcnr" value="<?php echo $pcnr?>">
<input name="system" type="text" id="system" value="<?php echo $system?>">
<?php }?>
</form>
Hallo,
also ich glaube, dass kann auch gar nicht Funktionieren, weil PHP ja vom Browser schon interpretiert wird.
Du kannst nicht direkt den Value des Inputs als Variable in das select-Feld schreiben. Dazu müsstest du die Variable erst einmal übergeben, um sie dann mit $_POST['was'] an die Url hängen zu können.
Bin nicht sicher, ob es daran liegt, aber so würde ich es mir erklären.
Vielleicht versuchst du mal mit JavaScript den Inhalt des Textfeldes an die Url anzuhängen? Damit dürfte es gehen.
Viele Grüße
Ben
Hi Ben,
OK, schade eigentlich kann man nix machen, ich gebe es auf.
Danke
Lutz
Hi Lutz,
muss es denn PHP sein? Probier es doch mit JavaScript, dann müsste es gehen. :-)
Viele Grüße
Ben
Hi Ben,
ja wäre schon besser, weil ich übergebe ja noch einige andere variablen und da geht es alledings kommen die aus ner query oder es ist das datum . Nur "was" wird nicht übergeben, das gepostete Variante war nur ein test.
Aber ich denke irgendwie sollte es gehen, weiß nur nicht wie.
Gruß
Lutz
Hi Lutz,
also wenn du die Eingabe in das Textfeld erst bestätigen lassen würdest, könntest du ja "was" übergeben und danach dementsprechend als value einbauen. Wäre das eine möglche Lösung? Kenne ja die Hintergründe nicht.
Viele Grüße
Ben
Ja so würde es gehen, das wollte ich aber nicht , rein theoretisch müsste es mit einem zweiten Sprungmenü klappen, ich brauche halt nur irgendwas was eine aktion auslößt, aber ein submitschalter sollte es nicht sein.
Gruß
Lutz
Hi Lutz,
du könntst natürlich onClick auf das DropDown legen, dabei eine Variable anlegen, die Seite übergeben und das eben nur, wenn die Variable noch nicht existiert. So wird sie nur beim ersten Klick auf das Menü abgeschickt und die "was" übergeben. ist vielleicht nur ne seltsame Methode.. *g*
Viele Grüße
Ben
Hi Ben,
ich versuchs einfach mal, nach onClick, lasse ich das Eingabefeld verschwinden und mit einem echo die Variable ausgeben und dann wieder übergeben, sollte gehen.
So ungefähr:
<?php if (isset ($was)) {?>
<input name="was" type="hidden" class="input" value="<?php echo $was?>">
<?php echo $was?>
<?php }else { ?>
<input.......
ich versuchs.
Gruß
Lutz
Hi Lutz,
ja, versuch das mal. Klingt ganz gut. :-)
Würde mich freuen, von dem Ergebnis zu hören. Interessiert mich mal, ob es dann klappt.
Viele Grüße
Ben
also mit einem Sprungmenü klappt es. Besser wäre natürlich der Radiobutton.
Schade
Gruß
Lutz
hier ist mal der ganze code , zum testen, wie gesagt, bei was wäre mir ein radio lieber gewesen.
<?php if ($was == 1) {
$artwas = "Störung";
}else if
($was == 2){
$artwas = "Wartung";
}else if
($was == 3){
$artwas = "Sonstiges";
} else {
} ?>
<?php if ($hw == 1) {
$namehw = "PC";
}else if
($hw == 2){
$namehw = "Monitor";
}else {
$namehw = "Drucker";
} ?>
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
</head>
<body>
<form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
<?php if (empty($was)) { ?>
WAS
<select name="was" id="was" onChange="MM_jumpMenu('parent',this,0)">
<option value=" " selected>- - - - </option>
<option value="<?php echo $PHP_SELF ?>?was=1">Störung</option>
<option value="<?php echo $PHP_SELF ?>?was=2">Wartung</option>
<option value="<?php echo $PHP_SELF ?>?was=3">Sonstiges</option>
</select>
<?php }else { ?>
<?php echo $artwas ?>
<?php }?>
<?php if (isset ($hw)) {?>
<input name="hw" type="hidden" class="input" value="<?php echo $hw?>">
<?php echo $namehw ?>
<?php }else { ?>
Welche Hardware
<select name="hw" id="hw" onChange="MM_jumpMenu('parent',this,0)">
<option value=" " selected>- - - - </option>
<option value="<?php echo $PHP_SELF ?>?was=<?php echo $was?>&hw=1">PC</option>
<option value="<?php echo $PHP_SELF ?>?was=<?php echo $was?>&hw=2">Monitor</option>
<option value="<?php echo $PHP_SELF ?>?was=<?php echo $was?>&hw=3">Drucker</option>
</select>
<?php } // zu if Hw?>
<?php if ($hw == '1') { ?>
PCNr.:
<input name="pcnr" type="text" id="pcnr" value="<?php echo $pcnr?>">
System
<input name="system" type="text" id="system" value="<?php echo $system?>">
<?php }?>
</form>
</body>
</html>
Hi Lutz,
was hat denn mit einem Radiobutton nicht funktioniert? Oder wie hast du versucht das zu lösen?
Vielleicht findet ja jemand hier noch ne Möglichkeit, das ganze über deinen gewünschten Radio-Button zu machen?
Viele Grüße
Ben
Hi,
ich muss doch irgendwie ne aktion auslösen bei "was" (ohne submit) das ging nicht beim radiobutton.
gruß
Lutz
Hi,
wieso geht das da nicht?
onClick oder onChange?
Viele Grüße
Ben
Hi Ben, ich bin anfänger , wie
kannst du das sprungmenü mal mit einem radio ersetzen?
danke
Lutz
Hi Lutz,
werde mich heute Abend nochmal damit befassen. Muss jetzt mal arbeiten. :-)
Viele Grüße
Ben
Hallo
fein ,
danke, aber nur wenn es nicht zu viel arbeit macht
gruß
lutz
Hallo Ben,
also ich glaube, dass kann auch gar nicht Funktionieren, weil PHP ja vom Browser schon interpretiert wird.
Vom Browser wird PHP ganz sicher nicht interpretiert...
Gruß,
dimde
Hallo
Hier nocheinmal der ganze code.
[...]
<body>
<form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
Du hast hier ein Formular, daß die Daten mit Post übermitteln soll ...
<input name="was" type="text" id="was" value="<?php echo $was ?>">
<?php if (!$was) {?>
<select name="hw" id="hw" onChange="MM_jumpMenu('parent',this,0)">
<option value=" " selected>- - - - </option>
<option value="<?php echo $PHP_SELF ?>?was=<?php echo $_POST['was'];?>&hw=1">PC</option>
... und willst hier etwas mit Get weitergeben.
Wenn <?php if (!$was) {?> eine Abfrage der Existenz von $was sein soll,
dann sollte das mit !isset($_POST["was"]) geschehen. Das funktioniert aber
erst, wenn das Formular mit "was" abgesendet wurde, ausgefüllt oder nicht,
weil "was" vorher für PHP nicht existieren _kann_ (Wird ja auf dem Server ausgeführt).
[...]
</select>
<?php } // Der PHP Block muß hier nicht geschlossen und wieder geöffnet werden.
if ($hw == '1') { ?>
<input ...
Ich hoffe, das war jetzt nicht zu verwirrend.
Tschö, Auge
Hallo Auge,
auch dir danke,
habe deine Nachricht auch eben erst gelesen.
was Du geschrieben hast war nicht verwirrend.
Gruß
Lutz
Hallo Lutz,
ich habe dieses Problem schon mal in einem anderen Forum gepostet. ich komme einfach nicht weiter.
Weiss jemand was ich falsch mache warum wird meine Variable aus dem Texinput "was" nicht übergeben?
<form name="form1" method="post" action="<?php echo $PHP_SELF ?>">
Seit PHP Version 4.1.0 ist die Standardeinstellung für
register_globals
off, nicht mehr on. Das ist gut so, und sollte nicht geändert werden.
Dies hat zur Konsequenz, dass Du auch nicht mehr direkt auf $PHP_SELF zugreifen kannst. So wie der Zugriff auf die values der Formularelemente je nach Übertragungsmethode mit den Superglobals $_POST bzw. $_GET erfolgt, so musst Du nun $_SERVER['PHP_SELF'] verwenden.
Nachdem eine Auswahl in der SELECT-Box erfolgt ist, möchtest Du auf den Wert zugreifen und ggf. eine ganz andere SELECT-Box anzeigen, die z.B. auf einer Datenbankabfrage beruht, die den ausgewählten Wert verwendet. Dazu musst Du die Auswahl an den Server zurückschicken, d.h. die action des Formulars auslösen.
Dazu solltest Du _unbedingt_ einen Submit-Button einbauen, z.B. mit "GO" oder "Los" beschriftet. Du kannst in einem Formular mehr als einen Submit-Button verwenden, das weißt Du doch?
Zusätzlich kannst Du den Submit per Javascript auslösen, indem Du das onchange-Ereignis des SELECT abfängst. Auf solche Weise funktionieren viele Formulare im Web.
Dein Formular muss allerdings entsprechend umgebaut werden, d.h. die Logik ändert sich etwas.
PS: Gib nicht auf!
Gruss,
Vinzenz
Hallo Vinzenz,
ich hatte deine Nachricht eben erst gelesen, danke.
aufgegeben habe ich es nicht, jetzt geht es, aber mit sprungmenü.
Ich merke mir das für das nächste mal.
Gruß
Lutz