Page 1 sur 1

[résolu] Insérer un formulaire PHP dans un tableau html

Posté : 08 janv. 2008, 00:35
par chodaboy34
Bonjour,

J'ai un souci que je ne comprends pas avec php. J'ai un message Parse error: qui revient à chaque fois que j'insére mon formulaire dans un tableau html. Si je mets le même code php en dehors du tableau html, ça fonctionne bien.

Pour être plus précis voilà le code qui fonctionne :
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
         if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
                         echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
         }
?>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">

        <p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br />
        <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
        if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
        }
        ?>" />
        </p>

        <p><label for="titre">Titre de message (facultatif):</label><br />
        <input type="text" size="40" name="titre" id="titre" value="<?php
        if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
                echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
        }
        ?>" />
        </p>

        <p><label for="message">Message (obligatoire):</label><br />
        <textarea name="message" id="message" cols="40" rows="5"><?php
        if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea>
        </p>

        <p><input type="submit" name="envoyer" value="Envoyer" />
        </p>
        </form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
                echo "Votre message a ete envoye.<br />\n";
                echo "<a href=http://hotel-ulysse.fr>Retour a la page d'accueil</a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "Un problème s'est produit lors de l'envoi du message.\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
        }
}
?>
Mais pour coller au design du site je dois l'intégrer dans un tableau ce qui donne :
<TABLE WIDTH="600" BORDER="0" CELLPADDING="0" CELLSPACING="10" BGCOLOR="#FFFFCC"> 
 <TR> 
  <TD> 							
<BR><BR> 
<TABLE WIDTH="600" BORDER="0" CELLPADDING="0" CELLSPACING="4">
<TR> <TDALIGN="RIGHT">
<FONT FACE="Arial, geneva, helvetica" SIZE="-1" COLOR="#000000"> 

<!-- Insérer le code du formulaire php ici -->

        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
        <p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br />
        <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
        if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expediteur a ete saisie: la reafficher
                echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
        }
        ?>" />
        </p>

        <p><label for="titre">Titre de message (facultatif):</label><br />
        <input type="text" size="40" name="titre" id="titre" value="<?php
        if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
                echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
        }
        ?>" />
        </p>

        <p><label for="message">Message (obligatoire):</label><br />
        <textarea name="message" id="message" cols="40" rows="5">

<?php
if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
echo htmlspecialchars($_POST["message"],ENT_QUOTES);
}
?>

</textarea>
</p>

<p><input type="submit" name="envoyer" value="Envoyer" />
        </p>
        </form>

</TD></TR> 
</TABLE> 
</FORM>&nbsp;</TD>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
                echo "Votre message a ete envoye.<br />\n";
                echo "<a href=http://hotel-ulysse.fr>Retour a la page d'accueil</a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "Un problème s'est produit lors de l'envoi du message.\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
        }
}
?>

										</TR> 
									 </TABLE><BR><BR> </TD> 
								</TR> 
							 </TABLE></TD> 
						</TR> 
					 </TABLE></TD> 
				</TR> 
			 </TABLE></TD> 
		</TR> 
	 </TABLE> 
</center>
La ligne d'erreur qui apparaît aprés le parse error est celle ci (ligne 3 dans cet extrait :

Code : Tout sélectionner

</FORM>&nbsp;</TD> <?php }
Apparament le morceau de code qui pose probléme est celui-ci :
(Le parse error est suivi du numéro de la ligne 2).
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
                echo "Votre message a ete envoye.<br />\n";
                echo "<a href=http://hotel-ulysse.fr>Retour a la page d'accueil</a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "Un problème s'est produit lors de l'envoi du message.\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
        }
}
?>
Je ne comprends pas pourquoi mon formulaire php n'est utilisable que en dehors du tableau html. Je n'ai jamais eu un probléme comme ça. Quelqu'un a déjà eu un souci qui ressemble à ça ?

Posté : 08 janv. 2008, 00:56
par Elie
Bah il manque
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
         if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
                         echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
         }
?> 
Dans ton design ...

Posté : 08 janv. 2008, 00:57
par @rthur
Bonjour,

Quel est le message d'erreur exact?

Posté : 08 janv. 2008, 01:40
par chodaboy34
Re,
Le message d'erreur est :

Code : Tout sélectionner

Parse error: syntax error, unexpected '}' in /home.10.29/hoteluly/www/reservation.php on line 239
Apparament, la soluce de Elie a fonctionné. Je testerai demain plus en détail. J'ai ajouté le code de Elie juste avant la ligne concernée par le parse error.

Je teste demain car là, je fatigue un peu.

Merci à tous les 2 en tout cas.

Posté : 08 janv. 2008, 11:03
par Berzemus
Il me semble logique que la solution d'Elie fonctionne, il a vu que tu oubliais de coller un morcer de ton code dans ton tableau.

PHP trouvait simplement un "}" qu'il n'attendait pas à voir la. Donc l'accolade ouvrante doit manquer dans ton tableau (ce qui est apparament résolu en ajoutant le code manquant.

(au passage, c'est mieux de nous donner l'erreur dés le premier post, comme ça on voit tout de suite ou ça coince).