8791 sujets

Développement web côté serveur, CMS

Bonjour à tous et à toutes,

Voilà je viens vous demandez de l'aide, car n'étant pas du tout expert dans le langage Php je débute en Xhtml et Css.

En fait la personne qui a conçu ce formulaire m'avait dit de le mettre en ligne pour le 10 août et bien sûr étant partie en vacances je me retrouve avec un formulaire.php qui ne fonctionne pas.

J'ai quand même pu déceler une anomalie dans le code source et m'étant servi des tutos débutants, je me suis aperçu que dans le body toutes les balises commençaient par <? et se terminaient par ?> au lieu de <?Php ....?>, alors que la source en début qui se trouve au-dessus de la balise Doctype commençais bien par <Php.
J'ai donc rectifié sur cette base et le formulaire a donc bien pu s'afficher sans parse error.

mais pour le reste là je suis largué complet Smiley confus Smiley sweatdrop

En fait l'erreur est que quand on remplit le formulaire tout se passe bien, mais au moment de valider il me met un message d'erreur me disant que des checkbox obligatoires qui ont été cochées ne le sont pas.

En plus le problème c'est que j'ai suivi aussi le fait qu'il faille l'essayer en local avec Wamp que j'ai donc installé. Mais dès que je mets le fichier php en ligne avec le lien pour l'ouvrir le navigateur me propose de le télécharger au lieu de m'afficher le formulaire, donc là je ne comprends vraiment plus.

Voici le code source complet du fichier formulaire php j'ai exprès enlevé l'adresse du site et de l'adresse mail. En plus je trouve quand même bizarre d'avoir tout mis dans un fichier. et imbriqué dans de l'HTML

