Formulaire jquery

Résolu
Bonjour,

Je ne sais pas trop comment mettre mon titre alors je l'ai appelé "formulaire jquery".
Et en plus je vais avoir du mal à vous expliquer mon problème que je n'arrive pas à résoudre j'espère que vous allez pouvoir me comprendre quand même.

Il faut que je développe un formulaire avec nom et prénom et lorsque j'ai rentré les 2 éléments en cliquant sur un bouton que je vais appelé "test homonyme" ça me liste tous les homonyme de ma BDD en jquery pour ne pas recharger la page,
sinon pas d'homonyme alors je clique sur envoyer.

Merci de m'aider un peu la-dessus je suis perdu.

40 réponses

Résumé de la discussion

Un formulaire jquery permet de saisir nom et prénom, et un bouton intitulé 'test homonyme' affiche en AJAX les homonymes présents dans la base de données sans rechargement de la page. La solution repose sur une requête AJAX via jQuery.post, où la fonction de rappel reçoit data au format JSON et où json_encode transforme le tableau PHP en JSON pour le parcourir en JavaScript. drawTab(data) affiche le tableau HTML en parcourant le tableau associatif reçu et extrait les noms et informations, et la gestion côté PHP renvoie le résultat via json_encode. D'autres échanges indiquent que l'affichage des homonymes peut être étendu pour inclure les dates de naissance et les adresses afin d'identifier d'éventuels doublons entre informations similaires.

