Arrays aus mehreren Auswahlboxen auslesen.

Blöde Aussage, Flex!

Ich habe dir eine Frage gestellt ob das der Lösungsansatz ist den du meintest und du scheinst das auch zu ignorierieren.
 
Blöde Aussage, Flex!

Ich habe dir eine Frage gestellt ob das der Lösungsansatz ist den du meintest und du scheinst das auch zu ignorierieren.

Genauso wie du meinen Hinweis zu mehrdimensionalen Arrays ignoriert hast.

PHP:
for($x=0 ;$x < $count($_POST['inhalt']; $x++)
        {

        $bcount = count($_POST['inhalt'][$x]); 
        $bcount--;
        $b = 0; 
            while ($b <= $bcount) 
                {
                        insert_server($idartikel,$_POST['inhalt'][$x][$b]);
                }
        }
 
Also die Switch Felder würde ich in etwa so erzeugen:
Anm: Nicht getestet.
PHP:
function display_gruppens()  

{ 
$conn = db_connect();

$query = "select * FROM gruppen";
$result = $conn->query($query);

while($showgruppe= $result->fetch_assoc())
{      $groupt = $showgruppe['gruppe'] ;     
$name= "inhalt[".$groupt."]";
        echo "<select name='$name' size='2' style='background:#e4e4e4;border:1px solid;' multiple >";  
         display_artikel($groupt); 
         
         echo"</select>"; 
    } 
 }

In jedem Fall ist der Punkt, dass du ein mehrdimensionales Array erzeugst.
Nachfolgendes Script bezieht sich auf die folgende Namensgebung
name="inhalt[gruppe]" wobei gruppe eine eindeutige Identifikation der Gruppe, der die Artikel zugeordnet sind, sein sollte.

im PHP ansprechen könntest du dann mit
PHP:
foreach ($_POST['inhalt'] as $gruppe => $array
{ // wird für jede Select box durchlaufen
 // $gruppe enthält den Wert, der innerhalb der 1. Eckigen Klammern im Namen der Select Boc steht (String)
// $array enthält die werte die das Select feld übergibt
foreach($array as $value)
{ // Da multiselect ausgewählt ist, wird in dieser Schleife jeder Wert der gewählt wurde in
 // $value geschrieben. 

}
}

Siehe auch PHP Dokumentation für die foreach Schleife.
 
Ich erhalte leider folgende Meldung:

Code:
Warning: Invalid argument supplied for foreach()
bezieht sich auf die Zeile:

PHP:
foreach($array as $value)


Verwendet habe ich dein Code, respektive auch den zur Erstellung der Selects...
PHP:
foreach ($_POST['inhalt'] as $gruppe => $array)
{ // wird für jede Select box durchlaufen
 // $gruppe enthält den Wert, der innerhalb der 1. Eckigen Klammern im Namen der Select Boc steht (String)
// $array enthält die werte die das Select feld übergibt
foreach($array as $value)
{ // Da multiselect ausgewählt ist, wird in dieser Schleife jeder Wert der gewählt wurde in
 // $value geschrieben. 

}
}

Habe mir mit var_dump($gruppe) auch die Strings ausgeben lassen, das paßt soweit.

EDIT: Ich habe festgestellt, das immer nur der letzte Wert der mehrfach Auswahlen ,der jeweiligen Selectbox ankommt.

EDIT2

Ich habe nun mal rungetestet. Der Fehler muß hier liegen:

Code:
while($showgruppe= $result->fetch_assoc())
{      $groupt = $showgruppe['gruppe'] ;     
$name= "count[".$groupt."]";  <-------HIER
        echo "<select multiple='multiple' name='$name' style='background:#e4e4e4;border:1px solid;'  >";  
         display_artikel($groupt); 
         
         echo"</select>"; 
    } 
 }

Ich erhalte bei einer mehrfacher Auswahl bei 3 Selectboxen folgendes Ergebniss mit print_r($_POST);

Code:
Array
(
    [count] => Array
        (
            [ c] => c3  hier fehlt c2
            [b] => b3  hier b2
            [a] => a4  hier a3 und a2 
        )

    [servernamen] => Servername
    [serverbeschreibung] => Serverbeschreibung 
    [serverpreis] => Preis
    [serverid] => 31
    [x] => 7
    [y] => 8
)

wenn ich hier eben die Klammern manuell setzte:

Code:
$name= "count[".$groupt."]";
        echo "<select multiple='multiple' name='name[] style='background:#e4e4e4;border:1px solid;'  >";

dann paßt alles:

Code:
Array
(
    [name] => Array
        (
            [0] => c2
            [1] => c3
            [2] => b2
            [3] => b3
            [4] => a2
            [5] => a3
            [6] => a4
        )

    [servernamen] => Servername
    [serverbeschreibung] => Serverbeschreibung 
    [serverpreis] => Preis
    [serverid] => 31
    [x] => 6
    [y] => 9
)


:confused:
 
Zuletzt bearbeitet:
Klar, daher hatte ich ja schon den Verdacht, das nur ein Wert vorliegt und wie du in meinem vorletzten Post sehen kannst, ist das damit bestätigt.

Grüße Markus
 
Zurück