/ 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
multiple select box
Fra : Martin


Dato : 10-01-05 19:33

Hej NG

Jeg har en select box med multiple input, dvs der kan vælges flere værdier

<select name="kategori" size="4" multiple>
<option value="one">first</option>
<option value="two">second</option>
<option value="three">third</option>
</select>

Hvis der nu er valgt de 2 første muligheder, vil jeg gerne putte disse valg
i et felt i en mysql base med fx et komma imellem fx.
first,second ved at submitte formen.

Hvordan fanger jeg begge valg, der er vel tale om et array men jeg kan ikke
fange mere end een værdi.

Martin



 
 
Peter Brodersen (10-01-2005)
Kommentar
Fra : Peter Brodersen


Dato : 10-01-05 19:50

On Mon, 10 Jan 2005 19:33:24 +0100, "Martin" <a@b.dk> wrote:

><select name="kategori" size="4" multiple>

Sæt name til kategori[] og ikke blot kategori. Ellers vil værdierne
overskrive hinanden , når de bliver lagt ind som almindelige
scalar-variable.

Derefter vil $_REQUEST['kategori'] være et array.

--
- Peter Brodersen

Martin (10-01-2005)
Kommentar
Fra : Martin


Dato : 10-01-05 20:59

> On Mon, 10 Jan 2005 19:33:24 +0100, "Peter Brodersen" wrote:

> Sæt name til kategori[] og ikke blot kategori. Ellers vil værdierne
> overskrive hinanden , når de bliver lagt ind som almindelige
> scalar-variable.
>
> Derefter vil $_REQUEST['kategori'] være et array.

> - Peter Brodersen



Tak, ja, men når jeg indsætter i mysql basen kommer der der 3 poster med
hver sin værdi istedet for 1 post med 3 værdier adskilt af ,
når jeg skriver echo $tekst kommer det fint sådan 1, 2, 3

Martin

Her er koden:

<?include "../../../../include/connect.php";?>
<?$skriv = $_POST["skriv"] ;?>

<form action='test.php' method='post'>
<input type="hidden" name="skriv" value="1"><select multiple
name="kategori[]" size='8' style="width:200px">
<option value='1'>valg 1</option>
<option value='2'>valg 1</option>
<option value='3'>valg 1</option>
</select>
<input type='submit' value='send'>
</form>
<?
$all = $_REQUEST['kategori'];
$stoerrelse = sizeof($all);
for ($i = 0; $i < $stoerrelse; $i++) {
$tekst = "$all[$i], ";

if($skriv){
mysql_db_query($db, "insert into rejser_backup (kategori) values
('$tekst')");
}

echo $tekst;
}
?>







Peter Brodersen (10-01-2005)
Kommentar
Fra : Peter Brodersen


Dato : 10-01-05 21:51

On Mon, 10 Jan 2005 20:59:05 +0100, "Martin" <a@b.dk> wrote:

>Tak, ja, men når jeg indsætter i mysql basen kommer der der 3 poster med
>hver sin værdi istedet for 1 post med 3 værdier adskilt af ,
>når jeg skriver echo $tekst kommer det fint sådan 1, 2, 3

Det er jo fordi du laver en løkke. For hvert element i det array
bliver din query afviklet.

Hvis du blot vil sammensætte dem, kan du bruge funktionen implode(),
og så helt undlade din løkke. For eksempel:

$tekst = implode(', ', (array) $_REQUEST['kategori']);

(bortset fra det, så kan det tyde på et uhensigtsmæssigt
databasedesign, hvis du vil gemme forskellige værdier i samme felt)

--
- Peter Brodersen

Knud Haugmark (11-01-2005)
Kommentar
Fra : Knud Haugmark


Dato : 11-01-05 09:02

Jeg har en form, hvor man vælger dag, måned og år. For at få det samlet ind
i et datofelt har jeg sat dem sammen på en meget enkel måde.
se $datetime, som bliver formatteret YYYYMMDD
Man kan også bruge punktum som separator, hvilket jegt har gjort i den anden
$


$datetime = "$year$month$date";
$title = ($timestart . "-" . $timeend);


$sql = ("INSERT INTO data (`year` , `mon` , `date` , `datetime` , `title` ,
`content` , `sender`, `timestart`, `timeend`) VALUES ('$year','$month',
'$date' ,'$datetime' , '$title' , '$content' , '$sender', '$timestart',
'$timeend' )");

Jeg er total begynder og amatør, det virker i mit tilfælde, men der findes
sikkert mere proff måder at gøre det på.

Knud


"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:crups1$og7$1@katie.ellegaard.dk...
> On Mon, 10 Jan 2005 20:59:05 +0100, "Martin" <a@b.dk> wrote:
>
>>Tak, ja, men når jeg indsætter i mysql basen kommer der der 3 poster med
>>hver sin værdi istedet for 1 post med 3 værdier adskilt af ,
>>når jeg skriver echo $tekst kommer det fint sådan 1, 2, 3
>
> Det er jo fordi du laver en løkke. For hvert element i det array
> bliver din query afviklet.
>
> Hvis du blot vil sammensætte dem, kan du bruge funktionen implode(),
> og så helt undlade din løkke. For eksempel:
>
> $tekst = implode(', ', (array) $_REQUEST['kategori']);
>
> (bortset fra det, så kan det tyde på et uhensigtsmæssigt
> databasedesign, hvis du vil gemme forskellige værdier i samme felt)
>
> --
> - Peter Brodersen



Martin (12-01-2005)
Kommentar
Fra : Martin


Dato : 12-01-05 14:40


"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:crups1$og7$1@katie.ellegaard.dk...

> Det er jo fordi du laver en løkke. For hvert element i det array
> bliver din query afviklet.
>
> Hvis du blot vil sammensætte dem, kan du bruge funktionen implode(),
> og så helt undlade din løkke. For eksempel:
>
> $tekst = implode(', ', (array) $_REQUEST['kategori']);
>
> (bortset fra det, så kan det tyde på et uhensigtsmæssigt
> databasedesign, hvis du vil gemme forskellige værdier i samme felt)
>
> --
> - Peter Brodersen


Tak for hjælpen - implode() var løsningen.
Martin



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste