2 knoppen doen hetzelfde

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen

Jeroen

09/06/2006 17:28:00
Quote Anchor link
Hoi allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
 
PHP hulp

PHP hulp

16/11/2024 20:40:03
 
Willem Jan Z

Willem Jan Z

09/06/2006 17:45:00
Quote Anchor link
Ik weet eigenlijk niet of het geldige HTML is, maar ken je niet 2 knoppen met zelfde naam maken, en op waarde controleren? Want wat je nu doet werkt idd niet, omdat alle knoppen sowieso geset zijn.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
 
Frank -

Frank -

09/06/2006 17:49:00
Quote Anchor link
Beide knoppen hebben de name 'submit'. Maar omdat het geen array is, wordt slechts de 2e knop (als ik het goed heb) doorgegeven aan de server. Met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print_r($_POST);
?>

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
name="submit[]"

en er wordt een array aangemaakt.

Uiteraard kun je beide knoppen ook een verschillende naam geven, de meest eenvoudige oplossing.
 
Klaasjan Boven

Klaasjan Boven

09/06/2006 20:08:00
Quote Anchor link
en waarom sluit je eerst het </form> en dan de </table>

Staat de tabel in het form?
Lijkt mij andersom
 
Willem Jan Z

Willem Jan Z

09/06/2006 21:29:00
Quote Anchor link
KlaasJan, ik moet er ook erg op letten, dat weet ik, maar probeer beetje op het probleem te blijven ipv over de rest van de HTML te beginnen.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
 
Jeroen

Jeroen

09/06/2006 23:09:00
Quote Anchor link
Bedankt voor jullie reacties. Ik heb geprobeerd wat Willem-Jan heeft gepost. Maar nog steeds helaas hetzelfde verhaal. Druk ik op 1 knop dan worde beide acties uitgevoerd (dit weet ik omdat er bij beide acties een message aan te pas komt en ik bij beide knoppen allebei te zien krijg.

Dit heb ik nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.";
}
}
?>


<html>
<head>
<title>Workshops & Cursus toevoegen</title>
</head>
<body>

<form method="post" action="">
<table border="1">
<tr>
<td colspan="3" class="message">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$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
 
Robert Deiman

Robert Deiman

09/06/2006 23:24:00
Quote Anchor link
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.
 
Frank -

Frank -

09/06/2006 23:25:00
Quote Anchor link
Waarom heb je 3x <form> in je formulier staan? Zijn het verschillende formulieren? En waarom sluit je deze tags niet af?
 
Willem Jan Z

Willem Jan Z

09/06/2006 23:36:00
Quote Anchor link
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.


Ik had hem getest (PHP5), met print_r, maar er kwam echt maar 1 van de 2 knoppen in de $_POST array.
 
Jeroen

Jeroen

09/06/2006 23:40:00
Quote Anchor link
Sorry Willem-Jan, Ik had een foutje gemaakt. Ik heb het foutje eruit gehaald en hij werkt goed! Bedankt allemaal! :)
 
Robert Deiman

Robert Deiman

09/06/2006 23:42:00
Quote Anchor link
@Willem-Jan

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";
}
 
Willem Jan Z

Willem Jan Z

09/06/2006 23:47:00
Quote Anchor link
Dit is het scriptje wat ik als final test heb gebruikt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Dat was nog voordat je erom vroeg.
Hier kan je de uitkomst zien.
 
Robert Deiman

Robert Deiman

09/06/2006 23:49:00
Quote Anchor link
Ok Willem-Jan, foutje van mij.. :'( gebeurt wel vaker... :)

Misschien dat het toch met die verschillende forms te maken heeft..
 
Willem Jan Z

Willem Jan Z

10/06/2006 00:18:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.