PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Entwicklung und Softwaredesign (http://www.selfphp.de/forum/forumdisplay.php?f=14)
-   -   dropdownmenü Auswahl deaktivieren (http://www.selfphp.de/forum/showthread.php?t=25439)

BigCrush 20.11.2014 12:18:46

dropdownmenü Auswahl deaktivieren
 
Hallo alle zusammen!

Habe zwei dropwown Menüs: Mannschaft 1 und Mannschaft 2

<select name="mannschaft_1" style="width: 241px">
<option value=" ">Mannschaft auswählen</option>
<option value="team1">Team 1</option>
<option value="team2">Team 2</option>
<option value="team3">Team 3</option>
</select>

<select name="mannschaft_2" style="width: 241px">
<option value=" ">Mannschaft auswählen</option>
<option value="team1">Team 1</option>
<option value="team2">Team 2</option>
<option value="team3">Team 3</option>
</select>

Beim Auswählen eines Eintrags im Mannschaft 1 z.B. Team 1 muss Team 1 in dem Mannschaft 2 deaktiviert werden bzw. nicht zur Auswahl stehen.
Wie kann ich dies realisieren?

sysop 21.11.2014 12:39:05

AW: dropdownmenü Auswahl deaktivieren
 
Hallo

So simpel ist das mit PHP nicht, da du bei erfolgter Auswahl 1 zunächst das Formular abschicken musst , eine Auswertung machen musst und erst dann die zweite Selectbox zur Verfügung stellen kannst. Ich habe das im Bsp. unten so gelöst, dass Die Selects nacheinander abgefragt werden und eine Auswahl sofort an den Browser gesendet wird.

Auf die Schnelle also ca. so:
PHP-Code:

<?PHP
session_start
();

?>

   <script type="text/javascript">
   function formHandler(sel)
   {
      var sURL = sel.options[sel.selectedIndex].value;
      if (sURL != "nichts")
      {
      this.location.href= sURL;
      }
     }
   </script>

<?PHP

function selbox($werte$getparam='wahl'$name)
{

    
$backwert "<select onChange=\"formHandler(this)\" title=\"teamwahl\">\n";
    
$backwert .= '<option value=" ">'.$name.'</option>';

    for(
$i 0$i count($werte); $i++)
    {
        if(
$werte[$i] == '') continue;
        
$backwert .= '<option value="'.$_SERVER['SCRIPT_NAME'].'?'.$getparam.'='.$i.'">'.$werte[$i].'</option>'."\n";
    }

    
$backwert .= '</select>';

    return 
$backwert;
}

/**
 *
 *  Hier startet das eigentliche Script
 *
**/

// Auswahl der Dropdownfelder
$werte = array();
$werte[] = 'team_1';
$werte[] = 'team_2';
$werte[] = 'team_3';
$werte[] = 'team_4';

$selbox1 'Mannschaft 1 w&auml;hlen';
$selbox2 'Mannschaft 2 w&auml;hlen';

// INIT des Scripts und Auswahl 1 und Auswahl 2 löschen
if(isset($_GET['init']))
{
    unset(
$_SESSION['w1']);
    unset(
$_SESSION['w2']);
}

// Noch keine Auswahl 1 vorhanden
if(!isset($_GET['wahl']) AND (!isset($_SESSION['w1'])))
{
    
$auswahl selbox($werte'wahl'$selbox1);
    echo 
$auswahl// die erste Seelctbox
}

// Auswahl 1 ist getroffen, $_SESSION belegen und Auswahl 2 starten
elseif(isset($_GET['wahl']))
{
    
$_SESSION['w1'] = $werte[$_GET['wahl']];
    
$werte[$_GET['wahl']] = ''// diese Wahl steht nicht mehr zur Verfügung

    
$auswahl2 selbox($werte'wahl2'$selbox2);
    echo 
$auswahl2;
}

// Auswahl 2 wurde auch getroffen, $_SESSION mit Wahl 2 belegen
if(isset($_GET['wahl2']))
{
    
$_SESSION['w2'] = $werte[$_GET['wahl2']];
}

// Erst wenn beide Manschaften gewählt wurden, weiter verarbeiten
if(isset($_SESSION['w1']) AND (isset($_SESSION['w2'])))
{
    echo 
'Wahl 1='.$_SESSION['w1']."<br>";
    echo 
'Wahl 2='.$_SESSION['w2'];
}

INIT des Scripts mit ?init in der URL

Oder du machst das mit AJAX, dann spart man sich das Absenden der ersten Auswahl.

crsakawolf 26.11.2014 08:15:45

AW: dropdownmenü Auswahl deaktivieren
 
Ich würde dabei auf AJAX setzen und die 2. Liste Asynchron laden lassen.
Entweder direkt JavaScript oder wenn du eh jQuery nutzt dann darüber (was ja auch nichts anders als direkt JavaScript ist).

Das bedeutet, das du mittels

Code:

$("select [name='mannschaft_1']").change(function(){
//  hier kommt deine Ajax abfrage
});

In der AJAX abfrage übergibst du einfach den Wert von deinem ersten select und lässt ein PHP script dann die dazu passenden Mannschaften ausgeben.

Wenn du nicht weiter kommst, poste deinen Code Ansatz.

Lg


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:57:01 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.