2 knoppen doen hetzelfde
Ik heb 2 knoppen met allebei een ander functie. Daarom dacht ik dat het handig was om een hidden mee te geven aan de knoppen.
Nou is het probeel dat beide knoppen toch allebei de acties uitvoeren in plaats van 1.
Dit is niet het geval als ik </form> na knop 1 zet, maar dan werkt knop 2 niet meer.
Ik heb de code even flink wat ingekort om hem duidelijk te houden.
Kan iemand mij vertellen wat ik fout doe?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
if (isset($_POST["cursusWijzig"])){
}
if (isset($_POST["cursusOpslaan"])){
}
?>
<html>
<head>
<title>Cursus toevoegen</title>
</head>
<body>
<form method="post" action="">
<table border="1">
<tr>
<td>Naam cursus</td>
<td colspan="2"><input type="text" name="naam" size="38" maxlength="200" value="<? if ($naam != ""){echo $naam;}?>"/></td>
</tr>
<tr>
<input type="hidden" name="workshopWijzig" value="1">
<th colspan="3"><input type="submit" class="submit" name="action" value="Workshop & Cursus toevoegen">
<form name ="input" action="../beheerder/index.php"></form>
</tr>
<tr>
<form method="post" action="">
<input type="hidden" name="workshopOpslaan" value="1">
<th colspan="3"><input type="submit" class="submit" name="action" value="Workshop & Cursus tijdelijk opslaan">
<form name ="input" action="../beheerder/index.php">
</tr>
</table>
</form>
</body>
</html>
if (isset($_POST["cursusWijzig"])){
}
if (isset($_POST["cursusOpslaan"])){
}
?>
<html>
<head>
<title>Cursus toevoegen</title>
</head>
<body>
<form method="post" action="">
<table border="1">
<tr>
<td>Naam cursus</td>
<td colspan="2"><input type="text" name="naam" size="38" maxlength="200" value="<? if ($naam != ""){echo $naam;}?>"/></td>
</tr>
<tr>
<input type="hidden" name="workshopWijzig" value="1">
<th colspan="3"><input type="submit" class="submit" name="action" value="Workshop & Cursus toevoegen">
<form name ="input" action="../beheerder/index.php"></form>
</tr>
<tr>
<form method="post" action="">
<input type="hidden" name="workshopOpslaan" value="1">
<th colspan="3"><input type="submit" class="submit" name="action" value="Workshop & Cursus tijdelijk opslaan">
<form name ="input" action="../beheerder/index.php">
</tr>
</table>
</form>
</body>
</html>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<form method="post" action="#">
<input type="submit" name="submit" value="Opslaan" />
<input type="submit" name="submit" value="Voorbeeld" />
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if($_POST['submit'] == "Opslaan")
{
// Actie opslaan
}
if($_POST['submit'] == "Voorbeeld")
{
// Actie Voorbeeld
}
}
?>
[b]Edit[/b]
</form> toegevoegd
<input type="submit" name="submit" value="Opslaan" />
<input type="submit" name="submit" value="Voorbeeld" />
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if($_POST['submit'] == "Opslaan")
{
// Actie opslaan
}
if($_POST['submit'] == "Voorbeeld")
{
// Actie Voorbeeld
}
}
?>
[b]Edit[/b]
</form> toegevoegd
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
krijg je te zien welke gegevens er in de array $_POST zitten. Je zult zien dat $_POST['submit'] slechts 1 waarde heeft en niet nog een array bevat. Zet in je html eens het volgende:
en er wordt een array aangemaakt.
Uiteraard kun je beide knoppen ook een verschillende naam geven, de meest eenvoudige oplossing.
Staat de tabel in het form?
Lijkt mij andersom
Frank, je hebt uiteraard weer helemaal gelijk :) Had even niet aan array gedacht. Maar met verschillende namen heb je toch weer dat probleem? Dus lijkt mij de array oplossing de enige werkende. Of heb jij mooie oplossing ervoor?
Zit trouwens even te denken(ja gevaarlijk!), maar hoe werkt dat met die array dan? Want ze zijn allebei geset, dus allebei hebben ze een waarde. Hoe weet je dan welke gebruikt is?
Edit
Heb het even getest, en de waarde die je kiest wordt doorgegeven in $_POST['submit'][0], de andere wordt niet meegenomen.
En in geval van verschillende namen, wordt alleen degene geset die je aanklikt, had ik het even goed mis :)
Dus je kan het zo gebruiken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['opslaan']))
{
// Opslaan!
}
if(isset($_POST['voorbeeld']))
{
// Laat voorbeeld zien
}
}
?>
<form method="post" action="submit.php">
<input type="submit" name="opslaan" value="Opslaan" /><br />
<input type="submit" name="voorbeeld" value="Voorbeeld" />
</form>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['opslaan']))
{
// Opslaan!
}
if(isset($_POST['voorbeeld']))
{
// Laat voorbeeld zien
}
}
?>
<form method="post" action="submit.php">
<input type="submit" name="opslaan" value="Opslaan" /><br />
<input type="submit" name="voorbeeld" value="Voorbeeld" />
</form>
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Dit heb ik nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(isset($_POST['toevoegen'])){
$message .= "Workshop is toegevoegd.";
}
if(isset($_POST['opslaan'])){
$message .= "Workshop is tijdelijk opgeslagen.";
}
}
?>
if(isset($_POST['toevoegen'])){
$message .= "Workshop is toegevoegd.";
}
if(isset($_POST['opslaan'])){
$message .= "Workshop is tijdelijk opgeslagen.";
}
}
?>
<html>
<head>
<title>Workshops & Cursus toevoegen</title>
</head>
<body>
<form method="post" action="">
<table border="1">
<tr>
<td colspan="3" class="message">
</td>
</tr>
<tr>
<input type="hidden" name="cursusWijzig" value="1">
<th colspan="3"><input type="submit" class="submit" name="cursusWijzig" value="Cursus toevoegen"></th>
<form name ="input" action="../beheerder/index.php">
</tr>
<tr>
<input type="hidden" name="cursusOpslaan" value="1">
<th colspan="3"><input type="submit" class="submit" name="cursusOpslaan" value="Cursus tijdelijk opslaan">
<form name ="input" action="../beheerder/index.php">
</tr>
</form>
<table>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
$message .= "Workshop is toegevoegd.";
}
if(isset($_POST['opslaan']) && $_POST['opslaan'] != NULL){
$message .= "Workshop is tijdelijk opgeslagen.";
}
Nu zullen jullie wel denken, waarom??
Om het volgende: De buttons staan in HETZELFDE formulier, ze worden wel beiden geset, maar als het goed is wordt er maar bij 1 van beiden een value meegegeven.
Waarom heb je 3x <form> in je formulier staan? Zijn het verschillende formulieren? En waarom sluit je deze tags niet af?
Robert:
if(isset($_POST['toevoegen']) && $_POST['toevoegen'] != NULL){
$message .= "Workshop is toegevoegd.";
}
if(isset($_POST['opslaan']) && $_POST['opslaan'] != NULL){
$message .= "Workshop is tijdelijk opgeslagen.";
}
Nu zullen jullie wel denken, waarom??
Om het volgende: De buttons staan in HETZELFDE formulier, ze worden wel beiden geset, maar als het goed is wordt er maar bij 1 van beiden een value meegegeven.
$message .= "Workshop is toegevoegd.";
}
if(isset($_POST['opslaan']) && $_POST['opslaan'] != NULL){
$message .= "Workshop is tijdelijk opgeslagen.";
}
Nu zullen jullie wel denken, waarom??
Om het volgende: De buttons staan in HETZELFDE formulier, ze worden wel beiden geset, maar als het goed is wordt er maar bij 1 van beiden een value meegegeven.
Ik had hem getest (PHP5), met print_r, maar er kwam echt maar 1 van de 2 knoppen in de $_POST array.
Sorry Willem-Jan, Ik had een foutje gemaakt. Ik heb het foutje eruit gehaald en hij werkt goed! Bedankt allemaal! :)
Met de print_r print hij de inhoud toch van de array, wanneer $_POST['array']['waarde'] dan NULL is, print die ook niets, dus je ziet hem niet, terwijl hij wel is geset.
Probeer nu ook eens het volgende in jou scriptje dan:
if(isset($_POST['array']['waarde'])){
$message .= "Waarde 1 is geset";
}
if(isset($_POST['array']['waarde'])){
$message .= "Waarde 2 is geset";
}
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['opslaan']))
{
echo 'Hier opslaan!';
}
if(isset($_POST['voorbeeld']))
{
echo 'Hier het voorbeeld!';
}
}
?>
<form method="post" action="submit.php">
<input type="submit" name="opslaan" value="Opslaan" /><br />
<input type="submit" name="voorbeeld" value="Voorbeeld" />
</form>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['opslaan']))
{
echo 'Hier opslaan!';
}
if(isset($_POST['voorbeeld']))
{
echo 'Hier het voorbeeld!';
}
}
?>
<form method="post" action="submit.php">
<input type="submit" name="opslaan" value="Opslaan" /><br />
<input type="submit" name="voorbeeld" value="Voorbeeld" />
</form>
Dat was nog voordat je erom vroeg.
Hier kan je de uitkomst zien.
Misschien dat het toch met die verschillende forms te maken heeft..
Die kans is inderdaad erg groot, nieuw form is nieuw ID zou je kunnen zeggen. Terwijl PHP geen verschil ziet. Maar alles in $_POST propt. Maar dat is maar een gok.