2 verschillende submit-knoppen voor zelfde formulier

Status
Niet open voor verdere reacties.

JasperJ

Gebruiker
Lid geworden
19 jan 2007
Berichten
55
Op een nieuwe website maak ik gebruik van een formuliertje. Dit is een <form> wat verwijst naar een php-bestand. Deze doet een check op verplichte velden en verstuurt vervolgens de inhoud per email naar de sitebeheerder.

Wat ik nu wil, is 2 verschillende send-knoppen, waarbij ik in het ontvangen mailtje kan zien op welke knop er is gedrukt. Zie website www.2uit1.nl. Hier heb ik gebruik gemaakt van het type image i.p.v. submit, maar dat mag niet uitmaken volgens mij.

Dus een mailtje met de inhoud van het formulier en de gebruikte knop (call me back of afspraak maken).

Via google vind ik een heleboel, maar geen werkbare of begrijpelijke oplossing. Heeft iemand een tip? Alvast bedankt!
 
HTML:
<input type="submit" name="submit" value="waarde1" />
<input type="submit" name="submit" value="waarde2" />
PHP:
if($_POST['submit'] == 'waarde1'){

// x

}else{

// y

}
 
Hi SvU,

Dank voor je snelle reactie.
Maar ik ben een noob als het gaat om php...

Op dit moment staat er in de html-pagina:
HTML:
<form action="formulier/formulier.php" method="post" name="contact">
en
HTML:
<input name="callmeback" value="callmeback" type="image" src="images/telefoon.gif">&nbsp;<input name="afspraak" value="afspraak" type="image" src="images/afspraak.gif" width="60" height="55">

In het php-document staat:
PHP:
// get posted data into local variables

<?php

if (isset($_POST['afspraak'])){
$Subject = "Formulier 2uit1-site: Verzoek afspraak";
}

if (isset($_POST['callmeback'])){
$Subject = "Formulier 2uit1-site: Verzoek afspraak";
}

$EmailFrom = $Email;
$EmailTo = "info@jasperj.nl";

$Vnaam = Trim(stripslashes($_POST['Vnaam']));
$Anaam = Trim(stripslashes($_POST['Anaam'])); 
$Wplaats = Trim(stripslashes($_POST['Wplaats'])); 
$sex = Trim(stripslashes($_POST['sex']));
$Email = Trim(stripslashes($_POST['Email']));
$Telnr = Trim(stripslashes($_POST['Telnr']));
$VraagOpm = Trim(stripslashes($_POST['VraagOpm']));

// validation
$validationOK=true;
if (Trim($Vnaam)=="") $validationOK=false;
if (Trim($Anaam)=="") $validationOK=false;
if (Trim($Email)=="") $validationOK=false;
if (Trim($Telnr)=="") $validationOK=false;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=nietcompleet.htm\">";
  exit;
}

// prepare email body text
$Body .= "";
$Body .= "Een belangstellende heeft het formulier op je website ingevuld.";
$Body .= "\n";
$Body .= "Hieronder de ingevulde gegevens.";
$Body .= "\n";
$Body .= "\n";
$Body .= "Vnaam: ";
$Body .= $Vnaam;
$Body .= "\n";
$Body .= "sex: ";
$Body .= $sex;
$Body .= "\n";
$Body .= "Anaam: ";
$Body .= $Anaam;
$Body .= "\n";
$Body .= "Wplaats: ";
$Body .= $Wplaats;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Telnr: ";
$Body .= $Telnr;
$Body .= "\n";
$Body .= "VraagOpm: ";
$Body .= $VraagOpm;
$Body .= "\n";
$Body .= "Ik wil graag een afspraak maken."
$Body .= "\n";

// send email 
$success = mail("info@jasperj.nl", $Subject, $Body, "From: $EmailFrom");

header('refresh: 3 url=www.2uit1.nl');

// redirect to success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=verzonden.htm\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=fout.htm\">";
}
?>

Wat gaat er hier mis?
 
Verander dit:

HTML:
<input name="callmeback" value="callmeback" type="image" src="images/telefoon.gif">

&nbsp;

<input name="afspraak" value="afspraak" type="image" src="images/afspraak.gif" width="60" height="55">

Naar dit:

HTML:
<input name="contactwijze" value="callmeback" type="image" src="images/telefoon.gif">

&nbsp;

<input name="contactwijze" value="afspraak" type="image" src="images/afspraak.gif" width="60" height="55">

