/ 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
Flere submit i en form
Fra : rymfaxe


Dato : 26-08-05 14:56

Kan man med php håndtere mere end én submit knap i samme form?

<form action='<? echo $PHP_SELF; ?>' method='get'>
   <input type='checkbox' name='1' value='valgt' />Emne1<br />
   <input type='checkbox' name='2' value='valgt' />Emne2<br />
   <input type='checkbox' name='3' value='valgt' />Emne3<br />

   <input type='submit' name='idag' value='I dag' />
   <input type='submit' name='imorgen' value='I morgen' />
</form>

Så udfaldet bliver
I dag: Emne2, Emne3
I morgen: Emne1

I givet fald, hvordan?

Forhåndstak /rymfaxe

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Bertel Lund Hansen (26-08-2005)
Kommentar
Fra : Bertel Lund Hansen


Dato : 26-08-05 15:33

rymfaxe skrev:

> Kan man med php håndtere mere end én submit knap i samme form?

Man kan godt lave mange submitknapper, men kun én af dem vil være
aktiv. Det er et spørgsmål om HTML, ikke PHP.

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

Arne Feldborg (27-08-2005)
Kommentar
Fra : Arne Feldborg


Dato : 27-08-05 07:22

Bertel Lund Hansen <nospamfilius@lundhansen.dk> skrev Fri, 26 Aug 2005
16:32:49 +0200

>> Kan man med php håndtere mere end én submit knap i samme form?
>
>Man kan godt lave mange submitknapper, men kun én af dem vil være
>aktiv.
>
Jammen, så er det da heldigt at det altid er netop den der bliver
trykket på der er aktiv.


--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Jacob Atzen (26-08-2005)
Kommentar
Fra : Jacob Atzen


Dato : 26-08-05 22:05

On 2005-08-26, rymfaxe <rymfaxe@hotmail.com> wrote:
> Kan man med php håndtere mere end én submit knap i samme form?
>
><form action='<? echo $PHP_SELF; ?>' method='get'>
>    <input type='checkbox' name='1' value='valgt' />Emne1<br />
>    <input type='checkbox' name='2' value='valgt' />Emne2<br />
>    <input type='checkbox' name='3' value='valgt' />Emne3<br />
>
>    <input type='submit' name='idag' value='I dag' />
>    <input type='submit' name='imorgen' value='I morgen' />
></form>
>
> Så udfaldet bliver
> I dag: Emne2, Emne3
> I morgen: Emne1
>
> I givet fald, hvordan?

Prøv med en:

var_dump($_REQUEST);

Så burde svaret komme dumpende ud i hånden på dig. Eftersom du bruger
get metoden, burde du faktisk kunne se det direkte i URL'en efter du har
submittet.

--
Med venlig hilsen
- Jacob Atzen

Arne Feldborg (27-08-2005)
Kommentar
Fra : Arne Feldborg


Dato : 27-08-05 07:21

rymfaxe <rymfaxe@hotmail.com> skrev 26 Aug 2005 13:56:12 GMT

>Kan man med php håndtere mere end én submit knap i samme form?
>
Ja det kan du sagtens. Men hvad er det du vil opnå.?

Den form du har opstillet vil faktisk virke, idet du i det ene tilfælde
får overført: 1,2,3, idag
og i det andet: 1,2,3, imorgen

Det er så op til dig selv at håndtere det på den modtagende side.
Brug print_r() eller var_dump() som Jacob foreslår, for at se hvad der
bliver overført.


--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

rymfaxe (28-08-2005)
Kommentar
Fra : rymfaxe


Dato : 28-08-05 16:03

