8791 sujets

Développement web côté serveur, CMS

Bonjour !

J'ai récemment décidé de faire un site web, j'étais parti pour faire quelque-chose de plutôt simple, sans php mais j'ai finalement pris l'initiative de me lancer dans le grand vide de la programmation...

C'est ma première donc je n'y connais vraiment pas grand chose, j'ai récupéré un formulaire sur internet que j'ai commencé à modifier (mise en page Html/Css et un peu le code Php)

J'aimerais qu'une fois le message envoyé le formulaire ne disparaisse pas,
et qu'il se re-affiche vide avec en haut "message envoyé".
J'imagine que ça doit se faire avec "Echo" mais je ne trouve pas comment faire.



Merci de votre aide =)

Voici le site :
www.deezine.fr

Et voilà le code PHP :
<!DOCTYPE html>
<?php
$color_font_warn="#ffffff";
$color_form_warn="#af1e13";
if(isset($_POST['submit'])){
	$erreur="";
	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);
			}
		}
	}
	$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
	$f_2=strip_tags(trim($f_2));
	// Verification des champs
	if(strlen($f_1)<2){
		$erreur.="<span class='txterror'>Le champ &laquo; Nom/prenom &raquo; est vide ou incomplet.</span><br>";
		$errf_1=1;
	}
	if(strlen($f_2)<2){
		$erreur.="<span class='txterror'>Le champ &laquo; E-mail &raquo; est vide ou incomplet.</span><br>";
		$errf_2=1;
	}else{
		if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
		'@'.
		'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
		'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
		$f_2)){
			$erreur.="<span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span><br>";
			$errf_2=1;
		}
	}
	if(strlen($f_3)<2){
		$erreur.="<span class='txterror'>Le champ &laquo; Message &raquo; est vide ou incomplet.</span><br>";
		$errf_3=1;
	}
	if($erreur==""){
		// Création du message
		$titre="Message de votre site";
		$tete="From:Deezine.fr\n";
		$corps.="Nom/prenom : ".$f_1."\n";
		$corps.="E-mail : ".$f_2."\n";
		$corps.="Message : ".$f_3."\n";
		if(mail("mail@live.com", $titre, stripslashes($corps), $tete)){
			$ok_mail="true";
		}else{
			$erreur.="<span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span><br>";
		}
	}
}
?>
<html>
<head>
	<style type="text/css"title="Style"media="screen"> @import "style.css";</style> 
	<script src="http://code.jquery.com/jquery-latest.js"></script>
	<script src="slide.js" type="text/javascript" ></script>
</head>
<body>
<div id="header">
</div>
<div id="center">
	<div id="b1">
		<span id="me">
		</span>
	</div>
	<div id="p1">
	</div>
  
	<div id="b2">
		<span id="wk">
		</span>
	</div>
	<div id="p2">
	</div>

	<div id="b3">
		<span id="ct">
		</span>
	</div>
	<div id="p3">
		<div id="cf">
		
				<? if($ok_mail=="true"){ ?><span class='txtform'>Message envoyé !<br></span>
		
		<? }else{ ?>
		
		<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>

				<? if($erreur){ ?><span class='txterror'>&nbsp;ERREUR, votre message n'a pas été transmis<br></span><?echo$erreur?><? } ?>
<input type='text' style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' title="Nom/prénom" value='<?echo stripslashes($f_1);?>'>
<input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' title="E-mail" value='<?echo stripslashes($f_2);?>'>
<textarea style='width:360 <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' rows='6' title="Message" ><?echo$f_3?></textarea>
				<div id="st">
				<input type='submit' name='submit' value='' class='submit'>
				</div>
		</form>
		<? } ?>
		</div>
		<div id="ml">
		</div>
		<div id="pe">
		</div>
	</div>
	<div id="f3">
		<div id="footer">
			Deezine.fr
		</div>
	</div>
</div>
</body>
</html>

Modifié par lithiumsound (11 Jun 2012 - 17:20)
Salut,

Tu a juste à enlever le le bloc else, de cette manière ton form apparîtra tous le temps


<?php
 if($ok_mail=="true")
{ 
?>
<span class='txtform'>Message envoyé !<br></span>
<? 
} 
?>
<form action='<?php echo $PHP_SELF ?>' method='post' name='Form'>
<?php
if($erreur)
{ 
?>
<span class='txterror'>&nbsp;ERREUR, votre message n'a pas été transmis<br></span>
<?php
 echo $erreur
} 
?>
<input type='text' style='width:200; <?php if($errf_1==1){print("background-color: ".$color_form_warn."color: ".$color_font_warn);} ?>;' name='f_1' title="Nom/prénom" value='<?echo stripslashes($f_1); ?>'>
<input type='text' style='width:200 <?php if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' title="E-mail" value='<?php echo stripslashes($f_2); ?>'>
<textarea style='width:360 <?php if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' rows='6' title="Message" ><?php echo$f_3?></textarea>
				<div id="st">
				<input type='submit' name='submit' value='' class='submit'>
				</div>
</form>


évite aussi les short tags (<?) et les patés de code, tu évitera pas mal de problèmes
Modifié par JJK801 (11 Jun 2012 - 17:33)
Avec le code que tu m'as donné j'ai une erreur ligne 111 :
Parse error: syntax error, unexpected '}', expecting ',' or ';' in /homepages/16/d409450574/htdocs/index.php on line 111



<div id="cf">
		
<?php
 if($ok_mail=="true")
{ 
?>
<span class='txtform'>Message envoyé !<br></span>
<? 
} 
?>
<form action='<?php echo $PHP_SELF ?>' method='post' name='Form'>
<?php
if($erreur)
{ 
?>
<span class='txterror'>&nbsp;ERREUR, votre message n'a pas été transmis<br></span>
<?php
 echo $erreur
}
?>
<input type='text' style='width:200; <?php if($errf_1==1){print("background-color: ".$color_form_warn."color: ".$color_font_warn);} ?>;' name='f_1' title="Nom/prénom" value='<?echo stripslashes($f_1); ?>'>
<input type='text' style='width:200 <?php if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' title="E-mail" value='<?php echo stripslashes($f_2); ?>'>
<textarea style='width:360 <?php if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' rows='6' title="Message" ><?php echo$f_3?></textarea>
				<div id="st">
				<input type='submit' name='submit' value='' class='submit'>
				</div>
</form>
		<? } ?>
		</div>