Dan check je zo op welke is gedrukt:

PHP:
if($_POST['contactwijze'] == 'callmeback'){

  // x

}else{

 // y

}


Let wel op dat niet elke browser de submit-knop meestuurt (bijvoorbeeld Firefox als je op enter drukt, in plaats van klikt).
 
Ik moest 'helaas' de deur uit, vandaar de late reactie.

Dus als ik het goed zie, moeten de knoppen beide dezelfde naam hebben?
Wat ik dan nog niet zo goed weet is wat ik in het php-formulier moet zetten (dus wat er bij x en y moet komen te staan). Ben nog een noob op php-gebied...

Kan je dat toelichten? Tnx!!
 
Pas hier wel mee op: in Internet Explorer 6 (ja ik weet het, is een oude versie) worden alle beide knoppen meegestuurd. Het maakt dus niet uit wat je controle is ($_POST["contactwijze"] == ""), omdat altijd beide waardes aanwezig zijn.
In het geval van de gelijke namen zal waarschijnlijk de laatste altijd aanwezig zijn.

Als het voor jezelf is / gebruikers zonder IE6, dan is er geen probleem.
 
Hallo aaajeetee,

Dank voor de toevoeging. Inmiddels heb ik daar ook iets over gelezen. Het toevoegen van _x zou voldoende moeten zijn om dat te ondervangen, toch?

Maar wat ik dus nog niet snap is hoe mijn php-doc er nu uit moet komen te zien.
Op dit moment is het (voor wat betreft de geklikte knop):
PHP:
if (isset($_POST['afspraak_x'])){
$Subject = "Formulier 2uit1-site: Verzoek afspraak";
}

if (isset($_POST['callmeback_x'])){
$Subject = "Formulier 2uit1-site: Verzoek afspraak";
}
Ziet er voor mij heel logisch uit en zou dus moeten werken. Maar helaas wordt er een lege php-pagina getoond (ipv een succes-pagina) en geen mail verstuurd.

Nog meer tips?
 
Hallo aaajeetee,

Dank voor de toevoeging. Inmiddels heb ik daar ook iets over gelezen. Het toevoegen van _x zou voldoende moeten zijn om dat te ondervangen, toch?

Maar wat ik dus nog niet snap is hoe mijn php-doc er nu uit moet komen te zien.
Op dit moment is het (voor wat betreft de geklikte knop):
PHP:
if (isset($_POST['afspraak_x'])){
$Subject = "Formulier 2uit1-site: Verzoek afspraak";
}

if (isset($_POST['callmeback_x'])){
$Subject = "Formulier 2uit1-site: Verzoek afspraak";
}
Ziet er voor mij heel logisch uit en zou dus moeten werken. Maar helaas wordt er een lege php-pagina getoond (ipv een succes-pagina) en geen mail verstuurd.

Nog meer tips?

Ik snap even niet waarom "_x" het probleem oplost? Maar dat kan ook aan mij liggen... :D
 
Dat is snel :thumb:!
Ik kwam ergens tegen dat het te maken zou hebben met het feit dat ik plaatjes als knoppen gebruik. Maar goed, als dat niet uitmaakt...

Weet ik in ieder geval nog steeds niet hoe ik verder moet :confused:
 
Dat is snel :thumb:!
Ik kwam ergens tegen dat het te maken zou hebben met het feit dat ik plaatjes als knoppen gebruik. Maar goed, als dat niet uitmaakt...

Weet ik in ieder geval nog steeds niet hoe ik verder moet :confused:

Ik heb hetzelfde probleem gehad (2 submit knoppen, waarvan 1 voor "terug" was). Ik heb dit opgelost door 2 formulieren te gebruiken.

In mijn geval kon ik dit prima doen, omdat er geen formulierelementen / waardes meegestuurd hoefden te worden. Als dit bij jou wel het geval is, is het lastig.

Misschien kan je iets doen met javascript en onclick?


Edit: of sch**t aan de IE6 gebruikers hebben (wat ik zou doen).
 
Dat (*&#% aan IE6-gebruikers is helaas geen optie...

En met javascript en onclick zou ik best willen doen, maar daarvan weet ik ook niet hoe dan. Heb daar al wel even op gezocht, maar daar kwam ik niet echt uit.

Mijn voorkeur blijft uitgaan naar php. En dat zou ook gewoon moeten werken.

Iemand nog een suggestie (of praktisch helpende hand)?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan