Avatar billede dennism Nybegynder
15. juli 2005 - 14:24 Der er 17 kommentarer og
1 løsning

PHP: værdi fra SELECT-multiple

Jeg har f.eks. denne:
<SELECT NAME="users" multiple>

Den indeholder to options med to brugernavne.
Jeg markerer begge brugernavne i denne SELECT, submit'er formen og forsøger at hente brugernavnene med $_POST[users].
Men printer jeg denne variabel til skærmen, skriver den kun den sidste option, som jeg valgte.

Hvad gør man, for at hente samtlige valg?
Avatar billede medions Nybegynder
15. juli 2005 - 14:25 #1
echo $_GET['users'];

eller

echo $_POST['users'];

//>Rune
Avatar billede fixxxer Nybegynder
15. juli 2005 - 14:26 #2
Skulle man ikke mene at et SELECT med flere valgmuligheder, returneres som et array?

For at se alle elementerne i et array, kunne du fx bruge

print_r($_POST['users']);
Avatar billede tangveje Nybegynder
15. juli 2005 - 14:27 #3
Jeg er ret sikker på din linie skal se sådan her ud, men min hukommelse kunne være rusten

<SELECT NAME="users[]" multiple>
Avatar billede Slettet bruger
15. juli 2005 - 14:29 #4
Du skal give selecten et navn som slutter med [] fx. <select name="users[]" multiple>
Avatar billede Slettet bruger
15. juli 2005 - 14:30 #5
to slow.. Tangveje har helt ret :)
Avatar billede dennism Nybegynder
15. juli 2005 - 14:30 #6
tangveje >>

Det hjalp ;)

Så kan jeg hente det første navn med f.eks. $_POST[users][0]

Hvordan kan jeg finde ud af, hvor mange rækker der er i min array $_POST[users]? Det er der vel en funktion til?
Avatar billede fixxxer Nybegynder
15. juli 2005 - 14:31 #7
og så er det som at læse fra et almindeligt array:

for ($i=0;$i<sizeof($_POST['users']);$i++)
{
  echo $_POST['users'][$i]."\n";
}
Avatar billede tangveje Nybegynder
15. juli 2005 - 14:34 #8
brug count( $_POST[users] ) til at finde antallet
Avatar billede Slettet bruger
15. juli 2005 - 14:36 #9
fixxxer -> Har du hørt om foreach? ;-)
Avatar billede fixxxer Nybegynder
15. juli 2005 - 14:38 #10
Ja, det har jeg
Avatar billede Slettet bruger
15. juli 2005 - 14:40 #11
fixxxer -> Øh.. Ok.. hehe :)
Avatar billede dennism Nybegynder
15. juli 2005 - 14:50 #12
gartzen >>

Lad mig høre om foreach, og hvordan den kan gøre det samme som fixxer skrev?

tangveje >>

Smider du lige et svar?
Avatar billede fixxxer Nybegynder
15. juli 2005 - 14:52 #13
foreach ($_POST['users'] as $key => $value)
{
  echo $key."->".$value;
}

you get the picture? :)
Avatar billede fixxxer Nybegynder
15. juli 2005 - 14:52 #14
man kunne naturligvis også vælge den lille metode..

foreach ($_POST['users'] as $value)
{
  echo $value;
}
Avatar billede fixxxer Nybegynder
15. juli 2005 - 14:54 #15
Personligt synes jeg at der er mere charme over for-løkken.. !-)
Avatar billede tangveje Nybegynder
15. juli 2005 - 14:55 #16
Selvfølgelig :)
Avatar billede dennism Nybegynder
15. juli 2005 - 15:02 #17
mange tak for hjælpen!
Avatar billede bromer Nybegynder
15. juli 2005 - 23:57 #18
fixxxer: Det er jeg helt enig i. Koden

<?
$l = count($array);
for ($i = 0;$i < $l;$i++)
  // do stuff
?>

er også hurtigere end

<?
foreach($array as $var) {
  // do stuff
?>

Jeg kunne dog forestille mig at du smed den hastighedsforbedring væk idet du i din kode beregner længden af arrayet ved hvert gennemløb.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester