|
| 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
| |
|
|