[PHP] unexpected $end

Fermé
Nexion - 7 juil. 2007 à 12:00
 Alex - 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 ;)
A voir également:

4 réponses

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";
}
1
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']}">
0
Il faut échapper tous les " qui sont dans la ligne print "......... ";

par \"
0
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
0
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/...
0