Contact Form "Succes messenge" op dezelfde pagina
Want in het eerste codeblok (gebruik a.u.b. de codetags in het forum) toon je alleen het formulier als deze verzonden zal zijn, wat dus niet kan.
Een kwestie van de accolades ( { en } ) even goed neerzetten, zoals in mijn voorbeeld.
Het tweede code-voorbeeld in je post met $_REQUEST is de slechtste manier die je kan verzinnen, omdat $_REQUEST onbetrouwbaar is.
Verder om te voorkomen dat een mail als spam wordt gemarkeerd, voldoet het om de juiste headers te tonen:
http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders
Toevoeging op 19/10/2015 21:00:02:
en mijn vragen die ik erin wil hebben ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
// plaats hier je afhandeling, zoals je invoervalidaties.
// als deze allemaal voldoen, dan kan je hier de mail versturen.
// Het is raadzaam om hierbij de headers te gebruiken welke uit:
// http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders komen.
} else {
?>
Plaats hier je formulier
<?php
}
?>
if($_SERVER['REQUEST_METHOD']=="POST") {
// plaats hier je afhandeling, zoals je invoervalidaties.
// als deze allemaal voldoen, dan kan je hier de mail versturen.
// Het is raadzaam om hierbij de headers te gebruiken welke uit:
// http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders komen.
} else {
?>
Plaats hier je formulier
<?php
}
?>
Je kan de php code en formulier het beste apart hebben.
Ook kan je beter fuot afhandeling e.d in doen en bijvoorbeeld een functie maken.
Maar wat Aar opgeeft is echt student level PHP. Het kan veel netter en mooier. En niet met een if else constructie.
En probeer ook een template engine te gebruiken. Maar in gods name stop met die vreselijke combinatie PHP en HTML samen te voegen.
Dat jij over template-engines begint is al behoorlijk 'over the top' voor een beginner.
Template-systemen zijn leuk voor een framework of een gemiddelde website, maar hier spreken we gewoon van een scriptje. What's next? Een compleet MVC-framework ;-)?
Gewijzigd op 20/10/2015 09:55:30 door - Ariën -
Gewoon een nette oplossing, in C# e.d kan je ook geen procudureel schrijven.
Het is alsof je eerst Engels aanleert en dan moeten switchen naar Deens.
Middels de template engine is het heel simpel.
- Code die de template ophaalt
- Variabelen defineren
- HTML schrijven
Simpel toch?
Nu krijg je alles in elkaar gedraaid en weet ik veel wat.
MVC is mooi gescheiden, houdt het overzichtelijk en de student die aan het leren is php het schrijven behoudt het overzicht.
Met een structuur oplossing kan je ook aangeven hoe onderscheidt te maken.
Maar wat jij misschien niet ziet of snapt is dat deze "scriptjes" bij elkaar gegooid worden en een website vormen.
MCV, templates en afhaken van procudurele PHP is gewoon een 'no-go' voor beginners. Zorg dan liever dat je een half-jaar tot jaar goede ervaring hebt opgedaan.
Gewijzigd op 20/10/2015 10:43:35 door - Ariën -
Maar zorg dan dat je het formulier netjes returned ipv een if else constructie.
En MVC en alles is echt wel een go, collega's die al langer in het vak lopen zweren erbij.
Bijna iedereen die OOP doet.
Maargoed we dwalen af..
Ik vindt dat het zo moet. Dan is het netjes en gescheiden.. zoals het hoort naar mijn weten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if($_SERVER['REQUEST_METHOD'] === "POST") {
// plaats hier je afhandeling, zoals je invoervalidaties.
// Gebruik PHPMailer vooe emailberichten
// Gebruik Verot Upload class voor bestands afhandeling
// Is er een error waardoor het formulier weer getoond moet worden?
if($error) {
echo include('hierformulier.php');
}
?>
if($_SERVER['REQUEST_METHOD'] === "POST") {
// plaats hier je afhandeling, zoals je invoervalidaties.
// Gebruik PHPMailer vooe emailberichten
// Gebruik Verot Upload class voor bestands afhandeling
// Is er een error waardoor het formulier weer getoond moet worden?
if($error) {
echo include('hierformulier.php');
}
?>
Op deze manier heb je gescheiden code maar toch in 1 bestand staan, toch?
Maar laten we de topicstarter vanaf nu maar helpen met zijn probleem.
Ik heb nu de echo op een aparte pagina en ik heb een return ingevuld na een aantal seconden terug naar het form maar ik wil graag of de melding onder het form of eerst de echo en dan form weer leeg, want nu heb ik het form op een plekje op de pagina staan en krijg ik geheel nieuwe pagina met de form te zien en zie ik de rest van de pagina erom heen niet meer omdat het een nieuwe pagina met de echo word.
Alleen heb ik 2 files.
En heb ik de logica gescheiden.
Formulier (HTML) staat in een apart bestand.
Logica voor validaties en uploaden e.d staat ook in een apart bestand.
Dan is het MVC, zonder model dan, van toepassing.
Hopelijk heeft TS hier iets aan.
Toevoeging op 20/10/2015 13:27:13:
Harry, kan je de code die je nu hebt posten?
Dan kijken we even of we je aanwijzingen kunnen geven en desnoods een voorbeeldje.