> >Kan man med php håndtere mere end én submit knap i samme form?
> >
> Ja det kan du sagtens. Men hvad er det du vil opnå.?
Har forsøgt med denne kode:
<?php
if (isset($_GET['idag'])) {
// emner valgt for i I dag
} else if (isset($_GET['imorgen'])) {
// emner valgt for i morgen;
}
?>
<form method="get" action="<?=$_SERVER['PHP_SELF'];?>">
<input type='checkbox' name='1' value='valgt' />Emne1<br />
<input type='checkbox' name='2' value='valgt' />Emne2<br />
<input type='checkbox' name='3' value='valgt' />Emne3<br />
<input type="submit" name="idag" value="I dag" />
<input type="submit" name="imorgen" value="I morgen" />
</form>

Men desværre medfører eksemplet enten 'gem' eller 'kladde'.

Meningen er, at brugeren skal vælge flere emner ad gangen og så kunne
submit'e i to trin fra samme form, der jo genindlæses efter hver submit.
Første gang - I dag: Emne2, Emne3
Anden gang - I morgen: Emne1
Herefter skal brugeren via en anden form på samme side submit'e med de nu
indhøstede form-data.

Men hvordan pokker får jeg serveren til at huske de første form-data, når
brugeren har trykket submit anden gang?
Skal jeg ud i noget med global scope eller output buffering. Eller måske
noget cookie eller session.
Hvad vej tror I jeg skal gå?

Vh /rymfaxe

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Arne Feldborg (29-08-2005)
Kommentar
Fra : Arne Feldborg


Dato : 29-08-05 00:41

rymfaxe <rymfaxe@hotmail.com> skrev 28 Aug 2005 15:03:10 GMT


>Herefter skal brugeren via en anden form på samme side submit'e med de nu
>indhøstede form-data.
>
Jeg kan ikke helt følge din tankegang, og jeg forstår ikke helt hvorfor
du ikke bare lader brugeren vælge færdig i eet hug - men nok om det, det
er jo din afgørelse.


>Men hvordan pokker får jeg serveren til at huske de første form-data, når
>brugeren har trykket submit anden gang?
>
Umidelbart har du en 2-3 muligheder.

1.
Du kan lade formen submitte til sin egen side og opdatere formen med de
allerede afgivne valg (og evt. tilføje nye).

Det er lidt snørklet og kræver at du hele tiden selv holder styr på alle
variabler og at disse også indgår i udskrivningen af formen anden gang.

2.
Hvis du efter første svar overfører resultatet til en ny side, hvor du
så gentager formen (eller en lignende form), så skal du bare have
variablerne med over - Og som jeg læser dit spørgsmål er det lige netop
det du ønsker.?

Det gør du enten ved at smide dem i halen på ULR'en eller ved at sende
dem med som "Hidden" argumenter.

Altså noget a' la:

<form action="min_test_side.php?var_1=blommer&var_2=bananer"
method="get">

Eller, umiddelbart før Submit og </form> linierne:

<input type="hidden" name="var_1" value="blommer">
<input type="hidden" name="var_2" value="bananer">

Og igen er det "print_r($_REQUEST)" på den modtagende side der er din
ven.!

3.
Du kan gemme variablerne i en fil og så læse dem derfra igen, feks.
bruge den dertil indrettede session funktion. Men det vil jeg absolut
mene er overkill - medmindre du da har brug for at lade datasættet følge
den pågældende bruger rundt på alle de sider han gæster.


>Skal jeg ud i noget med global scope eller output buffering. Eller måske
>noget cookie eller session.
>
Dybest set handler det jo bare om at få nogle variable overført, og
dertil mener jeg at de under pkt. 2 skitserede metoder må være fuldt
tilstrækkelige.

Og igen igen - og det kan ikke gentages tit nok - er det
"print_r($_REQUEST)" på den modtagende side der er din ven.!


--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Geert Lund (29-08-2005)
Kommentar
Fra : Geert Lund


Dato : 29-08-05 03:52

Arne Feldborg wrote:

> 3.
> Du kan gemme variablerne i en fil og så læse dem derfra igen, feks.
> bruge den dertil indrettede session funktion. Men det vil jeg absolut
> mene er overkill - medmindre du da har brug for at lade datasættet følge
> den pågældende bruger rundt på alle de sider han gæster.

