Avatar billede flodhesten Nybegynder
18. september 2009 - 14:55 Der er 5 kommentarer og
1 løsning

Talrække med multiple select

Hej.

Jeg har en multiple select form, der ser således ud:

<select name="categories[]" multiple="multiple">
<option value="1">Tekst 1</option>
<option value="2">Tekst 2</option>
<option value="3">Tekst 3</option>
<option value="4">Tekst 4</option>
<option value="5">Tekst 5</option>
</select>

Når jeg på min næste side skal hente info via $_POST, regner jeg med at man kan lave løkke ala foreach for at køre mit array igennem.

Men alt efter hvad man vælger, ønsker jeg en syntax der ser sådan ud:

1, 4, 5 eller
2, 3, 4, 5 eller
1, 3, 5 osv...

Der skal altså adskilles med komma, men ikke ved den sidste i rækken.
Den String, som jeg regner med at det bliver, skal så kunne gemmes i en database.

Når jeg trækker talrækken ud fra databasen igen, skal jeg have dem adskilt igen i et array, og hav mulighed for at gennemløbe dem med en løkke.

Jeg håber, at det er til at forstå, og at der er nogle der kan hjælpe.
Avatar billede cronick Nybegynder
18. september 2009 - 15:45 #1
Du har ret. Man kan løbe værdierne igennem i en foreach. I dit tilfælde vil jeg umiddelbart foreslå at lægge værdierne ind i en ny array, og så lave det om til en almindelig streng, hvor der er kommaer imellem.

Det kan gøres således:

<?php
$categories = array();
foreach($_POST['categories'] as $value){
$categories[] = $value;
}
$string = implode(", ", $categories); // denne streng er lige til at lægge ind i din database (tabel)
?>


Når du så har fået din streng ud fra databasen igen, kan du lave den om til en array på ny, og så eksempelvis løbe værdierne igennem men en foreach.

Dette kan gøres således:

<?php
$categories = explode(", ", $VALUE); // hvor $VALUE er dit udtræk fra databasen
foreach($categories as $value) {
echo "<p>" . $value . "</p>";
}
?>
Avatar billede andreas13_fam Nybegynder
18. september 2009 - 15:45 #2
Du kan nemt bruge implode() og explode() til det formål, prøv at se på http://www.phpartikler.dk/artikler/strinfunctions.php#implode
Avatar billede andreas13_fam Nybegynder
18. september 2009 - 15:48 #3
Ingen point til mig tag.
@cronick : husk at du kan bruge [ div ] taget til at lave en boks. Det er lidt mere overskueligt end kursiv.

fx:

<?php
echo '';
?>
Avatar billede dkfire Nybegynder
18. september 2009 - 15:59 #4
Der mangler lige en kommentar til indlægget.
Kommasepareret værdier i en database er aldrig godt, og bør for alt i verden undgås. Dette kan være et udtryk for at din database struktur er forkert.
Avatar billede cronick Nybegynder
18. september 2009 - 16:16 #5
I orden andreas13_fam :-)

Jeg er enig med dkfire. Det er altid bedst at have sådanne værdier gemt i en anden tabel, som så peger tilbage på din oprindelige tabel.

Hvis du dog ikke skal bruge værdierne i en anden sammenhæng (f.eks. søge på en specifik kategori i din tabel), er det ikke yderst nødvendigt.
Avatar billede flodhesten Nybegynder
18. september 2009 - 19:01 #6
Okay. Tak for hjælpen og tak for kommentarene.
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