Posez votre question Signaler

[PHP] unexpected $end

Nexion - Dernière réponse le 11 nov 2010 à 11:04
Bonjour
Je me suis fait un petit script mais là une erreur est apparus
Parse error: syntax error, unexpected $end in /home/web/clients/gaulois.hostarea.org/www/Test2.php on line 76
Soit a la fin de mon script, j'ai chercher une erreur mais je n'en ai vu aucune
voici le script
<html>
<body>


<?php
if ( ! empty( $_REQUEST['sexe']  ) &&
! empty( $_REQUEST['domaine'] ) &&
! empty( $_REQUEST['mail']  ) ) 
{
$erreurbdd = "";
$ret = ajout_dans_base( $_REQUEST['domaine'],
$_REQUEST['sexe'],
$_REQUEST['mail'], $erreurbdd );
if ( ! $ret )
{
print "Error: $erreurbdd<br/>\n";
}
else
{
print "Merci beaucoup <br/>\n";
}
}
else
{
ecrire_formulaire();
}

function ajout_dans_base( $domaine, $sexe, $mail, &$erreurbdd )
{
$domaine = mysql_real_escape_string( $domaine );
$sexe = mysql_real_escape_string( $sexe );
$mail = mysql_real_escape_string( $mail );
$lien = mysql_pconnect( "xxxxx", "xxxx", "xxxxx" );
if ( ! $lien )
{
$erreurbdd = mysql_error();
return false;
}
if ( ! mysql_select_db( "xxxx", $lien ) )
{
$erreurbdd = mysql_error();
return false;
}
$requete = "INSERT INTO domaines ( domaine, sexe, mail )
values( '$domaine', '$sexe', '$mail' )";
if ( ! mysql_query( $requete, $lien ) )
{
$erreurbdd = mysql_error();
return false;
}
return false;
}

function ecrire_formulaire()
{
print <<<EOF
<form method="post" action="{$_SERVER['PHP_SELF']}">
<p><input type="text" name="mail" />
Votre adresse e-mail</p>

<p><select name="sexe">
<option value="F">Femme</option>
<option value="M">Homme</option>
</select></p>

<p><input type="submit" value="Envoyer!" /></p>
</form>
FORM;
}




?>
</body>
</html>

Merci d'avance ;)
Lire la suite 

[PHP] unexpected $end »

5 réponses
Réponse
+1
moins plus
En général quand l'ereur est en fin de script c'est qu'il manque une acolade fermante "}"

Mais j'ai mis ton script dans notepad++ et il les "voit" toutes.


Par contre a mon avis il manque les " "

Dans function ecrire_formulaire()
{
print "<<<EOF
<form method="post" action="{$_SERVER['PHP_SELF']}">
<p><input type="text" name="mail" />
Votre adresse e-mail</p>

<p><select name="sexe">
<option value="F">Femme</option>
<option value="M">Homme</option>
</select></p>

<p><input type="submit" value="Envoyer!" /></p>
</form>
FORM";
}
Ajouter un commentaire
Réponse
+0
moins plus
Ok mais maintenant mon problème c'est
Parse error: syntax error, unexpected T_STRING in /home/web/clients/gaulois.hostarea.org/www/Test2.php on line 57

Sachant que m'a ligne 57 c'est:
<form method="post" action="{$_SERVER['PHP_SELF']}">
Ajouter un commentaire
Réponse
+0
moins plus
Il faut échapper tous les " qui sont dans la ligne print "......... ";

par \"
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Je viens d'avoir le même problème ... avec le même script puisqu'il s'agit de l'exercice 11.3 du kit Campus Développeur pour PHP-MySQL.

J'ai donc appliqué ce qui était expliqué ici, les guillemets généraux et l'échappement des guillemets intermédiaires.

Le formulaire apparaît bien maintenant mais apparaissent aussi :
- les chevrons du début
- le mot FORM de la fin
Alex - 11 nov 2010 à 11:04
Bonjour,

Je vois que la notation Heredoc est utilisée pour écrire formulaire. Cette notation doit utiliser une syntaxe très stricte, avec:
- le symbole "<<<" suivi par un identifiant pour ouvrir la partie texte
- le même symbole suivi de ";"

Une erreur courante est d'avoir des espaces après le symbole.
Mais ici, ce n'est carrément pas le même symbole qui est utilisé: vous avez:
{
print "<<<EOF
   ...
Le HTML à afficher
  ...

FORM";
}


En notation Heredoc, le texte n'est pas délimité par des double-cote ("), et donc pas besoin de les échapper dedans. Pour plus d'info:
http://www.manuelphp.com/...
Ajouter un commentaire
Ce document intitulé « [PHP] unexpected $end » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook