8797 sujets

Développement web côté serveur, CMS

Bonjour.

J'ai un petit souci avec un message d'erreur qui fait décaler mes éléments vers le bas. Je ne sais trop si c'est ici ou dans débutant que je devrais poster, car c'est un élément css que je dois régler.

Voilà ma page de test

Si on clique sur Send sans rien entrer, un message apparaît pour dire qu'on a oublié le pseudo (oui, je sais, je vais traduire...). L'idéal serait bien sûr de juste faire apparaître un petit quelque chose dans la case, mais c'est le script trouvé qui fait ça.

À défaut de mieux, je désire faire apparaître mon texte au-dessus de la tête du mec, mais comme vous le voyez, ça fait décaler tout vers le bas.

Quelqu'un aurait une idée?

Voici ma css actuelle:

@charset "UTF-8";
/* CSS Document */

/******** Formulaire de contact ******/

#contact {
	height:435px;
	background-image: url(../img/contact/bg_contact.jpg);
	background-repeat: no-repeat;
}
#contact_form { padding: 91px 0 0 4px;
				margin-bottom: 40px;
}

label {
	background-color:transparent;
	border:none;}

textarea {
	/*background-color:#333834; 383a38*/
	height:23px;
	width:335px;
	border-top-style: none;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
  	resize: none;
}

label {
	color:#e98a00;
	font-weight:bold;
	text-transform: uppercase;
	padding-top:10px;
	vertical-align: 50%;
	}
 

#son_message {height:60px;
vertical-align: -20%;}

#son_pseudo {
	margin-left:33px;
}

#son_courriel {
	margin-top:20px;
	margin-left:30px;
	
}
#son_telephone{
	margin-top:20px;
	margin-left:32px;
	}

#son_adresse{
	margin-top:20px;
	margin-left:13px;
	}
	
#son_adresse2{
	margin-top:20px;
	margin-left:103px;
	}
	
#son_message{
	margin-top:20px;
	margin-left:5px;
	}
	
#son_pseudo, #son_courriel, #son_message, #son_telephone, #son_adresse, #son_adresse2 {
	background-color:#323432;
	border:none;
}


input[type=submit], input[type=reset] {
	margin:18px 0 0 105px;
	color:#e98a00;
	background-color:#000;
	font-weight:bold;
	cursor:pointer;
	border:none;
	text-transform: uppercase;
 }
 
input[type=reset] {
	margin-left:50px;
}

input[type=submit]:hover, input[type=reset]:hover {
	color:#fff;

 }
input[type=submit]:active, input[type=reset]:active {

 } 
 

 


et ma partie php:

	<?php
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
    $etat = "erreur"; // On initialise notre état à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon, il reste à erreur

    // On récupère les champs du formulaire, et on arrange leur mise en forme
    if (isset($_POST["son_pseudo"])) $_POST["son_pseudo"]=trim(stripslashes($_POST["son_pseudo"])); // trim()  enlève les espaces en début et fin de chaine

    if (isset($_POST["son_courriel"])) $_POST["son_courriel"]=trim(stripslashes($_POST["son_courriel"])); // stripslashes()  retire les backslashes ==> \' devient '
	
	if (isset($_POST["son_telephone"])) $_POST["son_telephone"]=trim(stripslashes($_POST["son_telephone"])); // stripslashes()  retire les backslashes ==> \' devient '
	
	if (isset($_POST["son_adresse"])) $_POST["son_adresse"]=trim(stripslashes($_POST["son_adresse"])); // stripslashes()  retire les backslashes ==> \' devient '

	if (isset($_POST["son_adresse2"])) $_POST["son_adresse2"]=trim(stripslashes($_POST["son_adresse2"])); // stripslashes()  retire les backslashes ==> \' devient '

    if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes($_POST["son_message"]));

    // Après la mise en forme, on vérifie la validité des champs
    if (empty($_POST["son_pseudo"])) { // L'utilisateur n'a pas rempli le champ pseudo
        $erreur="Vous n'avez pas entr&eacute; votre nom..."; // On met dans erreur le message qui sera affiché
        }
        elseif (empty($_POST["son_courriel"])) { // L'utilisateur n'a pas rempli le champ email
            $erreur="Nous avons besoin de votre courriel pour vous r&eacute;pondre...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_courriel"])){ // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)
            $erreur="Votre adresse courriel n'est pas valide...";
        }
			
        elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message
            $erreur="Merci de saisir un message...";
        }
        else { // Si tous les champs sont valides, on change l'état à ok
            $etat="ok";
        }
}
else { // Sinon le formulaire n'a pas été soumis
    $etat="attente"; // On passe donc dans l'état attente
}

if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
    if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
        echo "<span style=\"color:red;margin:-60px 140px 0 0;float:right\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
    }
?>

<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
    <p style="text-align:left">