<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Déclaration des variables, entrées
$list['f_5']=array("demande prix","de documentations","demande devis");
if(isset($_POST['submit'])){
	$erreur="";
	// Nettoyage des entrées
	while(list($var,$val)=each($_POST)){
	if(!is_array($val)){
		$$var=strip_tags($val);
	}else{
		while(list($arvar,$arval)=each($val)){
				$$var[$arvar]=strip_tags($arval);
			}
		}
	}
	// Formatage des entrées
	$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
	$f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
	$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
	$f_4=strip_tags(trim($f_4));
	// Verification des champs
	if(strlen($f_1)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Societe &raquo; est vide ou incomplet.</span>";
		$errf_1=1;
	}
	if(strlen($f_2)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Responsable &raquo; est vide ou incomplet.</span>";
		$errf_2=1;
	}
	if(strlen($f_3)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Fonction &raquo; est vide ou incomplet.</span>";
		$errf_3=1;
	}
	if(strlen($f_4)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Mail &raquo; est vide ou incomplet.</span>";
		$errf_4=1;
	}else{
		if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
		'@'.
		'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
		'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
		$f_4)){
			$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
			$errf_4=1;
		}
	}
	if(!$f_5){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Votre choix &raquo; requiert au moins une sélection.</span>";
		$errf_5=1;
	}
	if($erreur==""){
		// Création du message
		$titre="Message de votre site";
		$tete="From:Site@notresite.fr\n";
		$corps.="Société : ".$f_1."\n";
		$corps.="Responsable : ".$f_2."\n";
		$corps.="Fonction : ".$f_3."\n";
		$corps.="Mail : ".$f_4."\n";
		for($id=0; $id<count($list['f_5']); $id++){
			if($f_5[$id]==1){
				$corps.="Votre choix : ".$list['f_5'][$id]."\n";
			}
		}
		$corps.="Commentaires : ".$f_6."\n";
		if(mail("prenom.nom@orange.fr", $titre, stripslashes($corps), $tete)){
			$ok_mail="true";
		}else{
			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
		}
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

  <meta http-equiv="content-type" content="text/html; charset=utf-8" />

<style type="text/css" media="screen"><!--
INPUT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
SELECT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
TEXTAREA { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
.txterror { color: black; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
.txtform { color: black; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
--></style>

</head>

<body>

<?php if($ok_mail=="true"){ ?>
	<table width='100%' border='0' cellspacing='1' cellpadding='1'>
		<tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr>
		<tr><td>&nbsp;</td></tr>
		<tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
		<tr><td>&nbsp;</td></tr>
		<tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span></td></tr>
	</table>
<?php }else{ ?>
<form action='<?php echo $PHP_SELF ?>' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<?php if($erreur){ ?><tr><td colspan='2' bgcolor='red'><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?php echo$erreur?></ul></td></tr><?php }?>
<tr><td colspan='2'><span class='txterror'>Les champs marqué d'un * sont obligatoires</span></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Societe* :</span></td><td><input type='text' style='width:200 <?php if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' value='<?php echo stripslashes($f_1);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Responsable* :</span></td><td><input type='text' style='width:200 <?php if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?php echo stripslashes($f_2);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Fonction* :</span></td><td><input type='text' style='width:200 <?php if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?php echo stripslashes($f_3);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Mail* :</span></td><td><input type='text' style='width:200 <?php if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' value='<?php echo stripslashes($f_4);?>' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Votre choix* :</span></td><td>
<table border='0' cellspacing='0' cellpadding='0'>
<?php
	for($id=0;$id<count($list['f_5']);$id++)
	{
	if($f_5[$id]==1){$ct="checked";
	}
	print("<tr><td><input ".$ct." type='checkbox' name='f_5[$id]' value='1' border='0'></td><td><span class='txtform'>".$list[f_5][$id]."</span></td></tr>");
	unset($ct);}?>
</table>
</td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Commentaires :</span></td><td><textarea style='width:360 <?php if($errf_6==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_6' rows='6' cols='40'><?php echo $f_6?></textarea></td></tr>
<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>
<?php } ?>
</body>
</html>


D'avance merci pour votre aide Smiley smile
Modifié par Gil88 (07 Aug 2008 - 08:33)
Salut,

si on ne tient pas compte du fait que le code html généré est invalide, il me semble que le script php en lui-même devrait fonctionner...

Gil88 a écrit :
Mais dès que je mets le fichier php en ligne avec le lien pour l'ouvrir le navigateur me propose de le télécharger au lieu de m'afficher le formulaire

Arf ! Cela est plus embêtant car il semblerait que ton hébergeur ne gère tout simplement pas le PHP et ne sache pas interpréter l'extension .php... Smiley murf

A+
oui merci de ta réponse c'est quand même bizarre que quand on valide le formulaire il remet à zéro les cases à cocher. Smiley rolleyes

Pour les formulaires en HTML je me débrouille mais là avec tout ce php imbriqué je m'y perds je pensais pas que c'était aussi difficile Smiley eek

Donc en plus si je te comprends bien cela veut dire aussi que le serveur ne gère pas le Php Smiley eek

Ouais donc cela veut dire que j'ai la totale lol sinon il va falloir que je passe par du Javascript et bonjour aussi la galère Smiley rolleyes
Modifié par Gil88 (06 Aug 2008 - 20:09)
Gil88 a écrit :
c'est quand même bizarre que quand on valide le formulaire il remet à zéro les cases à cocher. Smiley rolleyes
Pas d'après mes tests... Smiley rolleyes

Gil88 a écrit :
Donc en plus si je te comprends bien cela veut dire aussi que le serveur ne gère pas le Php Smiley eek
C'est vraiment LE gros problème ! Il faudrait te renseigner auprès de ton hébergeur et peut-être penser à en changer...

Gil88 a écrit :
sinon il va falloir que je passe par du Javascript et bonjour aussi la galère Smiley rolleyes
Ah non, impossible d'envoyer un mail par Javascript. Tu es obligé de faire cela avec un langage serveur (typiquement PHP).
Bonjour

voici donc en image quand je remplis le formulaire pour test en php local

et ensuite l'erreur

L'hébergeur est Office Live de chez microsoft et il est vrai qu'ils mettent un mode de conception en ligne avec pour extension default.aspx mais nous avons opté pour un mode tiers conception du site avec nos propres outils. Donc je leur ai demandé si leur serveur où notre site est hébergé, si Php était supporté, j'attends la réponse. En plus j'ai consulté un de leur formulaire en ligne préconçu et dans la source ils mettent des fichiers php en liens donc là je ne comprends pas.


a++
Modifié par Gil88 (07 Aug 2008 - 07:28)
Re',

effectivement je venais de faire des tests avec register_globals à ON (paramétrage de PHP) et du coup je n'avais pas d'erreur. Pour corriger cela il faudrait remplacer tous les $f_5 par $_POST['f_5']

Gil88 a écrit :
L'hébergeur est Office Live de chez microsoft
Quelle drôle d'idée ! Smiley biggol

Bon, je ne vais pas lancer de troll... par contre je serais effectivement étonné qu'ils proposent PHP. Mais je suppose qu'il suffit de trouver un formulaire en asp...
Heyoan a écrit :
Re',

effectivement je venais de faire des tests avec register_globals à ON (paramétrage de PHP) et du coup je n'avais pas d'erreur. Pour corriger cela il faudrait remplacer tous les $f_5 par $_POST['f_5']

Quelle drôle d'idée ! Smiley biggol

Bon, je ne vais pas lancer de troll... par contre je serais effectivement étonné qu'ils proposent PHP. Mais je suppose qu'il suffit de trouver un formulaire en asp...


Oui je sais mais c'est pas moi qui décide, mais en fait je dirais qu'ils proposent 500 Mo d'espace gratuit et 9.99 euros par an pour le domaine sans compter que la première année est gratuite donc c'est là que la décision se prend Smiley biggrin . Oui faire le même en asp c'est sûr mais je sais pas si la personne qui s'occupe de ça sait ce langage.

Enfin bon merci de ta précieuse aide pour la correction et je vais dire à la personne concernée aussi de revoir son Php Smiley biggol parce que bon chacun son truc... Smiley lol
Modifié par Gil88 (07 Aug 2008 - 08:35)
Bonjour,

Mille excuses je relance le sujet pour éviter d'en créer un autre sur ce problème.
Heyoan, j'ai fait les rectifications que tu m'as données, et effectivement cela fonctionne avec les deux méthodes (rectifications dans la source ou mettre register_globals = on).

Mais j'ai eu la réponse de Office Live et effectivement le serveur ne gère pas le Php. Donc existe-t-il la possibilité de convertir ce fichier php en aspx ou asp ?

Car je ne vois dans le forum aucune information sur le langage serveur ASP Smiley confus
Modifié par Gil88 (08 Aug 2008 - 18:08)
Gil88 a écrit :
Donc existe-t-il la possibilité de convertir ce fichier php en aspx ou asp ?
Aucune idée Smiley hmm !


Gil88 a écrit :
Car je ne vois dans le forum aucune information sur le langage serveur ASP Smiley confus
C'est sûr que le PHP est beaucoup plus répandu que l'ASP ! Smiley cligne