Bobot (l’IA à votre service)
  1. Bonjour

    Merci pour tes tutos je suis à près de regarder.
    En fait je suis président d'une association de musique et je veux refaire un peux mieux un site que j'ai déjà fait.

    Merci
    1. c'est quoi l'adresse du site?
  2. salut,
    voici un cours sur le php objet : http://www.cijoint.fr/cjlink.php?file=cj201107/cijI2fkYh8.pdf
    Si t'as déjà fait de POO tu trouvera ça facile.
    Un autre avec une partie sur le PDO : http://www.cijoint.fr/cjlink.php?file=cj201107/cijSRWMirx.pdf
    C'est un projet d'étude que tu fait ou c'est pour ton propre compte?
    1. Bonjour

      Un grand merci de ton aide finalement ça fonctionne à merveille.
      Sans ton aide je n'y serai pas arrivé.
      Merci beaucoup.

      PS Je vais lancer un nouveau topic mais avant je voudrais savoir si tu peux me donner quelques idée, quelques infos sur......

      J'ai créé un site tout ce qu'il y a de plus classique.
      Et maintenant je souhaite faire un espace membre et intégrer du PHP5 avec class, PDO etc...
      Avec plusieurs membres avec différents accès pour différentes pages.
      Si tu as des tutos la_dessus car je ne sais pas par quel bout commencer.
      Merci et bon Dimanche
      1. Envoie moi un extrait de ta base de données (fais un export en sql dans phpmyadmin) , je t'ai envoyé mon adresse mail en message privé, comme ça je pourrai testé ta requete.
        Rempace le post par get dans requete.php et tape http://localhost/requete.php?nom=dupor dans un navigateur et dit moi ce que ça donne.
        1. Bonjour
          <?php
          $per_phy__nom = mysql_real_escape_string($_POST['nom']);
          $per_phy__prenom = mysql_real_escape_string($_POST['prenom']);
          
          $tableau = array();
          $tableau1 = array();
          
          $query =	"SELECT		lindy_t_per_phy.per_phy__nom,
          						lindy_t_per_phy.per_phy__prenom,
          						lindy_t_per_phy.per_phy__date_naissance,
          						lindy_t_per_phy.per_phy__num_insee,
          						lindy_t_per_phy.per_phy__uid,
          							lindy_t_adr_phy.adr_phy__adresse,
          							lindy_t_adr_phy.adr_phy__ville,
          								t1.can_com__data AS mailperso,
          								t2.can_com__data AS mobperso
          			FROM 		lindy_t_per_phy
          							LEFT JOIN lindy_t_adr_phy ON lindy_t_per_phy.per_phy__id = lindy_t_adr_phy.per_phy__id
          							LEFT JOIN lindy_t_can_com AS t1 ON ( lindy_t_per_phy.per_phy__id = t1.per_phy__id AND t1.can_com__liste_type = 8 )
          							LEFT JOIN lindy_t_can_com AS t2 ON ( lindy_t_per_phy.per_phy__id = t2.per_phy__id AND t2.can_com__liste_type = 2 )
          			WHERE		lindy_t_per_phy.per_phy__nom LIKE '$per_phy__nom%' $cond
          			ORDER BY	lindy_t_per_phy.per_phy__nom ASC,
          						lindy_t_per_phy.per_phy__prenom ASC";
          
          $resultat = mysql_query($query);
          if($resultat){
          		while($user=mysql_fetch_array($resultat,MYSQL_ASSOC)){
          			foreach($user as $cle => $valeur){
          				$tableau1[$cle]=$valeur;
          			}
          			$tableau[] = $tableau1;
          		}
          	}
          }
          else{
          	echo "Erreur : " . mysql_error();
          }
          
          if(!empty($tableau)) echo json_encode($tableau);
          
          mysql_close($connexion);
          
          1. Salut,
            Désolé j'étais occupé dernièrement.
            J'ai testé ton code et quand je tape un nom d'utilisateur qui existe il m'affiche le tableau avec l'utilisateur et quand je rajoute une lettre à se nom il se vide, il reste juste la première ligne avec les noms de colonnes.
            Donc je pense que ça vient du code php, tu peux me le montrer?
            1. Bonjour

              Excuse moi de te déranger.
              En ce qui concerne pour le rajout des lignes du tableau c'est ok j'y suis arrivé.

              Il me reste cette histoire lorsqu'on rajoute 1 lettre le tableau ne se vide pas dans l'hypothèse ou il n'y a pas de nom correspondant à cette lettre.
              Je te donne mon script si tu peux encore m'aider.
              Je te remercie

              <html>
              	<head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
              <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
              <link rel="stylesheet" type="text/css" href="style.css"/>
              
              <script type="text/javascript" charset="utf-8">
              $(document).ready(function(){
              	function drawTAb(data){
              		$("#resultat").children().remove();
              		$("#resultat").append('<table id="tableau"><tr><th colspan=2></th><th>Nom</th><th>Prénom</th><th>Date de naissance</th><th>EmailPerso</th><th>Tél.mobile</th><th>Adresse</th><th>Ville</th><th>Numéro INE</th><th>Numéro INSSE</th><th>UID</th></tr>');
              		
              		for(var user in data){
              			$("#resultat").append('<tr><td><a href="#"><img src="image/make_link.png" border="0" width="22" height="22" alt="make_link"/></a></td><td><a href=""><img src="image/info.png" border="0" width="22" height="22" alt="info"/></a></td><td>'+data[user]['per_phy__nom']+'</td><td>'+data[user]['per_phy__prenom']+'</td><td>'+data[user]['per_phy__date_naissance']+'</td><td>'+data[user]['mailperso']+'</td><td>'+data[user]['mobperso']+'</td><td>'+data[user]['adr_phy__adresse']+'</td><td>'+data[user]['adr_phy__ville']+'</td><td>'+data[user]['per_phy__ine']+'</td><td>'+data[user]['per_phy__insee']+'</td><td>'+data[user]['per_phy__uid']+'</td></tr></table>');
              		}
              	}
              
              	$("#homonyme").click(function(){
              		$.post("requete.php",{nom: $("#per_phy__nom").val(), prenom: $("#per_phy__prenom").val()},
              		function(data){drawTAb(data);},"json");
              	});
              
              	function get_homonyme(){
              	    var nom = $("#per_phy__nom").val();
              		var prenom = $("#per_phy__prenom").val();
              		if( nom.length >= 4 || (nom.length >= 1 && prenom.length >= 1) ){
              				$.post("requete.php",{ nom: $("#per_phy__nom").val() , prenom: $("#per_phy__prenom").val() },
                              function(data){drawTAb(data);},"json");
              		}
              		else {
              			$("#resultat").children().remove();
              		}
              	}
              //la fonction "bind" permet de lier une action à un événement
              //la fonction "keyup" fait son traitement à chaque siasie clavier
                 $('#per_phy__nom').bind('input paste',get_homonyme);
                 $('#per_phy__nom').bind('keyup click',get_homonyme);
                 $('#per_phy__prenom').bind('input paste',get_homonyme);
                 $('#per_phy__prenom').bind('keyup click',get_homonyme);
              });
              </script>
              
              	</head>
              		<body>
              
              <form method="post" action="" id="login_form">
              	<fieldset>
              		<legend>Chercher un nouvelle utilisateur :</legend>
              <label for="nom">Nom :</label>
              	<input type="text" style="background-color: rgb(238, 238, 238); border: 1px solid rgb(0, 153, 221);" name="per_phy__nom" id="per_phy__nom" value=""/>
              <label for="comments">Prénom :</label>
              	<input type="text" style="background-color: rgb(238, 238, 238); border: 1px solid rgb(0, 153, 221);" name="per_phy__prenom" id="per_phy__prenom" value=""/>
              	<span class="icone"><img src="image/new.png" border="0" width="21" height="21" alt="make_link" valign="middle"/></span>
              	</fieldset>
              
              <p>
              	<input name="homonyme" type="button" id="homonyme" value="Forcer le test"/></br></br>
              </p>
              
              <p>
              	<table id="resultat" border=1></table>
              </p>
              </form>
              		</body>
              </html>
              
              1. Bonjour

                Je me permet de revenir vers toi.

                Voilà je veux ajouter 1 ligne dynamiquement dans le tableau à l'endroit où je clique mais malheureusement mes lignes se rajoute à la fin du tableau.
                Peux tu m'aider aussi pour ça.

                function CreationNouvelleLigne(){ 
                 var tableau=document.getElementById("ligne"); 
                 var ligne=document.createElement("tr"); 
                 var col=document.createElement("td"); 
                
                 col.setAttribute("colspan", "12"); 
                 tableau.appendChild(ligne); 
                } 
                

                et voici mon lien
                <a href="javascript:CreationNouvelleLigne();"> 
                


                Merci beaucoup
                1. Bonjour

                  oui c'est ça pour voir si c'est pareil que ton explication par exemple j'ai...

                  dupont, j'écris dupo ça affiche mais si je rajoute par exemple un r pour la cinquième lettre le tableau reste affiché malgrès qu'il n'y a pas de "dupor

                  Je peux t'envoyer mon fichier?
                  Merci
                  1. Parce que chez moi j'ai un utilisateur avec le nom "lenon" et quand j'ecrit lenon dans le input le tableau s'affiche mais quand j'ajoute une lettre le tableau disparait.Pareil pour le prenom
                    C'est ce que tu veux? ou peut être j'ai compris ce que tu voulais dire.
                    1. Bonjour wolves'sbrother,

                      J'aurai une petite dernière chose à te demander s'il te plait.

                      Lorsque par exemple on tape 4 lettres ça affiche le tableau avec tous les noms qui commence par ses 4 première lettres.

                      Et je voudrais également si c'est possible lorsqu'on rajoute 1 lettre derrière que rien ne s'affiche si il n'existe pas de noms avec ses 5 première lettre alors que là la liste reste affiché avec les 4 première lettre.

                      Je ne sais pas si j'ai bien expliqué et c'est une nouvelle fois très sympa si tu peux me faire ça.
                      Je te remercie beaucoup.
                      1. salut troubadour,
                        C'est bizarre, t'as modifié quelque chose dans le code?
                    2. Bonjour

                      He oui j'avais fait une grosse boulette
                      c'est nickel chrome ça fonctionne à merveille

                      Merci mille fois merci
                      1. ça me renvoie cette erreur

                        Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' per_phy_' at line 14

                        j'ai mis exactement les noms de colonnes que dans ma BDD

                        c'est pour ça que ça retourne "per_phy_ etc
                        en fait c'est le début de mes noms de colonnes "per_phy__nom"

                        mais j'ai changé correctement tous mes champs.

                        mes 2 fichiers sont dans le même répertoire.
                        1. C'est bizarre parce que j'ai testé le code et ça marche.
                          T'a bien remplacer $("#result").remove(); par $("#result").children().remove();
                          Si tu l'as fait et que ça ne marche toujours pas, remplace $_POST par $_GET dans le fichier php et dans 1 navigateur tape l'url :
                          http://localhost/requete.php?nom=lenon&prenom=john
                          Si le fichier requete.php est dans un autre répertoire que WWW, ajoute son nom après localhost, et dit moi ce que ça donne.
                          1. Bonjour

                            Dis moi voir dans le WHERE le AND n'est peut-être pas bien au bon endroit?

                            Et dans le fonction get_anonyme c'est pas "var nom" au lieu de juste nom.

                            Tout me parait très très logique les requètes mais je n'arrive pas à voir pourquoi cela ne fonctionne pas.
                            Merci beaucoup
                            1. je te remercie.

                              oui j'ai bien compris y a pas de problème j'essaie dès demain matin.

                              A demain

                              Merci
                              • 1
                              • 2