Ik heb via een article in joomla een contact form gemaakt met een php mail script. Nu mijn vraag? Ik wil graag dat als ik op versturen druk dat de echo melding van bijvoorbeeld "Bedankt voor u bericht" op dezelfde pagina verschijnt, ik heb hem werkend maar nu krijg ik een aparte pagina met links boven in de echo melding. Ik wil het graag onder het forum hebben zo dat het forum dan weer leeg is of dat het form weggaat en dan het bericht komt, en misschien na een aantal seconden het form weer verschijnt.
Als ik het bericht maar op dezelfde pagina kan krijgen.
Ik heb er ook een ip melding in gestopt maar die werkt niet.
Hier volgt de code.
<p>
Tijdens onze live uitzendingen kunt u een verzoekje aanvragen of een reactie doen,<br />
dat kan via het onderstaande verzoek formulier.</p>
Is het niet zinvoller om ook echt goed te weten dat het script doet?
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.
<?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
}
?>
?
Onbekende gebruiker
20-10-2015 09:43
Stop alsjeblieft met het in elkaar wringen van templates en php code.
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.
Ik zie dit als een 'best practice' voor de beginner, en zeker niet als een 'student level'. Het laat zien hoe je onderscheid kan maken in het formulier en de afhandeling in PHP. Je zou het formulier zelfs direct bovenaan kunnen plaatsen zonder die else. Maar goed, het is net wat je wilt.
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 ;-)?
?
Onbekende gebruiker
20-10-2015 10:11
Gene procudurele php meer voorschotelen.
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.
Misschien is het beter als je eerst eens naar de kennis kijkt die de topicstarter heeft.
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.
?
Onbekende gebruiker
20-10-2015 10:37
Heb ik gezien, dat is Joomla.
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.
<?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?
Ik heb nu 2 bestandjes en dat werkt perfect, het moet nu nog samen worden gevoegd of het moet los?
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.