IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Requête SQL avec AJAX


Sujet :

AJAX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut [AJAX] Requête SQL avec AJAX
    Bonjour,

    Je cherche à vérifier si le nom saisie par un utilisateur existe déjà dans ma base de données en même temps qu'il saisie.

    Pour cela j'essaye d'utiliser ajax mais malgré toutes mes recherches j'ai un peu de mal à comprendre tous le fonctionnement et à prendre des repères.

    Voici comment j'ai commencé mon code :

    Code Html suivi de la fonction Javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    				<form action="ActionStages/EnregistrementAdherent.php" method="post" name="FormInscription">
     
    					<!-- Informations à complété -->
    					<label for="Nom">Nom :</label> <input type="text" name="Nom" id="Nom" onkeyup="VerifNomSQL()"/><br />
    					<label for="Prenom">Prénom :</label> <input type="text" name="Prenom" id="Prenom" /><br />
    </form>
     
    <script language="javascript" type="text/javascript">
    		//-------------------------------Creation instance avec Ajax-------------------------------------
    		//Objectif ==> Interroger le serveur sans recharger la page
    				function VerifNomSQL() { 
    			//1.récupération des valeurs sasies
    				var Saisie = document.FormInscription.Nom.value;
     
    			//2. On creer l'instance en intérrogeant le systeme client (Id Navigateur utilisé)
    			if (window.XMLHttpRequest)    //  Objet standard
    			{ 
    			    xhr = new XMLHttpRequest();   //  Firefox, Safari, ...
    			} 
    			else 
    			   if (window.ActiveXObject)      //  Internet Explorer
    			   {
    			      xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			   }
     
    			//3.Ouverture du fichier qui execute la requete
    			xhr.open("POST", "req.php", true);
     
    			//4. Gérer l'état de la connexion au serveur
    			//===> Si 4 = ok sinon faire....
    			xhr.onreadystatechange = function(){ // instructions de traitement de la réponse
    				if (xhr.readyState == 4) { // Reçu, OK
    					alert('conect true');
    				}
    				else { // Attendre...
    					alert('en attente');
    				}
    			};                   
    		}    
     
    </script>
    Problème ==> Je ne sais pas trop comment continuer mon code et transmettre ma variable "Saisie" pour l'utiliser dans ma requete

    Et voici la page avec ma requête en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php
     
    //
    // VERIFICATION EN LIVE DU NOM
    //
    $i = 0;
    // CONNECION SQL
    require '../param.php';
     
    // VERIFICATION
    $req = $bd->query('SELECT * FROM adherents WHERE Nom Like "%' .$_REQUEST["Saisie"].'%"');
    while ($recup = $req->fetch())
    {
    $_SESSION['RsInscrit'] = array(
        $i  => array(
            "Login"  => $recup['Login'],
            "Nom"  => $recup['Nom'],
            "Prenom"  => $recup['Prenom'],
            "Adresse" => $recup['Adresse'] . ' ' . $recup['CP'] . ' ' . $recup['Ville']  ),
     
    );
    $i = $i+1;
    }
     
    ?>

    Merci pour votre aide, je suis un peu perdue, en plus j'ai l'impression d'avoir lu plusieurs méthodes différentes et de tous mélanger.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,

    Tu as oublié de faire un xhr.send et comme tu l'envoies avec la méthode POST tu dois ajouter xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');.
    Sinon, fait attention, à chaque évènement keyup, tu va lancer une requête, pense à faire un abord sur la précédente avant de lancer une nouvelle. Recherche sur ce forum, tu y trouveras comment le faire.

    A+.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    J'ai rajouté ces éléments sur mon code javacsript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    //-------------------------------Creation instance avec Ajax-------------------------------------
    		//Objectif ==> Interroger le serveur sans recharger la page
    		function VerifNomSQL() { 
    			//1.récupération des valeurs sasies
    				var Saisie = document.FormInscription.Nom.value;
     
    			//2. On creer l'instance en intérrogeant le systeme client (Id Navigateur utilisé)
    			if (window.XMLHttpRequest)    //  Objet standard
    			{ 
    			    xhr = new XMLHttpRequest();   //  Firefox, Safari, ...
    			} 
    			else 
    			   if (window.ActiveXObject)      //  Internet Explorer
    			   {
    			      xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			   }
     
    			//3.1 Ouverture du fichier qui execute la requete
    			xhr.open("POST", "req.php", true);
     
    			//3.2 On envoie les headers, ce qui caractérise ce que l'on va envoyer a la page php, en général cela ne change pas. 
    			xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     
    			//3.3 On envoie notre variable qui contient l'info que l'on veut envoyer. 
    			xhr.send(Saisie); 
     
    			//4. Gérer l'état de la connexion au serveur
    			//===> Si 4 = ok sinon faire....
    			xhr.onreadystatechange = function(){ // instructions de traitement de la réponse
    				if (xhr.readyState == 4) { // Reçu, OK
    					alert(xhr.responseText);
    				}
    				else { // Attendre...
    					alert('en attente');
    				}
    			};                   
    		}

    Je vous ré affiche mon fichier req.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    //
    // VERIFICATION EN LIVE DU NOM
    //
    // CONNECION SQL
    require '../param.php';
     
    // VERIFICATION
    $req = $bd->query('SELECT * FROM adherents WHERE Nom Like "%' .$_REQUEST["Saisie"].'%"');
     
     
    ?>
    Problème ==> Aucun résultat ne m'est retournée, aucune des deux alertes ne se déclenche de ma fonction javascript. Je ne suis pas sûre d'avoir compris comment récupérer le résultat de ma requête...

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send("Saisie="+Saisie);
    essaye de taper seulement une caractère pour voir.

    A+.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    C'était une bibliothèque js que j'avais rajouté qui bloqué l’exécution du code.

    J'ai donc mes alertes qui se déclenche correctement, cependant ==> xhr.responseText est vide !!

    Sous php le résultat devrai pouvoir se récupérer comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $rs['Nom'];
    echo $rs['Prenom'];
    Comment récupérer ce résultat afin de l'afficher dans un div avec innertText ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 93
    Points
    93
    Par défaut
    Ok enfin compris, en faite c'est tout bête il suffit de faire afficher le résultat de la requête dans un echo !

    Sinon merci beaucoup pour l'aide, j'étais vraiment perdue au début et perturber de ne pas comprendre ces petits détails !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Requête SELECT SQL avec Ajax/Jquery
    Par didio dans le forum jQuery
    Réponses: 3
    Dernier message: 25/04/2017, 10h09
  2. Requête sql avec AJAX
    Par Amnael dans le forum AJAX
    Réponses: 1
    Dernier message: 24/01/2016, 12h53
  3. [AJAX] Afficher résultat requête SQL avec ajax
    Par Kevfou dans le forum AJAX
    Réponses: 2
    Dernier message: 01/11/2011, 16h54
  4. [AJAX] Requète SQL en utilisant du Javascript
    Par tstievet dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 31/10/2006, 10h25
  5. [AJAX] requète sql dans js
    Par cheers94wow dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 13h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo