/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hvordan tilgåes valgte værdier i en liste
Fra : Finn


Dato : 16-02-08 14:31

Hej
Jeg har f.eks. en form:

<form id="form1" name="form1" method="post" action="">
<label></label>
<select name="select2" size="1" multiple="multiple"
id="select2">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</form>

Som det kan ses har jeg sat en liste til multiple således at flere
værdier kan vælges.
Hvordan tilgår jeg de valgte værdier via PHP ?

VH
Finn

 
 
Michael Rasmussen (16-02-2008)
Kommentar
Fra : Michael Rasmussen


Dato : 16-02-08 23:08

On Sat, 16 Feb 2008 13:30:33 -0800 (PST)
Finn <finnsoevind@gmail.com> wrote:

> Hvordan tilgår jeg de valgte værdier via PHP ?
>
Navngiv din select på følgende måde: <select name="select2[]" ...
De to kantparanteser får php til at oprette en liste af din select2, så
få værdierne således:
foreach ($_POST[select2] as $option) {
   echo "$option\n";
}

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Bertel Lund Hansen (17-02-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-02-08 14:06

Michael Rasmussen skrev:

> foreach ($_POST[select2] as $option) {

Og husk altid anførselstegn, ellers kan man ikke være sikker på
hvad der sker:

   $_POST['select2'] as $option)

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Michael Rasmussen (17-02-2008)
Kommentar
Fra : Michael Rasmussen


Dato : 17-02-08 15:40

On Sun, 17 Feb 2008 14:06:07 +0100
Bertel Lund Hansen <unospamo@lundhansen.dk> wrote:

>
> Og husk altid anførselstegn, ellers kan man ikke være sikker på
> hvad der sker:
Det har ingen betydning, da det er defineret som en enum. enum er en
unik symbolsk strengkonstant.

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Peter Brodersen (17-02-2008)
Kommentar
Fra : Peter Brodersen


Dato : 17-02-08 22:12

On Sun, 17 Feb 2008 15:39:54 +0100, Michael Rasmussen <mir@miras.org>
wrote:

>> Og husk altid anførselstegn, ellers kan man ikke være sikker på
>> hvad der sker:
>Det har ingen betydning, da det er defineret som en enum. enum er en
>unik symbolsk strengkonstant.

For PHPs vedkommende er der blot tale om et almindeligt array. Så hvis
select2 var defineret som en konstant, ville det give problemer.

Et problem ved dit eksempel er i øvrigt også, at det forudsætter at
$_POST['select2'] overhovedet rummer noget indhold. Hvis intet er
valgt, vil den variabel ikke være sat, og foreach() vil fejle med en
warning, idet man ikke har angivet et array som argument:
"Warning: Invalid argument supplied for foreach() in .."

Hvis man i øvrigt ser bort fra eventuelle notices, kan det anbefales
at caste i foreach, hvis man ikke er sikker på typen

foreach ((array) $_POST[select2] as $option) {
   echo "$option\n";
}

--
- Peter Brodersen
Kendt fra Internet

Michael Rasmussen (17-02-2008)
Kommentar
Fra : Michael Rasmussen


Dato : 17-02-08 22:44

On Sun, 17 Feb 2008 22:11:43 +0100
Peter Brodersen <usenet2008@ter.dk> wrote:

>
> For PHPs vedkommende er der blot tale om et almindeligt array. Så hvis
> select2 var defineret som en konstant, ville det give problemer.
>
Nu refererede jeg ikke til variablen, men til PHP's implementation af
hashes. I PHP er nøglen i et hash altid en string literal, Hvorfor ''
og/eller "" kun er nødvendige såfremt, nøglen indeholder "forbudte"
tegn.

> Et problem ved dit eksempel er i øvrigt også, at det forudsætter at
> $_POST['select2'] overhovedet rummer noget indhold. Hvis intet er
> valgt, vil den variabel ikke være sat, og foreach() vil fejle med en
> warning, idet man ikke har angivet et array som argument:
> "Warning: Invalid argument supplied for foreach() in .."
>
Nu var det jo ikke et grydeklart eksempel, OP efterspurgte, men en
metode til at håndtere en HTML option liste. Fejlhåndteringen var
overladt til OP.

> Hvis man i øvrigt ser bort fra eventuelle notices, kan det anbefales
> at caste i foreach, hvis man ikke er sikker på typen
>
> foreach ((array) $_POST[select2] as $option) {
>    echo "$option\n";
> }
>
Det er da ikke en generel betragtning? Det er da ikke altid sikkert, at
man ønsker videre afvikling af en funktion/program, hvis man modtager
en scalar i stedet for et array. Samling af stumper til en URL eller et
funktionsudtryk f.eks.

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Peter Brodersen (17-02-2008)
Kommentar
Fra : Peter Brodersen


Dato : 17-02-08 23:43

On Sun, 17 Feb 2008 22:43:33 +0100, Michael Rasmussen <mir@miras.org>
wrote:

>> For PHPs vedkommende er der blot tale om et almindeligt array. Så hvis
>> select2 var defineret som en konstant, ville det give problemer.
>Nu refererede jeg ikke til variablen, men til PHP's implementation af
>hashes. I PHP er nøglen i et hash altid en string literal, Hvorfor ''
>og/eller "" kun er nødvendige såfremt, nøglen indeholder "forbudte"
>tegn.

Nej, en streng uden "..." eller '...' (eller heredoc-syntaks for den sags
skyld) vil først blive betragtet som en konstant. Den vil så fallback'e
til en ordinær streng, hvis konstanten ikke findes.

<?php
define("foo","bar");
$a = array("foo" => "baz", "bar" => "quux");
print $a["foo"]; // printer baz
print $a[foo]; // printer quux
?>

Derudover vil der blive smidt en notice, hvis man angiver en konstant (som
ikke findes) og der fallback'es til en streng:

$ php -d error_reporting=E_ALL -r '$a=array("foo"=>"baz"); print $a[foo];'

Notice: Use of undefined constant foo - assumed 'foo' in Command line code
on line 1
baz


Der er undtagelser i sagens natur, blandt andet inde i quotes. Her er der
intet galt i at skrive "Dit navn er $data[navn]", idet konstanter
naturligvis ikke interpoleres, og der derfor ikke er nogen tvivl om, at
man henviser til værdien for key'en "navn". Det er også årsagen til at
denne ikke vil give en notice.

>> Et problem ved dit eksempel er i øvrigt også, at det forudsætter at
>> $_POST['select2'] overhovedet rummer noget indhold. Hvis intet er
>> valgt, vil den variabel ikke være sat, og foreach() vil fejle med en
>> warning, idet man ikke har angivet et array som argument:
>> "Warning: Invalid argument supplied for foreach() in .."
>Nu var det jo ikke et grydeklart eksempel, OP efterspurgte, men en
>metode til at håndtere en HTML option liste. Fejlhåndteringen var
>overladt til OP.

Men om ikke andet ville jeg da lige afklare, at php ikke opretter listen
af select2, hvis der ikke er noget valgt i.

--
- Peter Brodersen
Kendt fra Internet

FSJ (18-02-2008)
Kommentar
Fra : FSJ


Dato : 18-02-08 04:08

Tak for hjælp og indlæg.
VH
Finn

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste