T_ENCAPSED_AND_WHITESPACE que je ne comprend pas

memej
Invité n'ayant pas de compte PHPfrance

29 déc. 2011, 19:03

Bonsoir
Je n'arrive pas à comprendre pourquoi ce code n'est pas valide :
<?php


mail("[email protected]","Demande d'infos","


Demande de ".$_POST['Nom']." ".$_POST['Prenom']."
if (isset($_POST['Mail']))
 { $Mail = $_POST['Mail']; } else { $Mail = ""; }
 if ($Mail == "") { $reponse = "Vous avez oublié votre adresse e-mail."; }5.if (!eregi("^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$", $Mail)) { $reponse = "Est-ce bien une adresse email valide ?"; }
Adresse: ".$_POST['Adresse']."
CP: ".$_POST['Cp']."
Ville: ".$_POST['Ville']."
Pays: ".$_POST['Pays']."
E-mail: ".$_POST['Mail']."
Message: ".$_POST['Message']."
Reservation: ".$_POST['RadioInfo_demandee1']."
Infos: ".$_POST['RadioInfo_demandee2']."
Jour: ".$_POST['SelArrivee_Jour']."
Mois: ".$_POST['SelArrivee_Mois']."
Annee: ".$_POST['SelArrivee_Annee']."
DepartJour: ".$_POST['SelDepart_Jour']."
Mois: ".$_POST['SelDepart_Mois']."
Annee: ".$_POST['SelDepart_Annee']."


 ","


From:formulaire");


 
?>
En fait, il fonctionne bien avant que je mette des conditions a 'Mail'
Alors la page affiche : P

Code : Tout sélectionner

arse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /homepages/41/d332312648/htdocs/pages/testform2.php on line 10
Quelqu'un a t-il une idée svp
Merci de vos eventuelles réponses

Invité
Invité n'ayant pas de compte PHPfrance

29 déc. 2011, 21:24

Bon ! Comme le 5. ne change rien et que c'est un résidu de mon ancienne organisation je l'ai viré. Cela ne fonctionne toujours pas alors je vais essayer de positionner ces conditions sous le Post 'Mail'

ViPHP
xTG
ViPHP | 7331 Messages

29 déc. 2011, 21:40

Ce code n'est pas valide car tu mets du code PHP à l'intérieur d'une chaîne de caractères.
Bon encore c'est pas méchant, mais dans ton code PHP tu as des affichages utilisant les mêmes quotes, donc du coup bang !

On voit le problème avec n'importe quel coloration syntaxique :
<?php


mail("[email protected]","Demande d'infos","


Demande de ".$_POST['Nom']." ".$_POST['Prenom']."
if (isset($_POST['Mail']))
{ $Mail = $_POST['Mail']; } else { $Mail = ""; }
if ($Mail == "") { $reponse = "Vous avez oublié votre adresse e-mail."; }5.if (!eregi("^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$", $Mail)) { $reponse = "Est-ce bien une adresse email valide ?"; }
Adresse: ".$_POST['Adresse']."
CP: ".$_POST['Cp']."
Ville: ".$_POST['Ville']."
Pays: ".$_POST['Pays']."
E-mail: ".$_POST['Mail']."
Message: ".$_POST['Message']."
Reservation: ".$_POST['RadioInfo_demandee1']."
Infos: ".$_POST['RadioInfo_demandee2']."
Jour: ".$_POST['SelArrivee_Jour']."
Mois: ".$_POST['SelArrivee_Mois']."
Annee: ".$_POST['SelArrivee_Annee']."
DepartJour: ".$_POST['SelDepart_Jour']."
Mois: ".$_POST['SelDepart_Mois']."
Annee: ".$_POST['SelDepart_Annee']."


","


From:formulaire");



?>

memej
Invité n'ayant pas de compte PHPfrance

30 déc. 2011, 19:58

Merci. Donc j'ai changé mail par messagerie dans le code mais après je sèche :cry:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 déc. 2011, 23:31

faut "échapper" les caractères, donc dans la chaine " devient \"

@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

31 déc. 2011, 10:05

faut "échapper" les caractères, donc dans la chaine " devient \"

@+
Il y a plus qu'échapper. :lol:
Il a un code PHP qu'il veut exécuter à l'intérieur d'une string...
Ce qui m'étonne c'est que la coloration syntaxique ne semble pas le gêner...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 déc. 2011, 11:19

Modération :
Merci de faire attention lors du choix du titre, pour qu'il soit clair pour ceux qui auraient un problème similaire.
De même, merci d'utiliser les balises [php] pour déposer du code
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

memej
Invité n'ayant pas de compte PHPfrance

31 déc. 2011, 12:22

Merci pour les réponses. J'ai noté les remarques du modérateur.
Je travaille avec Dreamweaver, je connais surtout le html et le script mais mal le php.
Donc comme j'ai dû faire un formulaire en php, je bidouille et suis venu poser une question sur le forum "PHP débutant".
En tant que grand débutant, je ne comprends pas toutes vos remarques et si la coloration syntaxique ne me gênes pas c'est que je n'y suis pas habitué !
Je comprends bien que certains caractères sont pas à leur place mais les échapper échappe à ma compréhension :oops:

ViPHP
xTG
ViPHP | 7331 Messages

31 déc. 2011, 13:05

Actuellement tu mets du code de traitement au sein d'un texte.
PHP n'est pas fait pour traiter de la sorte.

Exemple à ne pas faire :
maFonction( $variable, "unParamètre", "untexte if( $test > 5){
  $toto = "test";
}" . $toto);
Voilà comment faire :
$toto = "";
if( $test > 5 ){
  $toto = "test";
}
maFonction( $variable, "unParamètre", "untexte" . $toto);

memej
Invité n'ayant pas de compte PHPfrance

31 déc. 2011, 13:21

Merci. Je vais reconstruire à partir de tes remarques. Peux-tu, stp, m'expliquer ce que veux dire "litteralement" T_ENCAPSED_AND_WHITESPACE

ViPHP
xTG
ViPHP | 7331 Messages

31 déc. 2011, 13:53

En gros il s'attendait à la fin d'une expression ou bien une concaténation.
C'est ce genre de code qui génère l'erreur :
echo "texte" $variable;
Il faudrait utiliser par exemple :
echo "texte" . $variable;