Behøver nu ikke være overkill - kan fx tjene det formål at brugeren ikke
selv kan rette i indtastede data uden "dit vidende" - hvilket fx kan
lade sig gøre ved at bruge <input type="hidden"> metoden. Altså kan du
fx herved validere input allerede ved denne submit og stole på dit input
når brugeren engang er færdig - du slipper så ledes for at skulle sende
brugeren tilbage til fx Punkt 1 i en række forms for at indtaste første
input igen.

Plus at man sikrer sig mod data der forsvinder af den ene eller anden
årsag ved navigation frem og tilbage på sitet (fx browseren frem og
tilbage knapper).

Det kan også være rart - selvom det måske er simpelt - at man "husker"
allerede indtastede data hvis brugeren skulle klikke væk fra ens
aktuelle FORMS side (fx i en indkøbskurv etc.).

Jeg kunne nok finde et par grunde mere til hvorfor sessions selv i
mindre tilfælde ikke behøver være overkill :)

--
Med venlig hilsen
Geert Lund

Arne Feldborg (29-08-2005)
Kommentar
Fra : Arne Feldborg


Dato : 29-08-05 23:39

Geert Lund <glund-news@post.tele.dk> skrev Mon, 29 Aug 2005 04:52:15
+0200

>> mene er overkill - medmindre du da har brug for at lade datasættet følge
>> den pågældende bruger rundt på alle de sider han gæster.
>
>Behøver nu ikke være overkill - kan fx tjene det formål at brugeren ikke
>selv kan rette i indtastede data uden "dit vidende" - hvilket fx kan
>
Hvis man er inde i sikkerhedmæssige overvejelser, eller i situationer
hvor brugeren ved at manipulere med parametrene kan skaffe sig adgang
til oplysninger han ikke er berettiget til, så har du naturligvis ret.

Men det afhænger jo i høj grad af hvilke typer af service man tilbyder,
og hvor vigtigt det måtte være at holde kortene ind til kroppen.


Personligt bruger jeg selv så vidt muligt åbne URL'er med alle parametre
direkte synlige. Det giver mine brugere mulighed for at 'Bookmarke'
feks. et søgeresultat og vende tilbage til det uden at skulle igennem de
indledende runder igen.

Det giver også mulighed for at en bruger kan sende et søgeresultat i
form af et link til andre - som så direkte kan tilgå søgeresultatet.

Min hensigt var alene at få den oprindelige spørger bragt på vej hen
imod selv at finde en løsning på den helt grundlæggende problemstilling
med overførsel af parametre.

Bla. også fordi en anden (og her i gruppen velkendt person) svarede kort
og kontant: "det kan ikke lade sig gøre".!


--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Geert Lund (30-08-2005)
Kommentar
Fra : Geert Lund


Dato : 30-08-05 04:54

Arne Feldborg wrote:

> Men det afhænger jo i høj grad af hvilke typer af service man tilbyder,
> og hvor vigtigt det måtte være at holde kortene ind til kroppen.

Klart! Det er selvfølgelig vigtigt at man afstemmer det med det behov
man har - men selvfølgelig også det behov kunden/brugeren har!

> Bla. også fordi en anden (og her i gruppen velkendt person) svarede kort
> og kontant: "det kan ikke lade sig gøre".!



Men bemærk jeg siger jo heller ikke du ikke har ret - lagde det bare
lidt mere op til at det kan med vores nuværende oplysninger og Rymfaxes
behov være svært at bedømme hvornår det er overkill :)

Men det er da klart hvis man ikke engang er nået til at vide hvordan
HTML/XMLs FORM felter fungerer - så er det måske nok overkill at lege
med sessions (omend det faktisk kan gøre visse ting meget meget lettere).

--
Med venlig hilsen
Geert Lund

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

Månedens bedste
Årets bedste
Sidste års bedste