luca: Per $_POST[] die gewählte id und nicht den "value" übertragen?

Hallo!

Ich habe ein Formular erstellt und habe eine elend lange Länderliste mit denen ich die Versandkosten berechnen lassen will. Es gibt 3 Versandgruppen:

Deutschland
Europa
Rest der Welt

Jetzt Habe auf der Bestellseite ein select:

  
 <select name="land" size="1" style="width:200px;">  
    <option  value="Andorra" >Andorra</option>  
    <option  value="Arab Emirates">Arab Emirates</option>  
    <option  value="Afghanistan" >Afghanistan</option>  
    <option  value="Germany" >Germany</option>  
    <option  value="France" >France</option>  
    ....  
  

Nun kann der Name des Landes per $_POST[land] abgefragt werden. Soweit so gut. Jetzt wäre es toll auch die Ländergruppe übertragen zu können die ich z.B. in die id packen könnte:

  
 <select name="land" size="1" style="width:200px;">  
   <option  id="" value="Andorra" >Andorra</option>  
   <option  id="rest_der_welt" value="Arab Emirates">Arab Emirates</option>  
   <option  id="rest_der_welt" value="Afghanistan" >Afghanistan</option>  
   <option  id="deutschland" value="Germany" >Germany</option>  
   <option  id="europa" value="France" >France</option>  
    ....  
  

Wie kann ich jetzt diese IDs per $_POST[] auf der Folgeseite abfragen?

Freue mich auf eure Antworten & Danke schon im Voraus!
Luca

  1. Nun kann der Name des Landes per $_POST[land] abgefragt werden.

    Aber nur durch "Zufall" bzw. durch die Gutmütigkeit von PHP, versuchs mit $_POST['land'].

    Wie kann ich jetzt diese IDs per $_POST[] auf der Folgeseite abfragen?

    Garnicht. Einerseits ist das ungültiges HTML (in jeder Weise) und andererseits kommen die Werte nicht zum Server.

    Prüfe einfach Serverseitig in welcher Versandgruppe sich das übermittelte Land befindet und gut ist. Die nötigen Daten kannst du in einem mehrdimensionalen Array ablegen aus dem du dann auch die Auswahlliste für das Frontend erzeugst. So musst du die Daten nur 1x pflegen.

    1. Nun kann der Name des Landes per $_POST[land] abgefragt werden.

      Aber nur durch "Zufall" bzw. durch die Gutmütigkeit von PHP, versuchs mit $_POST['land'].

      Stimmt, ja der Originalcode ist auch mit '

      Wie kann ich jetzt diese IDs per $_POST[] auf der Folgeseite abfragen?

      Garnicht. Einerseits ist das ungültiges HTML (in jeder Weise) und andererseits kommen die Werte nicht zum Server.

      Prüfe einfach Serverseitig in welcher Versandgruppe sich das übermittelte Land befindet und gut ist. Die nötigen Daten kannst du in einem mehrdimensionalen Array ablegen aus dem du dann auch die Auswahlliste für das Frontend erzeugst. So musst du die Daten nur 1x pflegen.

      Alles klar, danke! Dann muss ich wahrsch für jedes Land eine if-Anweisung schreiben ungefähr so, oder?:

        
      if ($_POST['land'] == Germany) {$laendergruppe = germany}  
      if ($laendergruppe == germany) {$versandkosten = 2.50}  
      
      
      1. Hi!

        Prüfe einfach Serverseitig in welcher Versandgruppe sich das übermittelte Land befindet und gut ist.
        Dann muss ich wahrsch für jedes Land eine if-Anweisung schreiben ungefähr so, oder?:

        Nein. Du wirst ja wohl kaum die Ländernamen kaum lose rumliegen haben sondern sie in einer wie auch immer gearteten Datensammlung halten. Zu dieser solltest du jetzt auch noch die Gruppeninformation hinzufügen. Nun kannst du den übergebenen Ländernamen in dieser Datenhaltung suchen und daraus die Gruppe lesen.

        Und tu deinen Anwendern einen Gefallen: Sortiere zusätzlich zur alphabetischen Liste noch die am häufigsten verwendeten Länder gleich vornan, so dass man nicht immer die gesamte Liste absuchen muss.

        Lo!

    2. Hi!

      Garnicht. Einerseits ist das ungültiges HTML (in jeder Weise) und andererseits kommen die Werte nicht zum Server.

      Ungültiges HTML ist es, weil ein ID-Wert nicht mehr als einmal auftreten darf, sonst ist er zum Identifizieren ungeeignet.

      Prüfe einfach Serverseitig in welcher Versandgruppe sich das übermittelte Land befindet und gut ist. Die nötigen Daten kannst du in einem mehrdimensionalen Array ablegen aus dem du dann auch die Auswahlliste für das Frontend erzeugst. So musst du die Daten nur 1x pflegen.

      Genau. Und der Anwender kann bei serverseitig geplegten Daten nicht einfach durch eine kleine Manipulation in seinem Browser einerseits zwar das richtige Emfängerland angeben, andererseits aber es zur günstigsten Gruppe zuorden.

      Lo!

  2. <option  value="Andorra" >Andorra</option>
        <option  value="Arab Emirates">Arab Emirates</option>
        <option  value="Afghanistan" >Afghanistan</option>
        <option  value="Germany" >Germany</option>
        <option  value="France" >France</option>

    Sinnvoller ist es vermutlich das value-Attribut durch ISO-3166-Werte zu taushcen.

    Einerseits ist die Datenmenge kleiner, andererseits sind Abgleiche einfacher (z.B. wenn man die Daten auch noch für eine Clearing-Schnittstelle eines Kreditkartenanbieters braucht) und zu guter letzt tut man sich mit Übersetzungen leichter.

  3. Hi,

    Nun kann der Name des Landes per $_POST[land] abgefragt werden. Soweit so gut. Jetzt wäre es toll auch die Ländergruppe übertragen zu können die ich z.B. in die id packen könnte:

    <select name="land" size="1" style="width:200px;">
       <option  id="" value="Andorra" >Andorra</option>
       <option  id="rest_der_welt" value="Arab Emirates">Arab Emirates</option>
       <option  id="rest_der_welt" value="Afghanistan" >Afghanistan</option>
       <option  id="deutschland" value="Germany" >Germany</option>
       <option  id="europa" value="France" >France</option>

      
    Wenn Dich nur "europa", "rest\_der\_welt" usw. interessiert, dann steck das doch in den value.  
      
    Andererseits: Serverseitig hast Du doch sowieso eine Tabelle, in der die Information drinsteckt, ob Andorra "rest\_der\_welt" oder "europa" oder sonstwas ist - sonst könntest Du ja gar nicht die (falschen, weil nicht eindeutigen) id-Attributwerte zuordnen. Also kannst Du doch auch nach dem Absenden des Formulars mit dem Landesnamen wieder in ebendieser Tabelle nachgucken, ob das übergebene Land "rest\_der\_welt" oder "europa" oder sonstwas ist.  
      
    cu,  
    Andreas
    
    -- 
    [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
    [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.