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

Eléphanteau du PHP | 24 Messages

08 janv. 2008, 00:35

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 ?
Modifié en dernier par chodaboy34 le 08 janv. 2008, 23:41, modifié 1 fois.

Mammouth du PHP | 1339 Messages

08 janv. 2008, 00:56

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 ...
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

08 janv. 2008, 00:57

Bonjour,

Quel est le message d'erreur exact?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 24 Messages

08 janv. 2008, 01:40

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.

ViPHP
ViPHP | 4039 Messages

08 janv. 2008, 11:03

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).
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.