Ik heb in mijn cursus de opdracht gekregen een eenvoudig invoerformulier te maken.

Het invoerformulier heb ik succesvol gemaakt, echter de ontvangst moet worden bevestigd in de formulierhandler formhandler.php en dat krijg ik niet werkend. Hij geeft elke keer de volgende melding:

( ! ) Parse error: syntax error, unexpected '{' in C:\wamp\www\formhandler.php on line 3

Hieronderoner de code van formhandler.php



<?php
if (!$_post['email'] || $_post['email'] =="" ||
  strlen(isset($_post['email']) && $_post['email'] > 30){
 echo '<P>Is je emailadres echt zo lang?</P>';
 } else {
//Open connection to de database
mysql_connect("localhost", "root", "")
or die("Kan geen contact maken met de database");
   mysql_select_db("test");

   //Insert mail address
   $as_email = mysql_real_escape_string($_post['email']);
   $tr_email = trim($as_email);
   $QUERY = "INSERT INTO mailinglist (ID, Email, Source)
                   VALUES(NULL, '$tr_email',
                   'www.example.com/newsletter_signup.html')
                   ";
   $result = mysql_query($QUERY);
   if (mysql_affected_rows() == 1) {
       echo '<P>Your information has been recorded.</P>';
   } else {
   error_log(mysql_error());
   echo '<P>Somthing went wrong with your signup
attempt.</P>';
   }
}
?>
</td>
</tr>
</table>
</body>
</html>

Waarom controleer je op de lengte van een mailadres?
Gebruik gewoon dit om te kijken of deze geldig is, ongeacht de lengte.

<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
// hier al je validaties....

if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
echo "E-mail is geldig";
} else {
echo "E-mail is ongeldig";
}
} else {
// hier je formulier
}
?>
[/code]
Kijk eens goed naar je if statement op regel 2 en 3 en bedenk nog eens goed wat je wilt testen.
En dan met name waar je de haakjes zet.
Vreemde manier om je input op te vangen.

Wat denk je hiermee te bereiken?
<?php
strlen(isset($_post['email']) && $_post['email'] > 30)
?>
strlen is een functie die het aantal tekens in een string voor je optelt. Daar geef jij nu een vergelijking mee.

Hoe het beter kan: (ik ken je studieboek niet natuurlijk)
<?
// eerst kijken we of de pagina wel in de POST methode is aangeroepen. Anders kunnen we geen enkele $_POST[..] verwachten.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* nu ga ik er gewoon klakkeloos van uit dat $_POST['email'] bestaat omdat:
a. Deze pagina zeker in de POST methode is aangeroepen, en
b. Het formulier (<form>) ALTIJD een invoerveld bevat met de naam 'email'
*/

if(strlen($_POST['email']) > 30)
echo '<p>Is je emailadres echt zo lang?</p>';
}
?>
Dit voorbeeld komt letterlijk uit het studie boek (PHP6 en MySQL, DE ECHTE WILEY BIBLE) en het gaat inderdaad om een veld waarbij een email adres moet worden ingevoerd.
De code van het formulier is:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">;
<html>

<head>
<title>Listing 17-1</title>
<style type="text/css">
<!--
Body, P {color:black; font-family: verdana;
font-size: 10 pt}
H1 {color: black; font-family: arial; font-size: 12 pt}
-->
</style>
</head>
<body>
<table border=0 cellpading=10 width=100%>
<tr>
<td bgcolor=#f0f8ff" align=center valign=top width=17%>
</td>
<td bgcolor=#ffffff" align=left valign=top width=83%>
<H1>Newsletter sign-up form</H1>
<P>Vul hier je e-mailadres in en wij sturen je onze wekelijkse nieuwsbrief.</P>
<form method="post"action="formhandler.php">
<input type="text"size=25 name="email">
<br><br>
<input type="submit"name="submit" value="submit">
</form>
</td>
</tr>
</table>
</body>
</html>
Als die code uit dat boek komt, lijkt me dat boek meer geschikt voor de open haard.
Wat een fouten zeg..... ;-)
Zoals de code er nu staat (in de eerste post) ontbreekt er een 2 ronde haakje na "> 30" daarom dat de foutmelding ook zegt dat { onverwacht is
-Aar-
Je hebt gelijk, eigenlijk kan de hele cursus PHP & MySQL van de LOI in de open haard. Maar ik heb er wel bijna € 500,- aan betaald en het is de enige schriftelijke cursus PHP & MySql dus ik maak 'm toch maar even af alhoewel ik me afvraag of ik er iets aan zal hebben.

G P
Dank voor je hulp. Ik heb dat ronde haakje er bij geplaatst echter nu geeft hij de volgende foutmelding:

( ! ) Notice: Undefined variable: _post in C:\wamp\www\formhandler.php on line 21
Call Stack
# Time Memory Function Location
1 0.0016 374104 {main}( ) ..\formhandler.php:0
En dit gaat nog steeds over de code uit je openingspost, daar is niets aan verandert ?

Ik zie daar namelijk helemaal geen enkele variabele op regel 21.
Controleer of je POST-variabelen bestaan!
Sorry Pipo, dat moet zijn regel 2

Reageren