[PHP]Form in zelfde pagina submitten

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

Acties:
  • 0 Henk 'm!

  • ts_rensuh
  • Registratie: Oktober 2006
  • Laatst online: 02-10-2024
Ben bezig om een contactformulier te maken zodat mensen zich kunnen inschrijven.
Alleen lukt het niet om het formulier te verzenden in dezelfde pagina,op het moment dat je dan op verzenden klikt gaat die automatisch terug naar me default.php zonder het formulier te verzenden.
Als ik het forumlier als pop up opent werkt en dan op verzenden klikt werkt die wel.

Heb gezocht op Got maar de topics die ik gevonden had, hielpen me niet om het probleem op te lossen
Linkje 1

Ik maak gebruik in met index.php gebruik van de switch functie
Zie code hieronder

index.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
  <?php 
switch(strtolower($_GET['p']))
{  
    //Inschrijven
    case "inschrijven" :$p="pages/inschrijven/inschrijven.php" ;    break;
                //Default
    default: $p="pages/default.php"                         break; 
} 
include ($p); 
?>
 


inschrijven.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
  
<form name="contactform" action="<?php echo $PHP_SELF; ?>" method="post">
<input type="hidden" name="toemail" value="<?php echo $recipientemail; ?>">
<input type="hidden" name="toname" value="<?php echo $recipientname; ?>">
<input type="hidden" name="require" value="Vereniging">

//cut

<input type="submit" value="Verzenden" name="submitform" > <input type="reset" value="Formulier wissen" name="reset"></p>
</form>
 


Hoop zo voldoende informatie te hebben geplaatst, wil ook wel de site plaatsen waar het op staat, maar volgens mij mag dat niet.

CCIE R&S


Acties:
  • 0 Henk 'm!

  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 26-04 16:39

Koppensneller

winterrrrrr

$PHP_SELF bevat de waarde "index.php", en dat is dan ook de action van je formulier :) Bij een include wordt alleen het aangegeven bestand er tussen geplaatst, zeg maar. Hij gaat dus niet naar een andere pagina, en de $PHP_SELF blijft fus ook gelijk.

[ Voor 48% gewijzigd door Koppensneller op 18-12-2007 16:20 ]


Acties:
  • 0 Henk 'm!

  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Gewoon kijken of het formulier ook word verstuurd met:
PHP:
1
2
3
4
5
6
7
8
if(isset($_POST["submitform"]))
{
 // formulier is gesubmit
}
else
{
 // formulier is niet gesubmit..
}

Portfolio


Acties:
  • 0 Henk 'm!

  • ts_rensuh
  • Registratie: Oktober 2006
  • Laatst online: 02-10-2024
Gurbe, heb ik geprobeerd maar dat werkt niet, hier me hele code, k probeer het ook in een numberd lijst te krijgen om het overzichtelijk te maken maar dat lukt niet, welke code moet k daar voor gebruiken ?

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<title>Verzoek deelname</title>
<?php
$recipientname = "toernooi";
$recipientemail = "unkown@unkown.nl";
$subject = "Verzoek deelname $recipientname";
$autoresponse = "yes";
$autosubject = "Dank U voor Uw verzoek tot deelname";
$automessage = "Dit is een auto response email om U te laten weten dat de e-mail is verzonden. Er word spoedig met U contact op genomen. \n Heeft U nog veranderingen op Uw verzoek tot deelname stuur dan een e-mail naar $recipientemail en vul niet opnieuw het formulier in.";
$thanks = "Dank U voor Uw verzoek tot deelname.<br>U zal spoedig een e-mail binnen krijgen als het verzenden goed is gelukt.<br>
Mits U nog veranderingen heeft op Uw inschrijving. Stuur A.U.B. een e-mail naar $recipientemail<BR><BR><BR><BR>";
?>

// hier staat een verhaaltje
<p align="center">
<?php
if(isset($_POST["submitform"])) {

// check required fields
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
$error .= "Het veld $dcheck[$check] is niet ingevuld<br>";
}
}

if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[a-zA-Z0-9_@.-]+$", $Email))){
$error .= "Uw email adres is ongeldig<br>";}

if($error) {

?>
</p>

<?php echo $error; ?><a href="#" onClick="history.go(-1)">Ga terug</a>


<?php
}
else
{

$browser = $HTTP_USER_AGENT;
$ip = $REMOTE_ADDR;

// format message
//weggehaald niet relevant

// send mail and print success message
$hurrah = mail($toemail,"$subject","$message","From: $Naam $Achternaam <$Email>");
if($hurrah) {
if($autoresponse == "yes") {
$autosubject = stripslashes($autosubject);
$automessage = stripslashes($automessage);
mail($Email,"$autosubject","$message","From: $recipientname <$recipientemail>");
}
echo "$thanks";
}
}
}   
else {
?>

</p>
<form name="contactform" action="<?php echo $PHP_SELF; ?>" method="post">
<input type="hidden" name="toemail" value="<?php echo $recipientemail; ?>">
<input type="hidden" name="toname" value="<?php echo $recipientname; ?>">
<input type="hidden" name="require" value="Vereniging">

//tabel om de gegevens in te vullen

<input type="submit" value="Verzenden" name="submitform" > <input type="reset" value="Formulier wissen" name="reset"></p>
</form>
<?php } ?>
 

