Réafficher les données d'un formulaire

mateomania -  
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je développe un site et j'aimerais réafficher les données d'un formulaire si le formulaire comporte une erreur.
Plus précisément, si l'utilisateur oublie de donner le nom à un nouveau client, j'affiche une boite de dialogue, puis je reviens sur le formulaire. Mais les données qu'il avait rentrés à propos de ce client ont disparus. Or j'aimerais les réafficher . J'ai testé plusieurs scripts java. Mais je n'y arrive pas.
Si quelqu'un pouvait m'aider, ce serait avec joie !
merci d'avance

19 réponses

jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
En java, ou en javascript ?
0
mateomania
 
en javascript .
Je sais qu'il est possible de faire des scripts en Ajax aussi.
Enfin peu importe le langage, du moment que ça marche. ;)
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
Heu
on peut voir comment tu appelles tes fonctions js qui vérifient les données du formulaire ?
parce que si les données que tu as entrées ne sont plus là, c'est que tu formulaire a été soumis
0
mateomania Messages postés 10 Statut Membre
 
Voici mon code tel que je l'ai présenté dans mon premier message
Voici le formulaire
<?php
  
 //Connection à MySQL 
include('connexion.php');
 
 ?>	
     
	 

	 
  <p class="titre">Suivi prospection</p>

 <form id="form1" name="form1" method="get" action="enreg1.php" > 
  <div id="CollapsiblePanel1" class="CollapsiblePanel">
    <div class="CollapsiblePanelTab" tabindex="0">COORDONNEES</div>
    <div class="CollapsiblePanelContent">
     
        <p>Nom du prospé : 
          <label>
            <input name="nom" type="text" id="nom" value="" size="40" maxlength="70" />
          </label>
        </p>
        <p>Adresse : 
          <label>
            <input name="adresse" type="text" id="adresse" size="50" maxlength="100" />
          </label>
        </p>
        <p>Code et Ville : 
          <label>
            <input type="text" name="codeville" id="codeville" />
          </label>
        </p>
        <p>Téléphone : 
          <label>
            <input type="text" name="tel" id="tel" />
          </label>
        </p>
        <p>Fax : 
          <label>
            <input type="text" name="fax" id="fax" />
          </label>
        </p>
      
      
    </div>
  </div>
  <div id="CollapsiblePanel2" class="CollapsiblePanel">
    <div class="CollapsiblePanelTab" tabindex="0">CONTACT</div>
    <div class="CollapsiblePanelContent">
      
        <p>Nom du contact :
          <label>
            <input name="nom_contact" type="text" id="nom_contact" size="40" maxlength="50" />
          </label>
        </p>
        <p>Qualité du contact : 
          <label>
            <input name="qual_contact" type="text" id="qual_contact" size="30" maxlength="40" />
          </label>
        </p>
        <p>Nombres de marques : 
          <label>
            <input type="text" name="nbrs_marques" id="nbrs_marques" />
          </label>
        </p>
        <p>Ligne directe : 
          <label>
            <input type="text" name="ligne" id="ligne" />
          </label>
        </p>
        <p>Adresse Mail : 
          <label>
            <input name="mail" type="text" id="mail" size="40" maxlength="50" />
          </label>
        </p>
        <p>Statut du contact :
          <label>
            <select name="statut" id="statut">
              <option>En ligne</option>
              <option>Occupé</option>
              <option>Absent</option>
              <option>Me rappelle</option>
              <option selected="selected"> </option>
            </select>
          </label>
        </p>
      
    </div>
  </div>
  <div id="CollapsiblePanel3" class="CollapsiblePanel">
    <div class="CollapsiblePanelTab" tabindex="0">SUIVI</div>
    <div class="CollapsiblePanelContent">
      
        <p>Ce contact a été appelé :
          <label>
            <select name="contact_appelé" id="contact_appelé">
              <option>Oui</option>
              <option selected="selected">Non</option>
            </select>
          </label>
        </p>
        <p>Le : 
          <label>
            <input type="text" name="date_appel" id="date_appel" />
          </label>
        (année/mois/jour)</p>
        <p>Résultat de l'entretien :
          <label>
            <select name="result_entre" id="result_entre">
              <option>P0:Pas de contact</option>