Toujours la même erreur :\
Parse error: syntax error, unexpected '}', expecting ',' or ';' in /homepages/16/d409450574/htdocs/index.php on line 111
Tiens, voila ton script corrigé pour le HTML et le PHP:


<?php
if($ok_mail=="true")
{ 
?>
<span class="txtform">Message envoyé !<br></span>
<?php
}
?>
<form action="<?php echo $PHP_SELF; ?>" method="post" name="Form">
<?php
if($erreur)
{ 
?>
  <span class="txterror">&nbsp;ERREUR, votre message n'a pas été transmis</span><br />
<?php
 echo $erreur;
}
?>
  <input type="text" style="width:200; <?php echo ( ($errf_1==1) ? "background-color: $color_form_warn; color: $color_font_warn;" : "" ); ?>" name="f_1" title="Nom/prénom" value="<?php echo stripslashes($f_1); ?>" />
  <input type="text" style="width:200; <?php echo ( ($errf_2==1) ? "background-color: $color_form_warn; color: $color_font_warn;" : "" ); ?>" name="f_2" title="E-mail" value="<?php echo stripslashes($f_2); ?>" />
  <textarea style="width:360px; <?php echo ( ($errf_3==1) ? "background-color: $color_form_warn; color: $color_font_warn;" : "" ); ?>" name="f_3" rows="6" title="Message" ><?php echo $f_3; ?></textarea>
  <div id="st">
    <input type="submit" name="submit" value="" class="submit">
  </div>
</form>


Pour ce qui est des bonnes pratiques, les doubles quotes sont a privilégier pour les valeurs d'attribut et éviter les short tags php comme dit plus haut
lithiumsound a écrit :
comment faire pour éviter les short tags ?


Le short open tag (short tag ça n'existe pas et ça ne veut rien dire) c'est quand tu ouvre ton code PHP avec <? au lieu de <?php.

Par contre si tu veux juste faire un echo dans un template html tu peux faire <?=$ma_variable?> et c'est pas un short open tag.

Je récapitule :

<?php et <?= pas short open tag
<? short open tag (à bannir).
Modifié par jb_gfx (12 Jun 2012 - 00:03)
lithiumsound a écrit :
Merci beaucoup JJK801 !

tu parles des ' à remplacer par des &quot; ?

comment faire pour éviter les short tags ?


le tag normale c'est <?php et le short tag <?, il vaut mieu utiliser le premier

et pour les quotes, oui c'est ça Smiley cligne
Modifié par JJK801 (11 Jun 2012 - 20:53)
D'accord =)

Merci pour vos conseils, je vais essayer de d’améliorer/nettoyer mon code et je posterais le résultat, ça pourra servir aux autres.
Bonjour !

Dans l'ensemble tout marche correctement grâce à vous, les messages sont envoyés correctement, les erreurs s'affichent correctement.

J'ai voulu rajouter une fonctions avec onclick et onblur pour indiquer a quoi correspondent les champs Nom/Mail/Message.

ça marche sauf qu'au chargement de la page les champs restent vide tant qu'on ne clique pas dessus.

après avoir cliqué ça marche très bien ça réapparaît quand on quitte le champ et disparaît quand on clique a nouveau sur le champ


Voici le code :
 <input type="text" style="width:200; <?php echo ( ($errf_1==1) ? "background-color: $color_form_warn; color: $color_font_warn;" : "" ); ?>" name="f_1" onclick="if(this.value=='Nom/prénom') this.value=''; " onblur="if(this.value=='') this.value='Nom/prénom';" value="<?php echo stripslashes($f_1); ?>" /><br>
  <input type="text" style="width:200; <?php echo ( ($errf_2==1) ? "background-color: $color_form_warn; color: $color_font_warn;" : "" ); ?>" name="f_2" onclick="if(this.value=='E-mail') this.value=''; " onblur="if(this.value=='') this.value='E-mail';" value="<?php echo stripslashes($f_2); ?>" /><br>
  <textarea style="width:380px; <?php echo ( ($errf_3==1) ? "background-color: $color_form_warn; color: $color_font_warn;" : "" ); ?>" name="f_3" rows="6" onclick="if(this.value=='Message') this.value=''; " onblur="if(this.value=='') this.value='Message';" ><?php echo $f_3; ?></textarea><br>
  <div id="st">
    <input type="submit" name="submit" value="" class="submit">

Et l'adresse du site pour l'exemple :
www.deezine.fr
Modifié par lithiumsound (16 Jun 2012 - 13:09)