5568 sujets

Sémantique web et HTML

Salut, j'ai un problème avec un de mes formulaires, quelqu'un peut m'aider s'il vous plaît? Merci
Le problème c'est que quand on clique et qu'on veut écrire le code dans le champ code2 ou plus, ça renvoie direct au champ du "code1".
Je fais apparaître les champs "code" grâce à une boucle "for", selon les article dans le panier....
J'ai fait une page test pour que vous voyiez ce que ça donne (pas besoin d'être connecté donc).
http://mecraft.site50.net/Epicgames/Shop/test.php

/!\ De plus, en cliquant sur tabulation on peut finalement ecrire mais quand on clique sur "valider" ça vide le formulaire et on ne reçoit aucun mail.

Source :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="/Contact/contact.css" />

<?php
session_start();

        // on a demander à tout recalculer
$_SESSION["prix"] = 2;

    $name = $_SESSION["username"];
    $email = htmlentities($_POST['email']);
    $message = htmlentities($_POST['message']);
    $from = 'MECRAFT';
    $from2 = 'MECRAFT';
    $to = 'xxxgmailcom';
    $to2 = $email;
    $subject = 'MECRAFT';
    $subject2 = 'MECRAFT';
    $montant = $_SESSION["prix"];
    $human = htmlentities($_POST['human']);
    $body2 = "Ton achat sur MeCraft.\n\n\nMerci à toi $name,\nton achat s'élève à un montant de :\n$montant allopass\n\nTon Commentaire:\n $message\n\n\nA bientôt sur MeCraft !";

    $code1 = htmlentities($_POST['code1']);
    $code2 = htmlentities($_POST['code2']);
    $code3 = htmlentities($_POST['code3']);
  
			
    $body = "Pseudo: $name\nEmail: $email\nMontant:\n$montant\n\nCommentaire:\n $message\n\n
CODES:
\n$code1
\n$code2
\n$code3\n\n
";
    if ($_POST['submit']) {
    if ($name != '' && $email != '' && $montant != '') {
        if ($human == 'VERT') {
            if (mail ($to, $subject, $body, $from) && mail ($to2, $subject2, $body2, $from2)) {
?>
<section>
<p style="color:#00CC00;">
<?php
	        echo 'Ton message à été envoyé! Tu vas vite recevoir une confirmation par email.';
?>
</p>
<?php
	    } else { 
?>
<p style="color:#CC0000;">
<?php
	        echo 'Y\'a eu un problème! Ajoute le skype : staffto175'; 
?>
</p>
<?php
	    } 
	} else if ($_POST['submit'] && $human != 'VERT') {
?>
<p style="color:#CC0000;">
<?php
	    echo 'Tu as mal répondu à la question anti-spam!';
?>
</p>
<?php
	}
    } else {
?>
<p style="color:#CC0000;">
<?php
        echo 'Tu dois remplir tous les champs!!';
?>
</p>
<?php
    }
}
?>

<center><img src="/Ress/imgs/boites/panierplein.png"></center>
<hr>
<br>
<form method="post" action="test.php" style="border-right:1px;">

    <label style="color:green;"><img style="height:30px;" src="https://minotar.net/avatar/<?php echo $_SESSION["username"]; ?>/100.png"> <h2><?php echo $_SESSION["username"]; ?></h2></label>
    <label><span style="color:#FFFFFF;">Email</span></label>
    <input name="email" type="email" placeholder="exemple@mail.com"><br>
<br>

<label><span style="color:#FFFFFF;">Montant : <?php echo $_SESSION["prix"]; ?> Allopass</span>
<br>
<?php
if($_SESSION["prix"]<=10)
{
for($allo=1; $allo <= $montant; $allo++)
{
echo '<label><span style="color:#FFFFFF;">Code n°'.$allo.'</span></label>
    <input name="code'.$allo.'" placeholder="Votre code" maxlength="8"><br>';
}

}
else{
echo "Veuillez entrer vos codes dans la partie commentaire ci-dessous :";
}
?>
<br>
    <label><span style="color:#FFFFFF;">Commentaire</span></label>
    <textarea name="message" placeholder="Message"  maxlength="500"></textarea>
    
	<label><span style="color:#FFFFFF;">Quelle couleur est issue du jaune mélangé au bleu? (Anti-spam)</span></label>
    <input name="human" placeholder="ÉCRIVEZ EN MAJ" maxlength="4">
	
    <input id="submit" name="submit" type="submit" value="">

</form>

    </section>


Merci
Bonjour,

Ton session_start() est mal placé. Il faut le mettre tout en haut de ton fichier php si tu veux être sur de ne pas avoir d'erreur.

Je te conseil aussi de mettre tes balises labels comme ça :
<label for="monchamp1">Mon champ 1</label><input type="text" name="monchamp1" />


D'ailleurs je viens de voir que tu te sers mal des labels. Ils servent à indiquer l'intitulé d'un champ de formulaire. Ils ne doivent pas servir à la mise en forme d'autres élément comme ton h2.

Autre petit conseil. la balise <center> est maintenant déprécié. Il est préférable, si cela reste dans tes compétences, de favoriser la gestion de l'alignement via CSS.

Pour tes différents messages de réponses il est également pas nécessaire de rouvrir PHP pour faire un echo Smiley langue

Aussi pour voir plus facilement tes erreurs ou fautes de frappes, essai de garder une identation propre Smiley murf

Pour définir la variable de session prix à 2 ? ça modifie la variable montant plus bas.

Bon j'ai fais ce code vite fait sans le tester.
J'ai pas vérifier toutes les variables ni mis tous les paramètres mais c'est juste pour que tu comprennes la logique dans laquelle je suis par rapport à ton problème

Page formulaire
<form action="test.php" method="post">

	<h2>Ton titre</h2>
	
	<p>
		<label for="email">Email</label> <input type="email" placeholder="tonmail@siteweb.fr" />
	</p>
	<p>
		Montant : {var}
	</p>
	<?php
		if($_SESSION['prix']<=10){
			
			for($allo=1;$allo <= $montant; $allo++){
			?>
				<label for="code<?php echo $allo; ?>">Code n°<?php echo $allo; ?></label>
				<input type="text" name="code<?php echo $allo; ?>" />
				<br />
				
			<?php	
			}
			
		}
	?>
	<p>
		<label for="commentaire">Commentaire</label>
		<textarea name="commentaire"></textarea>
	</p>
	<p>
		<label for="human">Quelle couleur...</label>
		<input type="text" name="human" placeholder="..." />
	</p>
	<input type="submit" name="submit" id="submit" />

</form>


Page php
<?php 

	session_start();
	$champ_vide=0;
	
	for($i=1;$i<=$_SESSION['prix'];$i++){
		
		if(empty($_POST['code'.$i])) $champ_vide++;
		
	}
	
	$from= '*******';
	// .... tes variables de mail
	
	if($champ_vide==0){
		
		if(!empty($_POST['humain']) && $_POST['human'] == 'vert'){
			
			if(mail('..tes_parametres...'){
				
				$message[] = 'OK';
				
			}
			
		}
		
	}

?>
<!doctype html>
<html lang="fr">
	<head>
		<meta charset="utf-8"/>
		<title>Ton titre</title>
		
		<!-- CSS et compagnie -->
	</head>
	<body>
		
		<?php
		
			if($champ_vide!=0){
				echo "<p>Tu as $champ_vide champ(s) vide(s)</p>";
			}
			if(!empty($message)){
				
				foreach($message as $m){
					
					echo '<p>'.$m.'</p>';
					
				}
				
			}
		
		?>
		
	</body>
</html>