[ Voor 30% gewijzigd door ts_rensuh op 18-12-2007 16:40 ]

CCIE R&S


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Zet aub PHP code binnen [php] [/php] tags. ;)
edit:
Ok, thx, nu nog je code indenteren.

[ Voor 27% gewijzigd door Voutloos op 18-12-2007 16:45 ]

{signature}


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 19:21

RM-rf

1 2 3 4 5 7 6 8 9

je pagina index.php include die pagina en dus zal je form ook weer submitten naar 'index.php'...

die checkt op het bsstaan van een GET-waarde, welke echter in $PHP_SELF niet meegenomen is en dus zal de pagina niet 'inschrijven' maar default.php oproepen...

je oplossing zou bv kunnen zijn:
code:
1
action="<?php echo $PHP_SELF; ?>?p=inschrijven"


Overigens, ik zou je aanraden bij bepaalde bugs toch ook jezelf aan te raden de gegenereerde sourcecode te bekijke en je niet dood te staren op de serverside php-code...
in de geparsede HTML-broncode had je dit probleem direkt al teruggevonden.

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • ts_rensuh
  • Registratie: Oktober 2006
  • Laatst online: 02-10-2024
RM-rf schreef op dinsdag 18 december 2007 @ 16:47:
je pagina index.php include die pagina en dus zal je form ook weer submitten naar 'index.php'...

die checkt op het bsstaan van een GET-waarde, welke echter in $PHP_SELF niet meegenomen is en dus zal de pagina niet 'inschrijven' maar default.php oproepen...

je oplossing zou bv kunnen zijn:
code:
1
action="<?php echo $PHP_SELF; ?>?p=inschrijven"


Overigens, ik zou je aanraden bij bepaalde bugs toch ook jezelf aan te raden de gegenereerde sourcecode te bekijke en je niet dood te staren op de serverside php-code...
in de geparsede HTML-broncode had je dit probleem direkt al teruggevonden.
Geweldig hij werkt nu,
Ik zal je advies ook overnemen en er naar kijken alleen dit formulier is door de vorige beheerder gemaakt en ben het aan het optimaliseren, alleen liep hierop vast toen ik het formulier in de nieuwe site te implementeren.

CCIE R&S


Acties:
  • 0 Henk 'm!

Anoniem: 3431

Kijk eens of hier wat tussen staat: http://nl3.php.net/reserved.variables

Acties:
  • 0 Henk 'm!

Anoniem: 236865

Wat je ook kan doen, en dat gebruik ik vaak, is gewoon geen 'action' opnemen binnen je form tag.
Er wordt dan altijd gesubmit naar de huidige pagina...

Acties:
  • 0 Henk 'm!

  • Foutlook
  • Registratie: Februari 2001
  • Niet online
Anoniem: 236865 schreef op woensdag 19 december 2007 @ 08:38:
Wat je ook kan doen, en dat gebruik ik vaak, is gewoon geen 'action' opnemen binnen je form tag.
Er wordt dan altijd gesubmit naar de huidige pagina...
Daar heeft de TS natuurlijk niets aan, dat is zijn probleem juist :)
Er wordt al gesubmit naar de huidige pagina (in zijn geval index.php), maar hij wil graag binnen de geinclude pagina uitkomen waar het formulier instaat. Terecht werd hierboven al opgemerkt dat je dus in de action een parameter kan meegeven die ervoor zorgt dat die pagina opnieuw geinclude wordt.

Ik hou hier zelf wat minder van. Wellicht kan je in de index.php afvangen of dit bewuste formulier verzonden is, en dan de juiste pagina opnieuw includen?

Acties:
  • 0 Henk 'm!

  • daniëlpunt
  • Registratie: Maart 2004
  • Niet online

daniëlpunt

monkey's gone to heaven

RM-rf schreef op dinsdag 18 december 2007 @ 16:47:
je pagina index.php include die pagina en dus zal je form ook weer submitten naar 'index.php'...

die checkt op het bsstaan van een GET-waarde, welke echter in $PHP_SELF niet meegenomen is en dus zal de pagina niet 'inschrijven' maar default.php oproepen...

je oplossing zou bv kunnen zijn:
code:
1
action="<?php echo $PHP_SELF; ?>?p=inschrijven"


Overigens, ik zou je aanraden bij bepaalde bugs toch ook jezelf aan te raden de gegenereerde sourcecode te bekijke en je niet dood te staren op de serverside php-code...
in de geparsede HTML-broncode had je dit probleem direkt al teruggevonden.
Heb je wel eens van super globals gehoord? |:(

Anyway, je kunt je action ook leeg laten, en checken met dit:

PHP:
1
2
3
4
5
6
7
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // verzonden
} else
{
   // nog niet verzonden
}
Pagina: 1