Archief - PHP: Hoe checken welke knop ingedrukt is

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

RpR

Legacy Member
Ik heb een aantal knoppen in een formulier. Nu zou ik graag weten welke knop ingedrukt was om het formulier te verzenden is dit mogelijk?

[BAT] Hydra

Legacy Member
Een oplossing bestaat erin om in het target van u submit knop een get variabele mee te geven die informatie bevat over de submit knop.

verwerkendepagina.php?gedrukteknop=1
verwerkendepagina.php?gedrukteknop=2

killgore

Legacy Member
De simpelste oplossing echter is om ze gewoon allemaal een andere naam te geven :/. Er wordt immers maar 1 submit knop meegegeven bij mijn weten.

edit: of zelfde naam en enkel checken op het label natuurlijk, hangt beetje af van wat je doel voor ogen is.

RpR

Legacy Member
voor ogen is het volgende:

naam van categorie edit delete
naam van categorie edit delete
naam van categorie edit delete
add

ik zou moeten weten welke delete knop is ingedrukt.

Desertfish_88

Legacy Member
mja, een beetje gelijk hydra zei:

gewoon achter de deleteknoppen links steken met ?= verwijzingen.
Een voorbeeld van de code die ik zelf gebruik in een webpagina
met wiki-achtige interface. Ingelogde gebruikers kunnen nieuwsitems
toevoegen, bewerken en verwijderen.:

de variabele $lc haalt hij uit een functie logincheck. $form_vis uit een cookie waarin staat of de gebruiker bewerken aan of uit heeft gezet
PHP:
  $form_vis = $_COOKIE['form_vis'];
		include("logincheck.php");
		$lc = CheckLogin();
De volgende regel staat bij de opbouw van de newsitems
PHP:
	if($lc !== 0 && $form_vis == 1){
	echo "<br>[<a href=\"nieuws.php?bewerk=".$row['news_id']."\">bewerk</a>] [<a href=\"toevoegen.php?type=1&id=".$row['news_id']."&bewerken=2\">verwijder</a>]";

als iemand op "bewerk" klikt, wordt hij terug naar nieuws.php gestuurd,
maar nu staat vanonder een form met inhoud van het newsitem.
De knop is tevens veranderd van "toevoegen" naar " bewerken".
De form header wordt dan tevens aangepast. (type=1 is dat het een nieuwsitem is,
bewerken=1 vertelt toevoegen.php dat hij moet updaten en niet toevoegen, id
geeft door om welk newsitem het gaat.

PHP:
.. method=\"post\" action=\"toevoegen.php?type=1";
											if($bewerk !== 0){
											echo "&bewerken=1&id=".$bewerk;}
											echo "\" enctype=\"multipart/form-data\">

Voor de verwijder knop gaat hij gewoon direct naar
PHP:
toevoegen.php?bewerken=2&type=1&id=".$news+id.
hij haalt het news_id uit de database wanneer hij de lijst van nieuwsitems opbouwt.
bewerken=2 is dat hij wil deleten.

Hopelijk geraak je er wijs uit, en staat er iets tussen dat nuttig kan zijn :)

Groetjes,
Desertfish

killgore

Legacy Member
RpR zei:
voor ogen is het volgende:

naam van categorie edit delete
naam van categorie edit delete
naam van categorie edit delete
add

ik zou moeten weten welke delete knop is ingedrukt.

2 manieren.

a) Je steekt alles in 1 form en dan zorg je dat elke delete knop een andere naam heeft (bv. categorie-id). ALs je form geladen is doe je dan iets als:
PHP:
$pInv = array_flip($_POST);
if(isset($pInv["delete"]))
{
    //Delete query, id zit in $pInv["delete"]
}
Manier 2: ipv dat allemaal in 1 form te steken maak je voor elke categorie een apart form en maak je een hidden field aan dat de categorie meegeeft.
Dan ishet iets als:
PHP:
if(isset($_POST["delete"]))
{
    $id = isset($_POST["id"])?$_POST["id"]:0;
    // Delete query met bovenstaand id
}
je form ziet er dan uit als dit:
PHP:
<form method="post" action="...">
    Categorie
    <input type="hidden" name="id" value="ietsOpgehaaldViaPhp" />
    <input type="submit" name="edit" value="edit" />
    <input type="submit" name="delete" value="delete" />
</form>
Let er op dat je voor elke global die je gaat gebruiken ($_... bevatten globals) je eerst isset doet, anders heb je foute code.

Beide methoden zijn veel eleganter als wat hierboven werd gepost imho.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan