Carsten Wilke: php3Seite mit ?parameter1=...&parameter2=... in Ahängigkeit von Listenfeldauswah

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...&para2 ö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

  1. 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="">

    http://www.atomic-eggs.com/selfspezial/daten/101.html

    1. 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&para2=$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

      1. 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&para2=$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&para2=$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

        1. 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

          1. 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

  2. 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

    1. 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&para2=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

      1. 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="">

        http://www.atomic-eggs.com/selfspezial/daten/101.html