anthony428
Messages postés102Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention29 mai 2012
-
6 juil. 2009 à 17:04
anthony428
Messages postés102Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention29 mai 2012
-
16 juil. 2009 à 09:24
Bonjour,
J'ai un formulaire en html. Je souhaiterais, au moment de la validation, qu'il y ait une redirection automatique vers ce formulaire tout en conservant les champs saisis par l'utilisateur.
En ce moment, lorsque je valide le formulaire et que l'utilisateur n'a pas rempli un des champs obligatoires, j'affiche un message lui demandant de remplir tous les champs mais ce dernier se retrouve face à une page blanche. Lorsque je fais une redirection du type "location..." le formulaire est vide !!!
Je souhaiterais faire une redirection automatique sur ce formulaire tel que l'utilisateur l'a saisi.
Est ce possible en php ?
j'ai du mal à trouver la solution seul.
J'ai trouvé des solutions javascript avec un "history back" mais j'aimerais si possible une solution php.
merci de m'aider à trouver une solution à mon problème.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 6 juil. 2009 à 19:36
Salut,
Si c'est une redirection pour cause de champs non remplis le mieux est encore de ne pas soumettre le formulaire, non ?
Un peu de javacript qui contrôle que chaque champ est correct et hop le tour est joué. C'est la méthode la plus simple et la plus logique.
Si tu souhaites laisser le formulaire rempli après sa soumission regarde du côté des sessions php.
anthony428
Messages postés102Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention29 mai 2012 7 juil. 2009 à 09:09
tout d'abord, merci de m'avoir répondu si vite, c'est sympa de se sentir aidé.
En effet, je n'ai peut être pas besoin de soumettre le formulaire, je débute en php, javascript et je ne sais pas comment procéder. Je sais qu'il vaut mieux éviter le javascript lorsque cela est possible. Connait tu un script php qui pourrait me permettre de vérifier si un champ est rempli et dans le bon format (numeric, date ...) avant la soumission du formulaire ?
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 7 juil. 2009 à 22:09
Il n'y a pas de script tout fait qui puisse répondre à ta demande, car elle dépend de tes champs (input, select, quantitatif, facultatifs, etc ...)
Je sais qu'il vaut mieux éviter le javascript lorsque cela est possible. =>
C'est faux dans de nombreux cas, et ça l'est totalement dans le tien.
Le schéma que tu devrais retenir :
le client remplit le formulaire et clique sur le bouton "envoyer" => un script javascript contrôle que tous les champs sont OK :
- ils ne le sont pas => message d'erreur, on n'envoie pas le formulaire
- ils le sont => envoi vers le serveur. Le script php re contrôle que les champs sont corrects. Si ils ne le sont pas c'est probablement une tentative de hack.
Si tu veux de l'aide sur ton code n'hésite pas, poste le.
anthony428
Messages postés102Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention29 mai 2012 10 juil. 2009 à 10:29
Bonjour,
je te remercie de te pencher sur mon problème mais je n'arrive pas à comprendre comment je pourrais adapter mon code pour que celui si fonctionne comme tu me l'as indiqué.
Je post mon formulaire html ainsi que le code d'envoi du formulaire en php.
Merci de prendre le temps de m'aider à trouver la solution.
////////////////////////////////////FORMULAIRE/////////////////////////////////////////////////////
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulaire</title>
include('connectBD.php');
$query = "INSERT INTO champs (date_entretien,nom_societe,statut,adresse,bp,cp,ville,site,nom_technicien,interlocuteur,civilite,fonction,telephone,portable,e_mail) VALUES ('$date_entretien','$nom_societe','','$adresse','$bp','$cp','$ville','$site','$nom_technicien','$interlocuteur','$civilite','','$telephone','$portable','$e_mail')";
$result = mysql_query($query) or die($query . " - " . mysql_error());
if ($result==1){
echo "<script>alert("Les données ont bien été transférées")</script>";
}else{
echo "<script>alert("Il y a eu un problème lors de la transmission des données, veuillez réessayer.")</script>";
}
}else{
echo "<script>alert("veuillez remplir tous les champs obligatoires (marqués d'une *)")</script>";
}
}else{echo "<script>alert("La date d'entretien n'est pas écrite dans le bon format ou n'a pas été saisie, veuillez utiliser le calendrier pour la saisir.")</script>";}
?>
///////////////////////// FIN DU SCRIPT D ENVOI ////////////////////////////////////////////
Vous n’avez pas trouvé la réponse que vous recherchez ?
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 11 juil. 2009 à 10:21
Il faut que tu crée une fonction javascript qui sera appelée lors de la soumission du formulaire.
Voici un exemple on ne peut plus basique pour contrôler l'un des champs (à insérer avant la balise </head>) :
<script type="text/javascript">
function checkForm() {
if (document.getElementById('nom_technicien').value == '') { // le champ n'est pas rempli
alert('Veuillez remplir le champs "Par :"');
return false; // le formulaire ne sera pas soumis
}
// a répéter avec les autres champs obligatoires en contrôlant que la saisie est correcte (format num de tel, ...)
return true; // tout est OK, le formulaire sera soumis
}
</script>
L'appel de cette fonction se fait avec onsubmit :
<form id="form" name="form" method="post" enctype="multipart/form-data" action="envoiform.php" onsubmit="return checkForm();">
Une fois de plus c'est un exemple très basique, c'est juste pour te montrer la voie, il y a des millions d'exemples sur le web.
Côté PHP attention : tu ne traites pas correctement les données reçues. Une petite injection SQL et tu n'as plus de base de données.
Regarde du côté de mysql_real_escape_string.
Par ailleurs, "mysql_error()" ne doit être utilisé que pour le debug, pas en production pour éviter de fournir des renseignements importants sur la structure de ta DB.
anthony428
Messages postés102Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention29 mai 2012 15 juil. 2009 à 10:50
merci pour ces éléments de réponse.
cela va beaucoup m'aider.
Par contre, tu me fais peur avec ceci :
"Côté PHP attention : tu ne traites pas correctement les données reçues.
Une petite injection SQL et tu n'as plus de base de données."
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 15 juil. 2009 à 18:56
Comment dois je procéder alors ? =>
Je l'ai dit : "Regarde du côté de mysql_real_escape_string." :o)
Un ti tour sur la doc et hop, le problème est résolu. Tu devrais également te renseigner sur "injection SQL" pour bien comprendre de quoi il s'agit.