Formulaire en php/css

Xéno
Invité n'ayant pas de compte PHPfrance

20 janv. 2012, 13:33

Bonjour et bonne année à tous,

Alors voilà je réalise un formulaire de contact (j'ai suivie un tutoriel pas à pas).
J'ai tester mon site mais le problème est le suivant : la page apparaît et m'indique un message d'erreur :

Parse error: syntax error, unexpected '{' in /homez.395/hlpictur/www/essai/index.php on line 19


et voilà mes codes php (les codes css n'étant pas nécessaires) :
<?php

if(!empty($_POST))
{
	extract($_POST);
	$valid=true;
	$valid=(empty($nom) || empty($email) || !filter_var($email,FILTER_VALIDATE_EMAIL) || empty($message)) ?false:true;
	$erreurnom=(empty($nom)) ? 'Indiquez un nom' : NULL;
	$erreuremail=(empty($email) || !filter_var($email,FILTER_VALIDATE_EMAIL)) ?'Indiquez un email valide' : NULL;
	$erreurmessage=(empty($message)) ? 'Indiquez un message' : NULL;

	if($valid)
	{
		$nom=strip_tags($nom);
		$email=strip_tags($email);
		$message=strip_tags($message);
		
		
		try{
			$bdd = new PDO('mysql:host=localhost;dbname=essai','root', '') or die(print_r($bdd->errorInfo()));
			$bdd->exec('SET NAMES utf8');
	}
	
	catch(Exeption $e){
		die('Erreur:'.$e->getMessage());
	}
	
	$req = $bdd->prepare('INSERT INTO contact (nom,email,message) VALUES (:nom,:email,:message)');
	$req->execute(array(':nom'=>$nom,':email'=>$email,':message'=>$message));
	$req->closeCursor();
	
	
	$to = '[email protected]';
	$subject = ucwords($nom).' vous envoi un message';
	$message = n12br($message);
	
	$headers = 'From:'.$email."\r\n";
	$headers.='MIME-version: 1.0'."\r\n";
	$headers.='Content-type: text/html; charset=utf-8'."\r\n";
}
}
?>

ainsi que :
<div id="contenu">
 

 <form action="index.php" method="post">
 
 <?php if(isset($erreurnom)):?>
 
 <label class="error" for="nom"><?php if(isset($erreurnom)) echo $erreurnom;?> :</label>
 <input type="text" class="error" name="nom" value="<?php if(isset($nom)) echo $nom;?>" />
 <?php else:?>
  <label for="nom">Nom :</label>
 <input type="text" name="nom" value="<?php if(isset($nom)) echo $nom;?>" />
 <?php endif;?>
 
 
 
 <?php if(isset($erreuremail)):?>
 <label class="error" for="email"><?php if(isset($erreuremail)) echo $erreuremail;?>:</label>
  <input type="text" class="error" name="email" value="<?php if(isset($email)) echo $email;?>" />
 <?php else:?>
  <label for="email">Email :</label>
 <input type="text" name="email" value="<?php if(isset($email)) echo $email;?>" />
 <?php endif;?>

 
 <?php if(isset($erreurmessage)):?>
 <label class="error" for="message"><?php if(isset($erreurmessage)) echo $erreurmessage;?>:</label>
 <textarea class="error" name="message"><?php if(isset($message)) echo $message;?></textarea>
 <?php else:?>
  <label for="message">Message :</label>
 <textarea name="message"><?php if(isset($message)) echo $message;?></textarea>
 <?php endif;?>

 
 
 <input type="submit" value="Envoyer"/>
 
 </form>

 
 
 </div>

Merci à tous ceux qui m'aiderons. :D

ViPHP
xTG
ViPHP | 7331 Messages

20 janv. 2012, 14:21

Quelle est la ligne 19 ?
Et donnes nous la ligne se trouvant au dessus aussi...

Car malheureusement mon lapin veut pas sortir du chapeau. :P

xénoo
Invité n'ayant pas de compte PHPfrance

20 janv. 2012, 14:35

Bonjour merci de ta réponse. La ligne 19 est la ligne en rouge.

if($valid)
{
$nom=strip_tags($nom);
$email=strip_tags($email);
$message=strip_tags($message);


try{
$bdd = new PDO('mysql:host=localhost;dbname=essai','root', '') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}

ViPHP
xTG
ViPHP | 7331 Messages

20 janv. 2012, 17:24

Sauf que ce code est tout ce qu'il y a de plus valide...
Je l'ai testé à la va-vite en modifiant les conditions de test :
<?php

if(empty($_POST))
{
	extract($_POST);
	$valid=true;
	$valid=(empty($nom) || empty($email) || !filter_var($email,FILTER_VALIDATE_EMAIL) || empty($message)) ?false:true;
	$erreurnom=(empty($nom)) ? 'Indiquez un nom' : NULL;
	$erreuremail=(empty($email) || !filter_var($email,FILTER_VALIDATE_EMAIL)) ?'Indiquez un email valide' : NULL;
	$erreurmessage=(empty($message)) ? 'Indiquez un message' : NULL;
	$valid = true;
	if($valid)
	{
		$nom=strip_tags($nom);
		$email=strip_tags($email);
		$message=strip_tags($message);
	   
	   
		try{
				$bdd = new PDO('mysql:host=localhost;dbname=essai','root', '') or die(print_r($bdd->errorInfo()));
				$bdd->exec('SET NAMES utf8');
		}
	   
		catch(Exeption $e){
				die('Erreur:'.$e->getMessage());
		}
	   
		$req = $bdd->prepare('INSERT INTO contact (nom,email,message) VALUES (:nom,:email,:message)');
		$req->execute(array(':nom'=>$nom,':email'=>$email,':message'=>$message));
		$req->closeCursor();
	   
	   
		$to = '[email protected]';
		$subject = ucwords($nom).' vous envoi un message';
		$message = n12br($message);
	   
		$headers = 'From:'.$email."\r\n";
		$headers.='MIME-version: 1.0'."\r\n";
		$headers.='Content-type: text/html; charset=utf-8'."\r\n";
	}
}
?>
Et hormis les undefined variables (normal vu que je passe outre le $_POST qui est vide dans mon cas) et la connexion à la bdd qui plante (normal j'ai pas de bdd nommée essai) aucune erreur sur cette ligne...
Quelle version de PHP utilises-tu ?

xénoo
Invité n'ayant pas de compte PHPfrance

20 janv. 2012, 17:44

Merci pour ton aide :).

L'erreur persiste.
Concernant ma version de php je n'en ai aucune idée ?

L'erreur peut elle provenir du fait que le nom: essai soit faux ?
j'ai pourtant l'impression d'avoir fait les choses bien ? http://hlpictures.fr/image.jpg

xénoo
Invité n'ayant pas de compte PHPfrance

20 janv. 2012, 18:25

Pour la version Php j'ai tester sa me dit : PHP Version 4.4.9

ViPHP
xTG
ViPHP | 7331 Messages

20 janv. 2012, 18:31

PHP 4.4.9 ! O_______o
C'est une contrainte de travail ou bien tu utilises juste celle là parce qu'elle est installée ?

La clause try..catch n'est disponible qu'à partir de PHP 5 d'après plusieurs forum que j'ai visité dans mes recherches.
D'ailleurs... PDO n'existe pas pour PHP 4.4.9... ;)
cf la doc :
PDO est fourni avec PHP 5.1 et est disponible en tant qu'extension PECL pour PHP 5.0 ; PDO requiert les nouvelles fonctionnalités OO fournies par PHP 5 et donc, ne fonctionne pas avec les versions antérieures de PHP.
Donc il va te falloir changer de version de PHP si tu veux continuer avec ce code.

xénoo
Invité n'ayant pas de compte PHPfrance

20 janv. 2012, 18:37

Comme dit j'ai suivis un tuto ... Je ne savais pas que sa influençais.
J'ai déjà un peu regardé et même essayé quelques techniques (qui ne fonctionne pas)

Quel est la meilleur manière de passé en php 5 ?

xénoo
Invité n'ayant pas de compte PHPfrance

20 janv. 2012, 18:50

c'est bon je suis en version : php 5.2.17

Par contre après avoir enlevé mon phpinfo (INFO_ALL);

j"ai ceci :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' in /homez.395/hlpictur/www/essai/index.php:22 Stack trace: #0 /homez.395/hlpictur/www/essai/index.php(22): PDO->__construct('mysql:host=loca...', 'root', '') #1 {main} thrown in /homez.395/hlpictur/www/essai/index.php on line 22

xenno
Invité n'ayant pas de compte PHPfrance

20 janv. 2012, 19:02

l'erreur si j'ai bien compris viens de la ligne 21 qui est la suivante :

$bdd = new PDO('mysql:host=localhost;dbname=essai','root', '') or die(print_r($bdd->errorInfo()));

ViPHP
xTG
ViPHP | 7331 Messages

20 janv. 2012, 19:43

Remplaces localhost par 127.0.0.1 :)

xénoo
Invité n'ayant pas de compte PHPfrance

20 janv. 2012, 22:04

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)' in /homez.395/hlpictur/www/essai/index.php:21 Stack trace: #0 /homez.395/hlpictur/www/essai/index.php(21): PDO->__construct('mysql:host=127....', 'root', '') #1 {main} thrown in /homez.395/hlpictur/www/essai/index.php on line 21

