[PHP] [HTML] Post meerdere variablen meegeven

Pagina: 1
Acties:
  • 321 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Besten,

via
code:
1
<form action="" method="post"> </form>

kan men variablen meegeven die in de form zijn gedefinieerd, zoals een input of option, en die uiteindelijk doorgestuurd worden als men op de submit knop drukt.

Nu wil ik een form met meerdere knoppen in versturen, maar aan elke submit-knop een id hangen zodat ik weet op welke knop er gedrukt is. Dus geen inputs ed meegeven.

Kan dit?
Indien ja, hoe vraag ik deze dan op in php?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Een naam en een value aan een submit button geven en deze dan in php als volgt afvangen:

HTML:
1
2
<input type="submit" name="submit" value="optie1"> 
<input type="submit" name="submit" value="optie2">


PHP:
1
2
3
4
5
6
7
8
9
if($_POST['submit']=="optie1")
{
 // code
}

if($_POST['submit']=="optie2")
{
 // code
}

Acties:
  • 0 Henk 'm!

Verwijderd

Geef de submitknop een name en een value attribuut. Deze worden meegestuurd met het formulier als op die button wordt geklikt.

Let wel op dat je er niet vanuit gaat dat er altijd op een knop geklikt wordt. Als een formulier met een druk op de Enter toets wordt verstuurd, geldt dat niet als een klik op een button en wordt er dus geen value van een submitknop meegestuurd.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Y0ur1 schreef op 14 oktober 2004 @ 12:48:
Een naam en een value aan een submit button geven en deze dan in php als volgt afvangen:

HTML:
1
2
<input type="submit" name="submit" value="optie1"> 
<input type="submit" name="submit" value="optie2">


PHP:
1
2
3
4
5
6
7
8
9
if($_POST['submit']=="optie1")
{
 // code
}

if($_POST['submit']=="optie2")
{
 // code
}
Ok, maar wat als de buttons allemaal dezelfde naam hebben? :)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 14 oktober 2004 @ 12:50:

Ok, maar wat als de buttons allemaal dezelfde naam hebben? :)
Probeer het uit. Je bent toch tweaker, of niet?

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Verwijderd schreef op 14 oktober 2004 @ 12:50:
[...]


Ok, maar wat als de buttons allemaal dezelfde naam hebben? :)
Dan ga je prutzen en zoeken op GoT: http://gathering.tweakers...a%5BxFILTERS%5D=#hitstart

en dan zie je dat er nog meer mogelijkheden zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Gaat gewoonweg niet.
De value geeft de caption aan van de buttons, en deze is op elke button gelijk.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Verwijderd schreef op 14 oktober 2004 @ 12:52:
Gaat gewoonweg niet.
De value geeft de caption aan van de buttons, en deze is op elke button gelijk.
Hint: je kunt het ook nog met javascript oplossen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ga het op de volgende manier doen

code:
1
<input name="submit_info" type="submit" onClick="MM_goToURL('parent','http://localhost:test.php?id=<? echo $id; ?>');return document.MM_returnValue" value="Wijzig">


Dus ik geef aan elke knop een andere id mee :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Y0ur1 schreef op 14 oktober 2004 @ 13:01:
[...]


Hint: je kunt het ook nog met javascript oplossen.
Idd, kwas je net voor :)

Het enige probleem is dat je dan de id in de url ziet :/

[ Voor 14% gewijzigd door Verwijderd op 14-10-2004 13:06 ]


Acties:
  • 0 Henk 'm!

  • InputOutput
  • Registratie: September 2004
  • Laatst online: 18-09 10:52
Of je geeft elke submit een eigen form met dezelfde action. Naast de submit button gebruik je dan een hidden field met de waarde waar je naar zoekt.

Zoiets:

code:
1
2
3
4
5
6
7
8
<form action=bla.php method=post>
  <input type=hidden name=bla value=1>
  <input type=submit value=naam1>
</form>
<form action=bla.php method=post>
  <input type=hidden name=bla value=2>
  <input type=submit value=naam2>
</form>

En dan ken je het dus zo afvangen:
code:
1
2
3
4
<?php
if( $_POST['bla'] == 1 ) {
} else if ( $_POST['bla' == 2 ) {
}


etc. Hoef je geen javascript te gebruiken, zit je niet met gezeik van browser-afhankelijke javascript.

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

code:
1
2
3
4
5
<form action=bla.php method=post>
  <input type=hidden id=bla name=bla value="">
  <input type=submit value=naam onclick="document.getElementById('bla').value='knop1';this.submit();">
  <input type=submit value=naam onclick="document.getElementById('bla').value='knop2';this.submit();">
</form>


dat was toch niet zo moeilijk?
Of: als je toch geen form waarden wilt meesturen. en geen POST nodig hebt.
code:
1
2
<input type=button value=knop onclick="document.location='bla.php?bla=knop1';" />
<input type=button value=knop onclick="document.location='bla.php?bla=knop2';" />

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05 09:52
zoiets dan maar?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<script language=javascript>
function submitForm(id) {
document.getElementById('hiddenfield').value = id;
document.formpje.submit();
}
</script>

<form action="script.php" method=post name=formpje>
<input type=text name=id id=hiddenfield>
<input type=button value=id1 onclick="submitForm(1)">
<input type=button value=id2 onclick="submitForm(2)">
<input type=button value=id3 onclick="submitForm(3)">
</form>


en dan script.php
code:
1
2
3
4
5
6
7
8
9
10
11
<?
if ($_POST['id'] == '1') {
echo "knopje 1";
}
else if ($_POST['id'] == '2) {
echo "knopje 2";
}
else if ($_POST['id'] == '3) {
echo "knopje 3";
}
?>

[ Voor 31% gewijzigd door sjoerdb2 op 14-10-2004 16:32 ]


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

<input type="submit" name="a" value="b">
<input type="submit" name="b" value="b">

PHP:
1
2
3
4
5
6
if (isset($_POST['a'])) {
//bla
}
else {
// bla b
}

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

De makkelijkste en meest dynamische oplossing lijkt me het volgende. Eerst maak je een html form aan, wat er zo uit ziet
HTML:
1
2
3
4
5
6
7
<form method="post" action="testje.php">
    <input type="submit" name="knop[0]" value="Knopje numero 1" />
    <input type="submit" name="knop[1]" value="Knopje numero deux" />
    <input type="submit" name="knop[2]" value="Knopje le troisième" />
    <input type="submit" name="knop[3]" value="buKnopje" />
    <input type="submit" name="knop[4]" value="penKnopje" />
</form>
In dezelfde pagina (testje.php dus), zet je de volgende php code
PHP:
1
2
3
4
if (isset($_POST['knop']))
{
    foreach ($_POST['knop'] as $a =>$value);
}
In $a zit nu de (in dit geval numerieke) index die je de knop gegeven hebt.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Persoonlijk vind ik het met tekst wat duidelijker in php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
    <div class="formrow">
        <input type="submit" name="btn[delete]" value="delete selected" />
    </div>
    <div class="formrow">
        <input type="submit" name="btn[modify]" value="modify selected" /><br />
    </div>
    <div class="formrow">
        <input type="submit" name="btn[save]" value="save all" /><br />
    </div>
</form>

<?

if (isset($_POST['btn']))
{
    foreach ($_POST['btn'] as $btn => $value);
}

if ($btn == "delete")
{
    //code
}

[ Voor 137% gewijzigd door Y0ur1 op 14-10-2004 19:51 . Reden: effe XHTML complient gemaakt ]

Pagina: 1