<option>P1:Contact en cours</option>
              <option>P2:Pas interessé</option>
              <option>P3:Interessé</option>
              <option>P4:Inscrit</option>
              <option>P5:Dépôt ou Achat</option>
              <option selected="selected"> </option>
            </select>
          </label>
        </p>
        <p>Suite à donner :
          <label>
            <select name="suite" id="suite">
              <option selected="selected"> </option>
              <option>Rappel Tel</option>
              <option>Rappel Mail</option>
              <option>Rappel Fax</option>
              <option>Rappel Courrier</option>
            </select>
          </label>
        </p>
        <p>Date du rappel : 
          <label>
            <input type="text" name="date_rappel" id="date_rappel"/>
          </label>
        (année/mois/jour)</p>
      
    </div>
  </div>
  <div id="CollapsiblePanel4" class="CollapsiblePanel">
  <div class="CollapsiblePanelTab" tabindex="0">HISTORIQUES DES APPELS</div>
    <div class="CollapsiblePanelContent"></div>
  </div>
  <label>
    <div align="center"><br />
          <input type="submit" name="enreg" id="enreg" value="Enregistrer ce prospé" />
          <script type="text/javascript">
	  
	 
<!--
var CollapsiblePanel1 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel1");
var CollapsiblePanel2 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel2", {contentIsOpen:false});
var CollapsiblePanel3 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel3", {contentIsOpen:false});
var CollapsiblePanel4 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel4", {contentIsOpen:false});
//-->
          </script>
    </div>
 </form>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mateomania Messages postés 10 Statut Membre
 
<?php

	@session_start();

	
 //déclaration variable pseudo
 $pseudo=$_SESSION['PSEUDO'];


//Connection à MySQL 
include('connexion.php');

// On récupére les valeurs 
if(isset($_GET['nom']))      
	$nom=$_GET['nom'];
else      $nom="";

if(isset($_GET['adresse']))      
	$adresse=$_GET['adresse'];
else      $adresse="";

if(isset($_GET['codeville']))      
	$codeville=$_GET['codeville'];
else      $codeville="";

//Je vous mets pas la suite, je fais pareil pour les autres données

if ($nom=="")
  
  			echo' <script language="javascript">';
            echo' alert( \'Veuillez donner un nom à ce prospé !\');';
            echo' document.location.href="./enreg.php"';
            echo' </script>'; 
	
			exit;
	
//insertion dans la BD
$requete = "INSERT INTO deposants_courriers(deposants,Adresse,CP_Ville,Téléphone,Fax,Nom_du_Contact,Qualité_du_Contact,Nb_marques_deposees,Ligne_directe, Mail,Statut_du_contact,Contact_appele,1er_appel,Codefication,Suite_a_donner,Date_Rappel) VALUES('$nom','$adresse', '$codeville', '$tel', '$fax', '$nom_contact', '$qual_contact', '$nbrs_marques', '$ligne', '$mail', '$statut', '$contact_appelé', '$date_appel', '$result_entre', '$suite', '$date_rappel')";
		
		mysql_query($requete) or die('Erreur SQL !<br />'.$requete.'<br />'.mysql_error());
	

	
			echo' <script language="javascript">';
            echo' alert( \'Ce prospé a bien été enregistré !\');';
            echo' document.location.href="./accueil.php"';
            echo' </script>'; 
    			 // On renvoie sur le formulaire d'identification
   				exit;

	
	
//fermer la connexion
	mysql_close(); 


?>
0
caccia Messages postés 96 Statut Membre 16
 
Ce que tu pourrais faire c'est mettre dans les balises value un $_SESSION['ta_valeur'].

