Dag beste dames en heren van PHPHulp! :)

Op het moment bwn ik bezig met het opzetten van een contactformulier voor mijn website. Het probleem is alleen dat ik totaal geen kennis van PHP heb - en dus ook geen idee wat ik eigenlijk moet doen. Nu ben ik door het opzoeken van tutorials wel het een en ander te weten gekomen, maar het lukt me schijnbaar nog steeds niet.

Ik heb de volgende bestanden in de map x/contact staan:

contact.html
formprocess.php

contact.html is de webpagina waar het formulier zich bevindt; in formprocess.php staat alle PHP-code met betrekking tot het valideren van het formulier. De bedoeling is dat het formulier zoals gezegd gevalideerd wordt door formprocess.php en dat bij het onvolledig invullen van het formulier een error in ditzelfde formulier gegeven wordt (zonder dat er van pagina gewisseld wordt. Is dit mogelijk?

De HTML van het formulier is als volgt:

<form method="post" id="contactform" action="formprocess.php">
<table width="100%" border="0" style="text-align: top;">
  <tr>
    <td width="35%"><label for="name">Naam *</label></td>
    <td width="65%" style="text-align: right;"><input name="name" type="text" id="name" size="30" maxlength="100" /></td>
  </tr>
  <tr>
    <td width="35%"><label for="phone">Telefoonnummer</label></td>
    <td width="65%" style="text-align: right;"><input name="phone" type="text" id="phone" size="30" maxlength="10" /></td>
  </tr>
  <tr>
    <td width="35%"><label for="email">Email *</label></td>
    <td width="65%" style="text-align: right;"><input name="email" type="text" id="email" size="30" maxlength="100" /></td>
  </tr>
  <tr>
    <td width="35%"><label for="comment">Bericht *</label></td>
    <td width="65%" style="text-align: right;"><textarea name="comment" id="comment" cols="28" rows="11"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td id="disclaimer" style="text-align: right;"><label>alle velden met een * zijn verplicht</label></td>
  </tr>
  <tr>
    <td height="32">&nbsp;</td>
    <td id="submit" style="text-align: right;"><input type="submit" name="submit" id="submit" value="Verstuur" /></td>
  </tr>
</table>
</form>


Het PHP script ziet er daarna als volgt uit (gehaald uit een video tutorial van PHP Academy):


<?php

if ($_POST['submit'])
{

//get form data

$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$comment = $_POST['message'];

$errorstring = ""; //default value of error string

if (!$name)
$errorstring = $errorstring."Naam";

if (!$email)
$errorstring = $errorstring."Email";

if (!$comment)
$errorstring = $errorstring."Bericht";

if $errorstring="";
echo "<table id="disclaimer">Voer de volgende velden a.u.b. correct in: $errorstring";
else
{
//run code
die("Uw bericht is succesvol verstuurd");

}
}

?>

Als ik nu op de 'Verstuur' knop klik, word ik doorgestuurd naar de pagina x/contact/formprocess.php. Deze pagina is vervolgens helemaal blank. Wat er fout gaat? Geen idee, mijn kennis reikt niet veel verder van HTML en CSS.

Mocht iemand me kunnen helpen, dan zou ik dat zeker waarderen!

Groetjes,

Robbin
Je script in je post is nu niet echt leesbaar. Pas je post even aan en gebruik [ignore]
 en 
[/ignore] tags om je code heen. Om php code zet je uiteraard dit:<?php en ?>Gebruik je knop om dit te doen.

SanThe.
Ah, okee. Zo beter? :)
Om te beginnen klopt je code totaal niet...

if ($_POST['submit'])
Aha, dus als het veld submit meegestuurd is, dan zijn automatisch ook de andere velden meegestuurd? Mijn ervaring is dat het wel eens anders kan zijn. En dat je gewoon alle velden moet controleren:
<?php
if(isset($_POST['name'], $_POST['email'], $_POST['phone'], $_POST['message'])) ...
?>

$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$comment = $_POST['message'];
En waarom niet de gewone variabelen gebruiken? Gewoon $_POST[index]... Dit is variabelen aanmaken voor niets.

if (!$name)
(...)
if(!$comment)
Wat betekent dit? Lijkt mij niet echt de elegentste oplossing voor het geheel.

if $errorstring="";
Bedoel je niet per ongeluk:
<?php
if($errorstring == ''){
?>

echo "<table id="disclaimer">Voer de volgende velden a.u.b. correct in: $errorstring";
Aha, we slashen tegenwoordig ook niet meer. Daarnaast is de html die hier uit komt niet valid. A. omdat je een tabel gebruikt en daar gelijk tekst in flikkert. B. Omdat je de tabel ook niet afsluit.

<?php
echo '<div id="disclaimer">Voer de volgende velden a.u.b. correct in '.$errorstring.'</div>';
?>

Als ik nu op de 'Verstuur' knop klik, word ik doorgestuurd naar de pagina x/contact/formprocess.php. Deze pagina is vervolgens helemaal blank.
Ja, PHP weet niet wat ie met je brokkepagina aan moet. Dus doet ie er maar niets mee... Dat is in het kort mijn diagnose...
Kijk, daar heb ik in elk geval iets aan. Zoals gezegd had ik totaal geen kennis van PHP en heb ik dit script van PHP Academy gehaald. Bedankt voor je opmerkingen in elk geval! :)

Reageren