ViPHP
xTG
ViPHP | 7331 Messages

21 janv. 2012, 07:42

Tu as bien un service mysql qui tourne sur ton PC ?
Arrives-tu à y accéder via phpMyAdmin ou autre ?

xénoo
Invité n'ayant pas de compte PHPfrance

21 janv. 2012, 13:01

Alors j'ai reussi à faire lancer le mail (qui est vide et que je reçois dans les indésirable de hotmail ^^)
<h2 id="contact">Contact</h2>
  

 <div id="contenu">


 <form action="index.php" method="post">
 
 <?php if(isset($erreurnom)):?>
 
 <label class="error" for="nom"><?php if(isset($erreurnom)) echo $erreurnom;?> :</label>
 <input type="text" class="error" name="nom" value="<?php if(isset($nom)) echo $nom;?>" />
 <?php else:?>
  <label for="nom">Nom :</label>
 <input type="text" name="nom" value="<?php if(isset($nom)) echo $nom;?>" />
 <?php endif;?>
 
 
 
 <?php if(isset($erreuremail)):?>
 <label class="error" for="email"><?php if(isset($erreuremail)) echo $erreuremail;?>:</label>
  <input type="text" class="error" name="email" value="<?php if(isset($email)) echo $email;?>" />
 <?php else:?>
  <label for="email">Email :</label>
 <input type="text" name="email" value="<?php if(isset($email)) echo $email;?>" />
 <?php endif;?>

 
 <?php if(isset($erreurmessage)):?>
 <label class="error" for="message"><?php if(isset($erreurmessage)) echo $erreurmessage;?>:</label>
 <textarea class="error" name="message"><?php if(isset($message)) echo $message;?></textarea>
 <?php else:?>
  <label for="message">Message :</label>
 <textarea name="message"><?php if(isset($message)) echo $message;?></textarea>
 <?php endif;?>

 
 
 <input type="submit" value="Envoyer"/>
 
 </form>

Problème avec ceci c'est qu'en testant mes barre sont rouge (comme si j'avais mal remplis quelque chose.)

xénoo
Invité n'ayant pas de compte PHPfrance

21 janv. 2012, 15:54

En gros voilà le visuel :http://hlpictures.fr/Image2.jpg