Quand tu valides ton formulaire, tu es envoyé vers une page genre "verif.php" qui vérifie tous les champs (à la fois leur pertinence et s'ils sont bien remplis). Si tout est ok, header vers la page de ton choix sinon, header vers le formulaire en ayant pris soin de passer tous les champs corrects en $_SESSION.

Je ne sais pas si je suis très clair sur le coup...
0
mateomania Messages postés 10 Statut Membre
 
merci pour ta réponse.
En fait, je ne souhaite pas controler la pertinence ni si les champs sont bien remplis.
Je pense avoir compris ta réponse. Pourrais tu me le réexpliquer un peu plus précisément.
0
caccia Messages postés 96 Statut Membre 16
 
En haut de ta page:
<?php
session_start();
?>

plus loin dans ton code:


<form id="form1" name="form1" method="get" action="enreg1.php" >

Dans tous les champs:

<label><input type="text" name="date_appel" id="date_appel" /> </label>(année/mois/jour)</p>

Tu ajoutes un value:

<label><input type="text" name="date_appel" id="date_appel" value="$_SESSION['date_appel']" /> </label>(année/mois/jour)</p>

Alors ton formulaire envoie vers une page enreg1.php. Cette page contient des vérifications de remplissage des champs:

<?php
session_start();

extract($_POST);
//cette ligne sera contestée puisque tout le monde n'aime pas la fonction extract(). En effet si ta variable est $_POST['var1'] alors la variable $var1 est créée d'elle-même ce qui signifie une moins grande maîtrise de ce qu'il se passe

//tu passes alors toutes tes variables en variables de session:
$_SESSION['var1'] = $var1;
// et ce, pour toutes tes variables..
//tu poses alors les conditions

if($var1 == '' OR $var2 == ''){ //et ce avec toutes tes variables
header(location:'la_page_où_situe_ton_formulaire.php');
}
else{
header(location:'pagedeconfirmation.php');
}

?>

C'est juste une méthode, pas forcément la plus rigoureuse mais qui m'avait permis de pas mal progresser à l'époque où je me mettais au php...
0
mateomania Messages postés 10 Statut Membre
 
ok merci caccia,
Je vais essayer si ça marche. Je pense que oui. En tout cas, je comprends la logique.
Je vais tester
Merci beaucoup en tout cas
0
caccia Messages postés 96 Statut Membre 16
 
A ton service...

Ceci dit, si d'autres ont des méthodes qui fonctionnent et qui sont plus propres je pense que ça pourrait être pas mal... Parce que je sais que ce que je fais en php d'une façon générale est pas mal fait de bric et de broc. Ca marche, ça fait ce qu'on lui demande mais ça mériterait d'être pas mal optimisé...
0
mateomania Messages postés 10 Statut Membre
 
Bon après bien des tentatives, des trifouillages etc, je n'y arrive pas avec ta méthode.

En fait je ne souhaite poser une seule condition ! si il n'y a pas de nom ( si l'utilisateur a oublié de le rentrer) je voudrais ( comme je l'ai fait) qu'une boite de dialogue s'affiche puis me fasse revenir sur le formulaire, tout en ayant conserver les données qui avaient été enregistrées par l'utilisateur, pour ne pas avoir à retaper toutes les autres informations.

Si quelqu'un a la solution...

Merki beaucoup..
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
le plus simple c'est d'utiliser des champs cachés qui contiennent les valeurs precedemment postées et que tu recupere simplement si y'a une erreur.

Les sessions peuvent etre utilisées mais dans le cas de grosse variables ( commentaire ,texte etc..) c'est pas le pied à moins de les passer dans un tableau serializé que tu unserialize pour les récuperer
0
mateomania Messages postés 10 Statut Membre
 
euh... comment tu fais ça... ^^
0
mateomania Messages postés 10 Statut Membre
 
Personne d'autre a une solution...? svp...
Dans ce cas là, tan pis pour le user qui oublie de marquer le nom ! faudra qu'il retape tout !! ^^
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
Ben moi j'aurai traité le formulaire avant de le soumettre, en javascript, plutot que de le soumettre, puis vérifier les données ...
mais bon après tu fais comme tu veux ^^
0
caccia Messages postés 96 Statut Membre 16
 
D'autant plus qu'en Javascript tu as pas mal de code libres de droits que les mecs laissent à qui veut...
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
me revoilou.
Il est evident qu'en JS le controle de la validité des champs peut se faire, quand je parlais de champs caché c'est pour revenir en arriere et recuperer les données précedemment saisies.

Donc si tu prefère du JS voila un ptit code (je ne te met que 2 champs la suite est identique faut juste changer les nom des document)

<form id="form1" name="form1" method="get" action="enreg1.php" onsubmi="return verif_champ(); > 
<label>Nom&nbsp; :</label><input type="text" name="nom" id="nom" value="" /><br/>
<label>Pr&eacute;om&nbsp; :</label><input type="text" name="prenom" id="nom" value="" />
</form>

et dans un fichier JS (ou à la sauvage entre <head> et </head>)
tu fait ta fonction verif_champ();

function verif_champ()
{
  var nom=document.getElementById("nom").value; /*valeur du champ nom*/
 var prenom=document.getElementById("prenom").value; /*valeur du champ prenom*/
 var err=''; /*initailisation de la variable qui permet de savoir si ya une erreur*/
   if(!nom)
  {
   err=err+ 'Vous n\'avez pas remplis votre nom \r\n';
  }
 elseif(!prenom)
 {
 err=err+ 'Vous n\'avez pas remplis votre prenom \r\n';
 }
/*on verifie l'etat de err*/
  if(err=='')
  {
  return true;
  }
  else
  {
  /*ya des erreurs soit tu fait un alert soit tu marque  dans un Div avec innerHTML
  alert(err);
  return false;
 }
}
0
caccia Messages postés 96 Statut Membre 16
 
Je suis toujours réticent à l'idée d'utiliser javascript dans mes codes. Je me dis que si l'utilisateur veut désactiver l'option sur son os, rien n'est plus facile et finalement les contrôles ne se feront pas. C'est pour ça que je préfère passer par php même pour ce genre de vérifications.
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
"finalement les contrôles ne se feront pas"

ca dépend, si justement tu soumets tes formulaires avec du javascript ...
s'ils le désactivent, ca fera rien ...
XD
0