---
title: "Anropa funktion från formulär?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/141747-anropa-funktion-från-formulär"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Compusa"
published: "2006-01-30T22:05:31.000Z"
updated: "2006-01-31T09:55:45.000Z"
replies: 8
views: 509
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/141747-anropa-funktion-från-formulär"
---

# Anropa funktion från formulär?

## #1 — Compusa, 2006-01-30T22:05Z

Har en php fil och en tillhörande template fil. Php-filen är tänkt att fungera som en controler.

En submit-knapp i ett formulär i min template fil skulle kunna se ut så här: 

```php
<p><input type="submit" id="f_reg" [B]onclick="reg"[/B] tabindex="6" value="Registrera mig" /></p>
```

Går det på något smart sätt anropa en funktion med samma namn som värdet onclick i php filen? Php-filen (controlern) är en class med olika events funktioner.  I detta fall ska submit knappen anropa en funktion som heter reg. Eftersöker en funktionalitet liknande den som finns i asp.net

Permalänk: https://www.webforum.nu/p/141747

## #2 — emission, 2006-01-30T22:28Z

onclick-attributet kan du inte pilla på, eftersom det kräver att en motsvarande javascript-funktion finns deklarerad. ASP.NET löser detta genom att anropa en generell funktion för alla knappar o.dyl., som skickar med namnet på knappen som klickades och eventuella argument (genom 2 hidden-fält).

```php
<form ......>
<script ......>
function doPostback(eventForm,eventTarget,eventArgs)
{
   eventForm.eventtarget.value=eventTarget;
   eventForm.eventargs.value=eventArgs;
}
</script>   
<input type="hidden" name="eventtarget" value="">
<input type="hidden" name="eventargs" value="">
<p><input type="submit" id="f_reg" onclick="doPostback(this.form,this.id,this.value);" tabindex="6" value="Registrera mig" /></p>
```

Om du verkligen vill ha ASP.NET-liknande funktionalitet så bör du ta en titt på [Prado](http://www.xisc.com/)

Permalänk: https://www.webforum.nu/p/1756197

## #3 — Compusa, 2006-01-30T22:35Z

Tack :)
Hur fungerar detta om användaren har avaktiverat JavaScript?
Jo jag känner till Prado, jag postade en tråd om det för ett bra tag sedan. Tänkte dock bygga något eget.

Permalänk: https://www.webforum.nu/p/1756201

## #4 — emission, 2006-01-30T22:40Z

> **Compusa skrev:**
>
> Hur fungerar detta om användaren har avaktiverat JavaScript?

Inte alls (precis som i ASP.NET eller Prado), men det går ju ändå inte att få något intressant att hända med en input-button utan att ta hjälp av Javascript. Vill du komma någon vart utan javascript så får du leka med submit-knappar i stället, eftersom de skickar med sitt värde och namn om man klickar på dem.

Permalänk: https://www.webforum.nu/p/1756203

## #5 — Compusa, 2006-01-30T22:45Z

Okej det är nog jag som snurrat till det, tack för hjälpen :)
Man kanske kan bestäma vilken funktion/event som ska triggas med hjälp av en submit-buttons namn...Skulle vilja ha en dynamisk lösning dvs om användaren trycker på knappen "subUser" trigga då ett event som anropar funktionen subUser().

Permalänk: https://www.webforum.nu/p/1756205

## #6 — aasah, 2006-01-30T23:05Z

> **Compusa skrev:**
>
> Okej det är nog jag som snurrat till det, tack för hjälpen :)
> Man kanske kan bestäma vilken funktion/event som ska triggas med hjälp av en submit-buttons namn...Skulle vilja ha en dynamisk lösning dvs om användaren trycker på knappen "subUser" trigga då ett event som anropar funktionen subUser().

PHP är ju serverside. Men du kan ju ha en form med flera olika submittknappar:

```
<input type="submit" name="knapp1" value="1">
<input type="submit" name="knapp2" value="2">
<input type="submit" name="knapp3" value="3">
```

Om formen postas med POST kan du i actionsidan ha kod enligt:

```php
if (isSet($_POST['knapp1'])) do_function_1();
elseif (isSet($_POST['knapp2'])) do_function_2();
elseif (isSet($_POST['knapp3'])) do_function_3();
else //om ingen knapp tryckts på...
```

Om get, använts så finns värdena i $\_GET istället. Men dessa funktioner måste då vara PHP-funktioner. I gengäld funkar det utmärkt vare sig användarna har JS-stöd eller ej, eftersom allt sköts av servern.

Permalänk: https://www.webforum.nu/p/1756218

## #7 — Compusa, 2006-01-31T09:25Z

Jo jag vet mycket väl att PHP är serverside. 

> **aasah skrev:**
>
> ```php
> if (isSet($_POST['knapp1'])) do_function_1();
> elseif (isSet($_POST['knapp2'])) do_function_2();
> elseif (isSet($_POST['knapp3'])) do_function_3();
> else //om ingen knapp tryckts på...
> ```

Det är just detta tillvägagångssättet jag vill undvika. Jag vill ha en generell funktion som mappar en knapp till en funktion. Är detta möjligt.

"Pseudo" kod

```php
functionMapper(buttonName) {
buttonName(); // anropa funktionen som har samma namn som knappen
```

Permalänk: https://www.webforum.nu/p/1756276

## #8 — esrange, 2006-01-31T09:35Z

Vet att det går i Perl men har inte behövt använda det i PHP, men det kan funka:

functionMapper($buttonName)  {
    ${buttonName}();
}

Något liknande den ovanstående koden kanske funkar, har (som jag tidigare nämnt) bara använt det i Perl dock, aldrig behövt använda det i PHP. Tanken är att anropa en funktion som har namnet som ligger i variabeln, hela alltet använder sig av "variabelinterpolation" (eller vad det nu heter på svenska).

Permalänk: https://www.webforum.nu/p/1756284

## #9 — Compusa, 2006-01-31T09:55Z

Tack esrange, precis vad jag söker. Har inte testat det ännu men nu vet jag ungefär hur det kan se ut :)

Permalänk: https://www.webforum.nu/p/1756299

---

Tråden på webben: https://www.webforum.nu/amne/php/141747-anropa-funktion-från-formulär
