Avatar billede straszek Praktikant
02. juli 2007 - 21:40 Der er 14 kommentarer og
1 løsning

hjælp til select box.

Hej,

Jeg har en  multiple selectbox, hvor brugeren kan vælge mellem flere forskellige muligeheder.

kunne se sådan ud:
<select name="box[]"  multiple size="5">


    echo"<option value="1">ost</option>
    echo"<option value="2">kage</option>
    echo"<option value="3">slik</option>
   
    </select>



På siden der behandler brugerens valg, har jeg brug at vide hvad brugeren har valgt, så jeg kan lave nogle:

if($valg=='1'){
$tekst"du er en ost";
}


Hvordan skal det gøres?


m.v.h.

Søren
Avatar billede kennedk Nybegynder
02. juli 2007 - 22:05 #1
<select name="box"  multiple size="5">
    echo"<option value="1">ost</option>
    echo"<option value="2">kage</option>
    echo"<option value="3">slik</option>
 
    </select>

if($_POST["box"] == 1 ){
echo "ost";
}

sådan kan det gøres.
Avatar billede dkfire Nybegynder
02. juli 2007 - 23:50 #2
Ikke helt kennedk, da der er mulighed for at vælge flere ting, vil din løsning kun give en af de valgte ting.

Prøv i stedet:
<select name="box[]"  multiple size="5">
    echo"<option value="1">ost</option>
    echo"<option value="2">kage</option>
    echo"<option value="3">slik</option>
</select>

foreach( $_POST['box'] as $value )
{
  echo "Der er valgt: ";
  switch($value)
  {
    case 1:
        echo "Ost";
        break;
    case 2:
        echo "kager";
        break;
  }
  echo "<br />\r\n";
}
Avatar billede cronick Nybegynder
03. juli 2007 - 00:21 #3
Hvis jeg har forstået det rigtigt, laver de ligeså samme fejl dkfire. Han fremkalder kun 1, du 2, men der er 3 ( som sagt, hvis jeg har forstået det du mener :-) )..
Avatar billede windcape Praktikant
03. juli 2007 - 06:25 #4
Husk at lave et isset($_POST['box']) check , da koden ellers ville producere en E_NOTICE, og ikke være kompatibelt med PEAR og E_STRICT servere.
Avatar billede straszek Praktikant
03. juli 2007 - 07:23 #5
Kan det ikke gøres på en mere let tilgængelig måde, så jeg f.x. ville kunne lave:

if($valg=='1'){
$tekst="du er en ost";
}

og ja, der er 3 muligheder med der kunne være mange flere selecte'n bliver lavet ud fra et database udtræk
Avatar billede jakobdo Ekspert
03. juli 2007 - 08:19 #6
Hvad med noget i denne stil:

$box = array(1 => 'ost', 2 => 'kage', 3 => 'slik');

if(isset($_POST['box']))
{
    foreach($_POST['box'] AS $key)
    {
        echo $box[$key];
    }
}

echo '<select name="box[]"  multiple size="5">';
foreach($box AS $key => $value)
{
    echo '<option value="'.$key.'">'.$value.'</option>';
}
echo '</select>';
Avatar billede dkfire Nybegynder
03. juli 2007 - 11:16 #7
cronick -> Grunden til der kun er to er fordi jeg ikke gad skrive mere, det var jo kun et eksempel. Kennedk's forsøg tager jo ikke højde for at $_POST['box'] er et array, hvilket mit forslag gør. $_POST['box'] skal jo netop være et array, nå man har mulighed for at vælge flere ting i selectboxen. 
Switch sætningen kan jo bare udvides alt efter hvor mange forskellige muligheder der er.
Avatar billede cronick Nybegynder
03. juli 2007 - 17:51 #8
Nå ja okey.. Så forstod jeg det ikke rigtigt.. :)
Avatar billede straszek Praktikant
02. januar 2008 - 19:26 #9
lukker
Avatar billede dkfire Nybegynder
03. januar 2008 - 18:07 #10
Nu vil jeg ikke lyde som en sur gammel mand, men det du lige har lavet der er ikke særligt pænt.
Det er bestemt ikke god opførelse sig at tage point og dermed lukke et spørgsmål når der er folk som har givet kvalificerede svar på dit problem.
Hvis du ikke mener at have fået svar på din problem burde du give en begrundelse herom.
Avatar billede straszek Praktikant
03. januar 2008 - 18:29 #11
nu var der sådan set ingen af ovenstående forslag der gave en løsning på problemstillingen, så jeg valgt at droppe ovenstående og bruge en anden opbygning.

Der var ikke nogen af ovenstående forslag der tog højde for at antallet af select var varierende.

Men jeg hvis nogen synes de fortjener point, så sig til så finder vi ud af det
Avatar billede dkfire Nybegynder
03. januar 2008 - 18:38 #12
Nu var det jo lige præcis det, at mindst 2 forslag tog højde for for at antallet af select var varierende.

Men okay, når man heller ikke melder tilbage og deltager i sine spørgsmål, så er det jo også svært at få den rette hjælp.
Avatar billede straszek Praktikant
03. januar 2008 - 18:47 #13
nu er det ikke noget vi skal bruge meget tid på at diskutere, men jakobdo forslag ville jeg selv skulle ud fylde "$box = array(1 => 'ost', 2 => 'kage', 3 =" - ikke særligt dynamisk og i dit forslag skulle jeg manuelt lave case'en - heller ikke særligt dynamisk.

Så jeg mener ikke helt du har ret...
Avatar billede jakobdo Ekspert
03. januar 2008 - 19:01 #14
array() kan man jo bygge dynamisk! :o)
Avatar billede dkfire Nybegynder
03. januar 2008 - 19:32 #15
Nææ det er sikkert rigtig nok, men forslagene tog jo stadig højde for dit krav om at kunne håndtere et varierende antal select.
Men hvis du nu havde svaret sådan kunne vi jo sikkert også have fået en ide om hvor dine data til dine select kom fra, og hvad der evt. gjorde at de var varierende i antal.
Det er meget sjældent at en brugers første forslag virker og kan bruges. Oftest er det noget med at arbejde lidt med ideen. Men igen, det kræver lidt aktivitet fra den der har problemet, og så bare lidt mere præcis information.
Men lad os bare slutte her.
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