Page 1 sur 2

Formulaire en php/css

Posté : 20 janv. 2012, 13:33
par Xéno
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

Re: Formulaire en php/css

Posté : 20 janv. 2012, 14:21
par xTG
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

Re: Formulaire en php/css

Posté : 20 janv. 2012, 14:35
par xénoo
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');
}

Re: Formulaire en php/css

Posté : 20 janv. 2012, 17:24
par xTG
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 ?

Re: Formulaire en php/css

Posté : 20 janv. 2012, 17:44
par xénoo
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

Re: Formulaire en php/css

Posté : 20 janv. 2012, 18:25
par xénoo
Pour la version Php j'ai tester sa me dit : PHP Version 4.4.9

Re: Formulaire en php/css

Posté : 20 janv. 2012, 18:31
par xTG
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.

Re: Formulaire en php/css

Posté : 20 janv. 2012, 18:37
par xénoo
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 ?

Re: Formulaire en php/css

Posté : 20 janv. 2012, 18:50
par xénoo
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

Re: Formulaire en php/css

Posté : 20 janv. 2012, 19:02
par xenno
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()));

Re: Formulaire en php/css

Posté : 20 janv. 2012, 19:43
par xTG
Remplaces localhost par 127.0.0.1 :)

Re: Formulaire en php/css

Posté : 20 janv. 2012, 22:04
par xénoo
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

Re: Formulaire en php/css

Posté : 21 janv. 2012, 07:42
par xTG
Tu as bien un service mysql qui tourne sur ton PC ?
Arrives-tu à y accéder via phpMyAdmin ou autre ?

Re: Formulaire en php/css

Posté : 21 janv. 2012, 13:01
par xénoo
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.)

Re: Formulaire en php/css

Posté : 21 janv. 2012, 15:54
par xénoo
En gros voilà le visuel :http://hlpictures.fr/Image2.jpg