/ 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 knapper i en html form:
Fra : dsh


Dato : 13-07-03 20:41

Hej alle

Jeg er i gang med en side, som jeg kommer til at have flere forskellige
knapper på. Mit simple spørgsmål lyder så således: Hvordan finder jeg
ud af hvilken knap der er blevet trykket på?

Siden kalder sig selv og knappernes 'name' er forskellige. Jeg tænkte
det kunne gøres med en IF @_REQUEST(["navn"]), da jeg husker at have
brugt noget tilsvarende førhen i ASP, men det lykkes ikke.
Nogen der kan hjælpe?

På forhånd tak

Daniel


 
 
Anders Thorsen Holm (13-07-2003)
Kommentar
Fra : Anders Thorsen Holm


Dato : 13-07-03 20:59

dsh wrote:

> Jeg er i gang med en side, som jeg kommer til at have flere
> forskellige
> knapper på. Mit simple spørgsmål lyder så således: Hvordan
> finder jeg
> ud af hvilken knap der er blevet trykket på?

Hvis du på din side har to submit-knapper med forskellige navne:

   <input type="submit" value="Klik her" name="knap1">
   <input type="submit" value="Eller her" name="knap2">

kan du via finde ud af det vha $_POST:

   if (isset($_POST['knap1'])) {
       echo "Du trykkede på knap1";
   }

   if (isset($_POST['knap2'])) {
       echo "Du trykkede på knap2";
   }

Du kan også have to submit-knapper med samme navn, men forskellige
values:

   <input type="submit" value="Nummer 1" name="submitknap">
   <input type="submit" value="Nummer 2" name="submitknap">

Igen bruger kigger du i $_POST-array'et:

   if ($_POST['submitknap'] == "Nummer 1") {
       echo "Du trykkede på Nummer 1";
   }
   else {
       echo "Du trykkede på Nummer 2";
   }

I stedet for en if-then-else kan du bruge en switch-statement og
checke på forskellige cases (praktistk, hvis der er mange
knapper/form-elementer med samme navn):

echo "Du trykkede på ";
switch($_POST['submitknap']) {
   case "Nummer 1" : echo "Nummer 1"; break;
   case "Nummer 2" : echo "Nummer 2"; break;

   ...

   case "Nummer n" : echo "Nummer n"; break;
}

--
Anders Thorsen Holm | http://www.daimi.au.dk/~zoolook/

Overvejer du at købe en DVD-afspiller? Så hold dig fra Fredgaard!
Læs hvorfor: http://www.daimi.au.dk/~zoolook/?page=fredgaard

dsh (13-07-2003)
Kommentar
Fra : dsh


Dato : 13-07-03 21:24

Anders Thorsen Holm wrote:

> Hvis du på din side har to submit-knapper med forskellige navne:

[snip]

Herligt; Lige hvad jeg havde brug for og på ingen tid.
Tak for din hjælp =)

Daniel


Hi There (14-07-2003)
Kommentar
Fra : Hi There


Dato : 14-07-03 09:26

OT:

Lol - glimrende reklame for Fredgaard/Fona

Jeg har haft lignende problemer med Elekronik Centret & Fredgaard. En video
der hverken kunne spille lyd eller billede, skulle bare renses og da
"rensning" ikke er med i garantien, ville de også have mig til at betale.
( Jeg havde afspillet 2 film i videoen på det tidspunkt, hvorefter den døde)

Jss





"Anders Thorsen Holm" <zoolook@daimi.au.dkx> skrev i en meddelelse
news:Xns93B7DF961929Czoolook@130.225.247.90...
> dsh wrote:
>
> > Jeg er i gang med en side, som jeg kommer til at have flere
> > forskellige
> > knapper på. Mit simple spørgsmål lyder så således: Hvordan
> > finder jeg
> > ud af hvilken knap der er blevet trykket på?
>
> Hvis du på din side har to submit-knapper med forskellige navne:
>
> <input type="submit" value="Klik her" name="knap1">
> <input type="submit" value="Eller her" name="knap2">
>
> kan du via finde ud af det vha $_POST:
>
> if (isset($_POST['knap1'])) {
> echo "Du trykkede på knap1";
> }
>
> if (isset($_POST['knap2'])) {
> echo "Du trykkede på knap2";
> }
>
> Du kan også have to submit-knapper med samme navn, men forskellige
> values:
>
> <input type="submit" value="Nummer 1" name="submitknap">
> <input type="submit" value="Nummer 2" name="submitknap">
>
> Igen bruger kigger du i $_POST-array'et:
>
> if ($_POST['submitknap'] == "Nummer 1") {
> echo "Du trykkede på Nummer 1";
> }
> else {
> echo "Du trykkede på Nummer 2";
> }
>
> I stedet for en if-then-else kan du bruge en switch-statement og
> checke på forskellige cases (praktistk, hvis der er mange
> knapper/form-elementer med samme navn):
>
> echo "Du trykkede på ";
> switch($_POST['submitknap']) {
> case "Nummer 1" : echo "Nummer 1"; break;
> case "Nummer 2" : echo "Nummer 2"; break;
>
> ...
>
> case "Nummer n" : echo "Nummer n"; break;
> }
>
> --
> Anders Thorsen Holm | http://www.daimi.au.dk/~zoolook/
>
> Overvejer du at købe en DVD-afspiller? Så hold dig fra Fredgaard!
> Læs hvorfor: http://www.daimi.au.dk/~zoolook/?page=fredgaard



Mathias Vestergaard (14-07-2003)
Kommentar
Fra : Mathias Vestergaard


Dato : 14-07-03 16:34

"dsh" <spam.me.here@null.org> skrev i en meddelelse
news:3f11b5d5$0$13244$edfadb0f@dread15.news.tele.dk...
> Hej alle
>
> Jeg er i gang med en side, som jeg kommer til at have flere forskellige
> knapper på. Mit simple spørgsmål lyder så således: Hvordan finder jeg
> ud af hvilken knap der er blevet trykket på?
>
> Siden kalder sig selv og knappernes 'name' er forskellige. Jeg tænkte
> det kunne gøres med en IF @_REQUEST(["navn"]), da jeg husker at have
> brugt noget tilsvarende førhen i ASP, men det lykkes ikke.
> Nogen der kan hjælpe?
>
> På forhånd tak
>
> Daniel
>

Kald hver knap noget lign dette:
<input type=text name="buttons[0]">
<input type=text name="buttons[1]">
osv.

Så kan du nemt checke det dynamisk og ikke lave en if sætning for hver knap
Jeg ville så råde dig til at sende det videre til en function som du så kan
bruge til at variere den handling der udføres.

for($i = 0; $i < count($_POST["buttons"]); $i++) {
doAction($i);
}

function doAction($button) {
switch($button) {
case 0: .... break;
case 1: .... break;
}

Du kan så osse istedet for at bruge tal lave en foreach og kalde dem noget
mere forståeligt istedet.

Leg med tanken ;)

MVH
Mathias



dsh (14-07-2003)
Kommentar
Fra : dsh


Dato : 14-07-03 18:13

Mathias Vestergaard wrote:

> for($i = 0; $i < count($_POST["buttons"]); $i++) {
> doAction($i);
> }
>
> function doAction($button) {
> switch($button) {
> case 0: .... break;
> case 1: .... break;
> }
>
> Du kan så osse istedet for at bruge tal lave en foreach og kalde dem noget
> mere forståeligt istedet.

Hmmm, ja, det var jo også en god idé - så vil jeg kunne have alle
functions i en separat fil, evt.
Tak.

Daniel


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste