radiobutton miteinander verbinden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • radiobutton miteinander verbinden

    Hey Leute,

    kleine Anmerkung vorweg, bitte kein herzinfarkt bekommen, denn da ich leider weder der php- noch der javacrack bin (kommt noch ), bräuchte ich eure Hilfe, das wäre echt super! - denn ich weißt einfach nicht mehr weiter =s

    Also folgendes Problem steht an:

    Ich habe mit html ein formular erstellt, darin befinde sich ausschließlich radiobuttons. Es gibt 4 gruppen, die jeweils mehrere radiobutton-anklickoptionen haben.
    es soll nun eine auswahlkombination stattfinden.

    aus gruppe 1 wird ein button ausgewählt
    aus gruppe 2 wird ein button ausgewählt
    aus gruppe 3 wird ein button ausgewählt
    aus gruppe 4 wird ein button ausgewählt

    nun sollen die vier radiobuttons miteinander verbunden werden,
    bedeutet also, wenn diese kombination gewählt wurde, dann gib 123 aus, wenn eine andere kombination ausgewählt wurde, dann gebe abc aus.

    ich hoffe, dass das zumindest etwas verständlich war.

    hier ein bsp-code:
    erst der html-code:

    gruppe 1
    <input type="radio" name="a" value="ab" id="1" />
    <input type="radio" name="a" value="ab1" id="5" />
    <input ..../ >
    ...

    gruppe2
    <input type="radio" name="b" value="ac" id="2" />
    <input type="radio" name="b" value="ac1" id="6" />
    <input ..../ >
    ...

    gruppe3
    <input type="radio" name="c" value="ad" id="3" />
    <input type="radio" name="c" value="ad1" id="7" />
    <input ..../ >
    ...

    gruppe4
    <input type="radio" name="d" value="ae" id="4" />
    <input type="radio" name="d" value="ae1" id="8" />
    <input ..../ >
    ....
    so hoffe mal das ich überhaupt im html-code keine fehler gemacht habe.
    jedenfalls kommt jetzt der php-teil

    gruppe1

    $ab = $_POST['ab'];
    $ab1 = $_POST['ab1'];

    gruppe2

    $ac = $_POST['ac'];
    $ac1 = $_POST['ac1'];

    gruppe3

    $ad = $_POST['ad'];
    $ad1 = $_POST['ad1'];

    gruppe4

    $ae = $_POST['ae'];
    $ae1 = $_POST['ae1'];

    /*kombination 1*/
    if(empty($_POST['ab']) && empty($_POST['ac']) && empty($_POST['ad']) && empty($_POST['ae'])){

    echo '123';
    }

    /*kombination 2*/
    elseif(empty($_POST['ab1']) && empty($_POST['ac1']) && empty($_POST['ad1']) && empty($_POST['ae1'])){

    echo 'abc';
    }

    else{

    echo 'antwort ist unbekannt';
    }

    im prinzip hat es geklappt, denn wenn kombination 1 angeklickt wird, zeigt er mir "123" an, aber bei einer andere kombination, oder genauer bei der kombination 2, reagiert er nicht, es wird immer die antwort von kombination 1 ausgegeben, also "123" und nicht "abc".

    hat jemand ne idee woran es liegt bzw. wie man das richtig macht?

    vielen dank im voraus

    tummy

  • #2
    Hi tummy,

    >> im prinzip hat es geklappt, . . . .

    Nein, hat es nicht.

    Du fragst in deiner Bedingung . . .

    PHP-Code:
    if(empty($_POST['ab']) && empty($_POST['ac']) . . . usw
    . . . $_POST-Elemente ab, die es nicht gibt!!

    Deine Radio-Gruppen heißen a, b, c, d. Folglich gibt es $_POST['a'], $_POST['b'], . . . usw.

    ab, ac . . . usw. sind die Werte, die übertragen werden.

    Dem entsprechend heißt es dann . . .

    PHP-Code:
    $a $_POST['a']; //Enthält 'ab' oder 'ab1'
    $b $_POST['b']; //Enthält 'ac' oder 'ac1'
    $c $_POST['c']; //Enthält 'ad' oder 'ad1'
    $d $_POST['d']; //Enthält 'ae' oder 'ae1' 
    Jetzt kannst du deine Kombinationen prüfen.

    PHP-Code:
    if($a == 'ab' && $b == 'ac' . . . usw.){
     
    ToDo;

    Aber beachte: Wenn in einer Gruppe KEIN Button ausgewählt wurde, so wird auch nichts gesendet.

    Wenn du also drauf angewiesen bist, alle Radio-Werte zu verarbeiten, kann man einen Radio-Button je Gruppe schonmal "angeklickt" darstellen:

    HTML-Code:
    <input type="radio" name="a" value="ab" id="1" checked />
    <input type="radio" name="a" value="ab1" id="2" />
    <input type="radio" name="b" value="ac" id="3" checked />
    <input type="radio" name="b" value="ac1" id="4" />
    Oder halt prüfen, ob das $_POST-Element existiert, bevor du einer Variablen Unsinn zuweist:

    PHP-Code:
    if(isset($_POST['a'])){
     
    $a=$_POST['a'];
    }else{
     
    ToTo;
     } 
    Gruß
    Günni

    PS.: Lass dir mit print_r($_POST) die gesendeten Daten ausgeben. Dann siehst du, was ich meine.
    Zuletzt geändert von Guenni61; 19.02.2012, 13:37.

    Kommentar


    • #3
      Hi tummy,

      noch ein Nachtrag: Anstatt die Values der Radio-Button mit Buchstaben zu belegen, könnte man auch Zahlen verwenden:

      HTML-Code:
      <form action="" method="post">
      <input type="radio" name="a" value="1" checked>
      <input type="radio" name="a" value="2">
      <input type="radio" name="b" value="4" checked>
      <input type="radio" name="b" value="8">
      <input type="radio" name="c" value="16" checked>
      <input type="radio" name="c" value="32">
      <input type="radio" name="d" value="64" checked>
      <input type="radio" name="d" value="128">
      <input type="submit" name="cmd">
      </form>
      Jetzt muß man zwar erstmal alle möglichen Summen der Kombinationen bilden, aber die Auswertung ist dafür mit einem switch-Konstrukt einfacher:

      PHP-Code:
      <?php
      if(isset($_POST['cmd'])){
       
      /**/
       
      echo '<pre>';
       
      print_r($_POST);
       echo 
      '</pre>';
       
      /**/
       
      $a $_POST['a'];
       
      $b $_POST['b'];
       
      $c $_POST['c'];
       
      $d $_POST['d'];
       
      // Summe bilden
       
      $auswahl=$a $b $c $d;
       
      // echo $auswahl;
       
      switch($auswahl){
        
      /*
        * Statt echo $auswahl, muß hier natürlich eine Anweisung nach dem Doppelpunkt hin.
        */
        
      case 85: echo $auswahl;break;
        case 
      86: echo $auswahl;break;
        case 
      89: echo $auswahl;break;
        case 
      90: echo $auswahl;break;
        case 
      101: echo $auswahl;break;
        case 
      102: echo $auswahl;break;
        case 
      105: echo $auswahl;break;
        case 
      106: echo $auswahl;break;
        case 
      149: echo $auswahl;break;
        case 
      150: echo $auswahl;break;
        case 
      165: echo $auswahl;break;
        case 
      166: echo $auswahl;break;
        case 
      169: echo $auswahl;break;
        case 
      170: echo $auswahl;break;
       }
      }
      ?>
      Ist vielleicht einfacher, als if($a == 'ab' und $b == 'bc' . . . usw.), aber wie immer auch Geschmackssache.

      Gruß
      Günni

      Kommentar


      • #4
        Hi Guenni

        erst einmal vielen Dank für die schnelle Antwort!!
        Hab' deine Lösung(-sansätze) gleich mal angewendet und das auch noch mit Erfolg =)

        Die zweite Variante fand ich für mich persönlich auch besser (wesentlich übersichtlicher), aber da hast du sicherlich Recht, alles Geschmackssache.

        Viele Grüße

        Tummy

        Kommentar

        Lädt...
        X