<label for="son_pseudo">NAME* :</label><!-- Intitulé du champ adresse -->
        <textarea name="son_pseudo" id="son_pseudo" cols="53" rows="1"><?php
        if (isset($_POST["son_pseudo"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_pseudo"],ENT_QUOTES);
        }
        ?> </textarea>
        <br />

 <label for="son_courriel">EMAIL* :</label><!-- Intitulé du champ adresse -->
        <textarea name="son_courriel" id="son_courriel" cols="53" rows="1"><?php
        if (isset($_POST["son_courriel"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_courriel"],ENT_QUOTES);
        }
        ?> </textarea>
        <br />

 <label for="son_telephone">PHONE :</label><!-- Intitulé du champ adresse -->
        <textarea name="son_telephone" id="son_telephone" cols="53" rows="1"><?php
        if (isset($_POST["son_telephone"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_telephone"],ENT_QUOTES);
        }
        ?> </textarea>
        <br />
        
        <label for="son_adresse">ADDRESS :</label><!-- Intitulé du champ adresse -->
        <textarea name="son_adresse" id="son_adresse" cols="53" rows="1"><?php
        if (isset($_POST["son_adresse"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_adresse"],ENT_QUOTES);
        }
        ?> </textarea>
        <br />
        
<label for="son_adresse2"></label> <!-- Intitulé du champ adresse -->
        <textarea name="son_adresse2" id="son_adresse2" cols="53" rows="1"><?php
        if (isset($_POST["son_adresse2"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_adresse2"],ENT_QUOTES);
        }
        ?> </textarea>
        <br />

        <label for="son_message">MESSAGE* :</label><!-- Intitulé du champ message -->
        <textarea name="son_message" id="son_message" cols="53" rows="4"><?php
        if (isset($_POST["son_message"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
        }
        ?> </textarea>

        <br />


        <input type="submit" name="envoyer" value="Send" /><input type="reset" name="reset" value="Reset" />
    </p>
</form>
<!-- FIN du formulaire HTML -->

<?php
}
else { // Sinon l'état est ok donc on envoie le mail
    $son_pseudo = $_POST["son_pseudo"]; // On stocke les variables récupérées du formulaire
    $son_courriel = $_POST["son_courriel"];
    $son_url = $_POST["son_url"];
    $son_telephone = $_POST["son_telephone"];
	 $son_adresse = $_POST["son_adresse"];
	  $son_adresse2 = $_POST["son_adresse2"];
    $son_message = $_POST["son_message"];

    $mon_email = "lavoiro@videotron.ca"; // Mise en forme du message que vous recevrez
    $mon_pseudo = "WYNAND RUTTEN DESIGN";
    $mon_url = "index.html";
    $msg_pour_moi = "- Son nom : $son_pseudo \n
    - Email : $son_courriel \n
	- Phone number : $son_telephone \n
	- First adress : $son_adresse \n
	- Second adress : $son_adresse2 \n
    - Message : \n $son_message \n\n";

    // Mise en forme de l'accusé réception qu'il recevra
    $accuse_pour_lui = "Bonjour $son_pseudo,\n
    Votre message nous a bien été envoyé et nous vous répondrons le plus rapidement possible.\n\n
    - Your email : $son_courriel \n
	- Your phone number : $son_telephone \n
	- Your adress : $son_adresse \n
	- Your 2nd adress : $son_adresse2 \n
    - Your message : \n $son_message \n\n
    Merci et à bientôt sur  http://academiedapprentissage.com  !";

    // Envoie du mail
    $entete = "From: " . $mon_pseudo . " <" . $mon_email . ">\n"; // On prépare l'entête du message
    $entete .= "MIME-Version: 1.0";
	

    if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) && @mail($son_courriel,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
        echo "<p style=\"color:red;text-align: left;margin: 30px\">Votre message a &eacute;t&eacute; envoy&eacute;,<br /> vous recevrez une confirmation par courriel.<br /><br />\n"; // On affiche un message de confirmation
        
    }
    else { // Sinon il y a eu une erreur lors de l'envoi
        echo "<p style=\"text-align:left\">Un problème s'est produit lors de l'envoi du message.\n";
        echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
    }
}
?>  

Modifié par largowin (29 Oct 2011 - 22:14)
Salut largowin,

      
 if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
  
echo "<div style="float:right">
<span style=\"color:red;margin:-60px 140px 0 0;float:right;z-index:1000\">".$erreur."</span><br /><br />\n
</div>\n"; // On affiche le message correspondant à l'erreur

}


me semble une solution. avec peut_être un width qui limite la taille

Pascal
Modifié par CPascal (29 Oct 2011 - 21:33)
Ok merci. Je vais regarder ça. Mais là, je suis en train de tout réorganiser parce que l'apparence est à chier sur Firefox (testé seulement Safari mac auparavant).

J'ai décidé de ne mettre partout que des textarea basé sur un modèle unique.
Merci, mais ta solution ne fonctionne pas comme on peut le voir ici.

if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
    if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
        echo "<div style="float:right"><span style=\"color:red;margin:-60px 140px 0 0;float:right;z-index:1000\">".$erreur."</span><br /><br />\n</div>\n"; // On affiche le message correspondant à l'erreur

    }
?>

Modifié par largowin (29 Oct 2011 - 23:12)