Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Mehrfachauswahl auswerten    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
Nicklas2751
Mitglied
Sehr guter User


Dabei seit: 19.02.2008
Herkunft: Bayern
Posts: 519
     Mehrfachauswahl auswerten Zitat | Bearbeiten

Jeder kennt sie die Select boxen mit mehrfach Auswahl, doch wie Wertet man sie aus?

Zu aller erst muss man die Select box dazu bringen multiple zu werden dies geht so:
 PHP 
1:
2:

<select name="test" size="0" multiple></select>


nun müssen wir dem Script sagen das es automatisch einen Arry erstellen soll
der die ausgewählten einträge beinhaltet, dies geht so:
 PHP 
1:
2:
3:
4:
5:
6:

<select name="test[]" size="0" multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>


als nextes müssen wir herausfinden wie viele Einträge ausgewählt wurden,
dass machen wir mit Hilfe von count(), das sieht dann so aus:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

<form method="POST">
<select name="test[]" size="0" multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" value="Senden">
</form>
<?php
$zahl 
count($_POST['test']);
echo 
$zahl;
?>


zu letzt müssen wir noch eine schleife einsetzen um alle einträge anzeigen zu lassen und das sieht dann so aus:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:

<form method="POST">
<select name="test[]" size="0" multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" value="Senden">
</form>
<?php
echo "Einträge:<br>";
$zahl count($_POST['test']);
for(
$i=0$i $zahl$i++)
   {
   echo 
$_POST['test'][$i]."<br>";
   }
echo 
"Es sind $zahl Einträge im Array";
?>



Über mich

----------------

20.12.2009, 19:28 Profil | PM | E-Mail  
md5()
Mitglied
Guter User


Dabei seit: 18.12.2009
Herkunft: Ukraine
Posts: 273
      Zitat | Bearbeiten

war das ein kleines Tutorial oder eine Fragen ?


20.12.2009, 19:50 Profil | PM | E-Mail  
Nicklas2751
Mitglied
Sehr guter User


Dabei seit: 19.02.2008
Herkunft: Bayern
Posts: 519
      Zitat | Bearbeiten

Zitat:
Orginal von php-diskussion.de
war das ein kleines Tutorial oder eine Fragen ?

die Frage war die Einleitung für das Tutorial


Über mich

----------------

20.12.2009, 19:53 Profil | PM | E-Mail  
B.C.
Mitglied
Sehr guter User


Dabei seit: 04.02.2009
Herkunft: Niedersachsen
Posts: 797
      Zitat | Bearbeiten

Hi,

diesen Teil finde ich etwas unglücklich gestaltet:

 PHP 
1:
2:
3:
4:
5:
6:
<?
$zahl 
count($_POST['test']); 
for(
$i=0$i $zahl$i++) 
   { 
   echo 
$_POST['test'][$i]."<br>"
   }


Um ein Array auszulesen, gibt es eine ganz spezielle Schleife, die foreach-Schleife.
Diese läuft für jedes (foreach) Element in dem Array durch. Ich hätte es so gelöst:

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?
$zahl 
0;
foreach(
$_POST['test'] as $key => $value)
   {
   echo 
"Variable '$key' enthaelt Wert: '$value'";
   echo 
'<br />';
   
$zahl++;
   }
echo 
'Anzahl der Markierten: ' $zahl;





Post wurde schon 2x editiert, das letzte mal am 20.12.2009 um 20:28 von B.C.
20.12.2009, 20:21 Profil | PM | E-Mail  
Marco7757
Mitglied
Sehr guter User


Dabei seit: 12.01.2007
Herkunft:
Posts: 596
      Zitat | Bearbeiten

Gibt es einen Performance-Unterschied zwischen for und foreach? Oder ist foreach einfach weniger umständlich zu programmieren?


slothg
The Gearwheel
22.12.2009, 17:14 Profil | PM | E-Mail  
Gast


      Zitat | Bearbeiten

Performanceunterschied ist vernachlässigbar, aber foreach ist bei Arrays einfach simpler, der Vorteil liegt dann vor allem bei assoziativen Arrays, z.B:

$array = array(

'Peter' => 'Trudi',
'Kunz' => 'Heidi',
'Werther' => 'Lotte'

);

foreach ( $array as $mann => $frau )
{
echo $mann . ' ist mit ' . $frau . ' verheiratet';
}

so was mit for zu machen ist ganz schön umständlich


22.12.2009, 20:50  
Gast


      Zitat | Bearbeiten

nö.

$foo = array('Peter' => 'Trudi', 'Kunz' => 'Heidi', 'Werther' => 'Lotte');
$keys = array_keys($foo);
for($i = 0; $i != count($foo); $i++) {
echo $keys[$i].' ist mit '.$foo[$i].' verheiratet';
}

^^


29.03.2010, 10:47  
B.C.
Mitglied
Sehr guter User


Dabei seit: 04.02.2009
Herkunft: Niedersachsen
Posts: 797
      Zitat | Bearbeiten

Hi,

bei dir wird in der for-Schleife 3 mal die Funktion count() aufgerufen, da sie in der Anweisung der Schleife steht.
Am besten wäre es so:

 PHP 
1:
2:
3:
4:
5:
6:
7:
<?
$foo 
= array('Peter' => 'Trudi''Kunz' => 'Heidi''Werther' => 'Lotte');
$keys array_keys($foo);
$count count($foo);
for(
$i 0$i != $count$i++) {
echo 
$keys[$i].' ist mit '.$foo[$i].' verheiratet';
}





Post wurde schon 1x editiert, das letzte mal am 30.03.2010 um 14:09 von B.C.
30.03.2010, 14:09 Profil | PM | E-Mail  
Teufel964
Mitglied
Neuling


Dabei seit: 21.03.2013
Herkunft: keine Angabe
Posts: 1
      Zitat | Bearbeiten

Hi Leute,

habe da mal ´ne Frage
Klappt bei mir leider nicht so gut.

meinen Eingabe sieht so aus:

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:

// Abfrage aus mysql
echo '
<select name="Leistung" multiple>
<option selected="selected" value="Fehler"></option>';
$sql1 = "SELECT Beschreibung FROM Tabelle1 Order by Nr";
$result1 = mysql_query($sql1);
while ($row1 = mysql_fetch_assoc($result1))
{
    foreach ($row1 as $key => $value)
    {
    echo "<option value=".$value.">".$value."</option>\n";
    }
}


das klappt soweit gut bei einer single Selektion
Die Auswehrtung :
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:

print_r($_POST['Leistung']);
$zahl = count($_POST['Leistung']);
    for($i=0; $i < $zahl; $i++)
    {
        echo 'Post-Leistung = '.$_POST['Leistung'][$i].'<br><hr />';
    }
    echo "Es sind ".$zahl." Einträge im Array<br />";


egal wie viele Einträge ich auswähle, er übernimmt immer nur den letzten Eintrag
Leistung3 $_Post['Leistung'] = L
Es sind 1 Einträge im Array.
Frage ich mein $_Post Array ab, sieht es so aus :
Array ([AuftragS1] => on [Leistung] => Leistung3)

Warum ?

Woran liegt es ? Kann jemand helfen

Danke

Teufel964





Post wurde schon 1x editiert, das letzte mal am 21.03.2013 um 10:28 von Teufel964
21.03.2013, 10:27 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2619
      Zitat | Bearbeiten

Damit die Mehrfachauswahlauswertung funktioniert, muss der Name des select mit eckigen Klammern enden. Nur so wird ein Array erstellt.


21.03.2013, 12:11 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Mehrfachauswahl auswerten   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz