php3Seite mit ?parameter1=...¶meter2=... in Ahängigkeit von Listenfeldauswah
Carsten Wilke
- php
Hallo,
ich hab ein Listenfeld, in dem php3-seiten-namen stehen.
Diese werden automatisch aus einer DB-Tabelle geholt.
Ich möchte jetzt gerne, daß wenn ich z.B. php-Seite-1 auswähle,
nicht nur Seite-1.php3 sondern
Seite-1.php3?para1...¶2 öffnen lasse. Es soll immer
Seite-1.php3 aufgerufen werden, allerdings mit verschiedenen
Parametern.
Die Werte für para1 und para2 soll er aus der DB nehmen, jeweils
in Äbhangigkeit von dem ausgewählten Listeneintrag. Ich
hab schon viel versucht, aber da der form action tag schon
vor der options Anweisung kommt, hab ich ja keinen Einfluß
darauf, welche parameter die Seite hat...
Vielen Dank vorab, Carsten
Hallo Carsten,
wenn Dein Formulat bereits seite1.php3 ist, dann musst Du eine
if()-Abfrage starten.
Wenn keine Parameter übergeben sind (zB $parameter == ""), dann kommt
nur das Formular, das dann an "seite1.php3" abgeschickt wird, was
zur Folge hat, dass die Parameter dann für die Datei verfügbar sind
und Du dann mit if($parameter != "") Deine eigentliche Aktion aus-
führen lassen kannst.
<img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">
<img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">
Sorry, ich hab mich wohl sehr mißverständlich ausgedrückt:
<HTML><HEAD><TITLE></TITLE></HEAD><BODY></BODY>
<?php
$elemente=explode(";",$parameter);
$para1=$elemente[0];
$para2=$elemente[1];
echo"<a href='mainframe.php3?para1=$para1¶2=$para2'>
Hier gehts zur Seite, und genau diesen klick will sparen!</a>";
?>
<form action=auswahl.php3 target='_self' method=POST>
<br>Geschäft wählen:<br>
<select name='parameter' size='1'>
<option value='leer'>keine wahl
<option value='19;1'>wahl1
<option value='19;2'>wahl2
</select>
<input type='submit' name='Submit' value='Go'>
</form>
</HTML>
Sorry, ich komme zur Zeit nicht auf meine Seite via ftp !
Also, ich will, daß ich jetzt sofort auf meine Seite komme, die er mir als Egebnis als link angibt! Also nicht erst durch den klick auf den link! Das problem ist, wie gesagt, das ich die Parameter nicht vor generierung von o.g. code habe, ich per form keine variablen namen übergeben kann (daher der explode-befehl).
Ich hoffe, jetzt ist mein Problem verständlicher geworden...
Vielen Dank, Carsten
Hi Carsten,
»» <HTML><HEAD><TITLE></TITLE></HEAD><BODY></BODY>
<?php
$elemente=explode(";",$parameter);
$para1=$elemente[0];
$para2=$elemente[1];
echo"<a href='mainframe.php3?para1=$para1¶2=$para2'>
Hier gehts zur Seite, und genau diesen klick will sparen!</a>";
?>
1.Möglichlkeit:
ergänze mainframe.php3 um folgende Zeilen:
<?php
if($parameter)
{
$elemente=explode(";",$parameter);
$para1=$elemente[0];
$para2=$elemente[1];
}
?>
und statt wieder das Formular aufzrufen
<form action=auswahl.php3 target='_self' method=POST>
rufst du mainframe.php3 direkt auf:
<form action=mainframe.php3 target='_self' method=POST>
-------------------------------------------------------------------------
ODER
_UNMITTELBAR_ am Dateianfang:
<?php
id($Submit=="Go")
{
$elemente=explode(";",$parameter);
$para1=$elemente[0];
$para2=$elemente[1];
header ("Location: http://deinedomain.de/mainframe.php3?para1=$para1¶2=$para2");
// auf mainframe redirecten (ACHTUNG: Doku zu header() lesen (Functions->HTTP-Functions)!)
}
?>
und später dann erst:
»» <HTML><HEAD><TITLE></TITLE></HEAD><BODY></BODY>
Geschäft wählen:
<select name='parameter' size='1'>
<option value='leer'>keine wahl
<option value='19;1'>wahl1
<option value='19;2'>wahl2
</select>
<input type='submit' name='Submit' value='Go'>
</form>
</HTML>
Die zweite Methode hat einen Riesenvorteil: Wenn dir die Parameter nicht passen
(ungültiger Werte, nicht alle Felder vorhanden) machst du keinen Redirekt
(einfach ein if() vor den header() Aufruf) und bleibst dann im Formular.
Ausserdem vermeidest du die blöde Netscape-Fehlermeldung beim Reload/Resize
ge'post'eter Formulare.
Gruss,
Carsten
Dir sei gedankt Namensvetter!
Habe mich für variante 1 entschieden:
-ging am einfachsten
-ich brauche nicht auf ungültige eingaben zu prüfen, die Infos kommen ja aus einer DB, und wenn die nicht stimmen würden, kommt man gar nicht erst zu dem Listenfeld
-bei der header-variante hab ich den Fehler called to unsupported funvtion "id", ich werde mir "header" mal genauer in der Doku ansehen, damit ich das dann verstehe.
Also nochmal vielen Dank, Carsten
Hallo Carsten,
-bei der header-variante hab ich den Fehler called to unsupported funvtion
"id", ich werde mir "header" mal genauer in der Doku
sorry, Tippfehler: Das sollte natürlich if(...) heissen und sorgt dafür das der
Redirekt dann und nur dann ausgeführt wird, wenn das Formular abgeschickt wurde
und nicht, wenn du es per Link angesurft hast.
Gruss,
Carsten
Hallo Namensvetter,
Die Werte für para1 und para2 soll er aus der DB nehmen, jeweils
in Äbhangigkeit von dem ausgewählten Listeneintrag. Ich
hab schon viel versucht, aber da der form action tag schon
vor der options Anweisung kommt, hab ich ja keinen Einfluß
darauf, welche parameter die Seite hat...
doch doch, zumindest wenn ich dich richtig verstanden habe ->
bau doch einfach ein paar hidden Felder ins <form> ein:
<input type=hidden name="para1" value="<? echo $para1; ?>
<input type=hidden name="para2" value="<? echo $para2; ?>
Gruss,
Carsten
Hallo Namensvetter,
Die Werte für para1 und para2 soll er aus der DB nehmen, jeweils
in Äbhangigkeit von dem ausgewählten Listeneintrag. Ich
hab schon viel versucht, aber da der form action tag schon
vor der options Anweisung kommt, hab ich ja keinen Einfluß
darauf, welche parameter die Seite hat...doch doch, zumindest wenn ich dich richtig verstanden habe ->
bau doch einfach ein paar hidden Felder ins <form> ein:<input type=hidden name="para1" value="<? echo $para1; ?>
<input type=hidden name="para2" value="<? echo $para2; ?>Gruss,
»» Carsten
Hallo, aber wie mache ich es jetzt, das z.B Bei klick auf Go die seite seite1.php3?para1=auswahl1¶2=auswahl2 aufgerufen wird? Im form-kopf geb ich ja nur "seite1.php3" als action an, aber die action ist halt je nach Auswahl aus der Liste unterschiedlich, und die Werte für para1 und para2 werden ja erst unter form action im selection-Teil deklariert.
@Alexander: Ich rufe die Seite1.php3 aus einer anderen Seite aus, so daß die Parameter in der Seite der Auswahlliste später als der form-action aufgerufen wird.
Für weitere Ideen wäre ich sehr dankbar, Carsten
Hallo Carsten,
@Alexander: Ich rufe die Seite1.php3 aus einer anderen Seite aus,
so daß die Parameter in der Seite der Auswahlliste später als der
form-action aufgerufen wird.Für weitere Ideen wäre ich sehr dankbar, Carsten
Also, entweder reden wir gerade an einander vorbei oder ich hab Dir
die Lösung schon gesagt: Seite1.php3 erneut aufrufen durch das ab-
senden des Forms.
Tipp: Problem etwas genauer schildern:
Von wo kommst Du, in welcher Datei steckt Deion Formular und wie
geht es dann weiter; oder URL posten.
<img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">
<img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">