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] Est-ce possible de faire une requette MYSQL via javascript


Sujet :

AJAX

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut [AJAX] Est-ce possible de faire une requette MYSQL via javascript
    Bonjour à tous,

    J'ai une fonction (c'est de l'AJAX, mais ma question est plus orienté javascript)
    qui lance une fonction ajax. Quand on est en mode readystate il execute une fonction javascript deroulant_opem.
    A ce moment là, j'ai besoin de savoir le dernier enregistrement de la base de donnée.
    J'ai donc ajouté le code qui se trouve juste en dessous de la fonction deroulant_open();

    Dans mon developpement, quand je clique sur le boutton "ajouter clients" il va appelle a la fonction update_client(val) et val aura pour valeur "add".
    Donc quand je clique sur le boutton "ajouter client", j'ai une requette MYSQL qui va chercher la valeur du dernier enregistrement.

    Une fois le secipt terminé, j'ai un nouveau cient dans ma base de donné, et si j'ajoute encore un client, la variable last_entry devrait me retourner une valeur plus grande (de +1) que la précdédente insertion, puisque c'est une autre nouvelle insertion.


    Le problème c'est que last_entry me retourne toujours le même nombre, même s'il y a eu de nouvelle entrée.
    Pour pas que ce problème se produit, je dois rafréchir ma page..

    Alors je me suis demandé si le requete MYSQL est exécuté au chargement de la page uniquement, et pas à l'appelle de la fonction.

    Comment pourrais-je faire alors pour que la last_entry correspond toujours au dernier enregistrement réel effectué dans la base de donnée?
    Code JAVASCRIPT : 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
     
    function update_client(val){
    		//http://siddh.developpez.com/articles/ajax/
    		var xhr = getXhr(); // INSTENTIEE IN js/getXhr.js
    		// On défini ce qu'on va faire quand on aura la réponse
    		xhr.onreadystatechange = function(){
    			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    			if(xhr.readyState == 4 && xhr.status == 200){
    				leselect = xhr.responseText;
    				// On se sert de innerHTML pour rajouter les options a la liste
    				document.getElementById('error-display').innerHTML = leselect;
    				deroulant_open();
    				if(val=="add"){
    								last_entry = <?php 
                                                                    include($root.'sql/db_connect.php');
                                                                    $sql_last = "SELECT max(id_clients) FROM tb_clients";
                                                                    $query_last = mysql_query($sql_last)or die(mysql_error());
                                                                    $data_last=mysql_fetch_assoc($query_last);
                                                                    echo $data_last['max(id_clients)'];
                                                                    ?>;
    					//last_entry=last_entry+1;
    					$("#id_client").val(last_entry);
    					$("span#client_id").html(last_entry);
    					alert(last_entry);
     
    				}
    			}else{
    			}
    		}
     
    [.. suite de la du code]

    Merci pour vos lumières

  2. #2
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    Deux questions :

    1. Est-ce que ta requête Ajax d'ajout ne pourrait pas recevoir en réponse l'identifiant de la nouvelle ligne ainsi créée? (mysql_insert_id() en PHP)
    2. Est-ce que tes options de cache Ajax sont à false? Si tu n'utilises pas de librairie particulière, tu peux ajouter un paramètre GET aléatoire pour éviter le chargement de résultats chargés en cache.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "moncode.php?parametre1=mavaleur&sid="+Math.random();
    J'ai expérimenté, lors de requêtes INSERT successives que les informations retournées par des requêtes SELECT se référant aux derniers éléments ajoutés en cours de processus ne retournent pas toujours le résultat attendu, on dirait que MySQL approuve l'exécution de la requête INSERT avant de l'exécuter réellement ou quelque chose du genre. Dans le cas de multiples insertions dont le contenu est déterminé par le dernier enregistrement ajouté, je conseille de tenter de prévoir le résultat plutôt que de faire une requête SELECT entre chaque requête INSERT, le résultat au final risque d'être plus exact.

Discussions similaires

  1. Est-il possible de faire une requête hiérarchique ?
    Par Christophe Charron dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 21/03/2007, 14h32
  2. Réponses: 2
    Dernier message: 17/08/2006, 14h50
  3. [C#] Est-il possible de faire une référence sans recopie ?
    Par AiSpirit dans le forum EDI/Outils
    Réponses: 8
    Dernier message: 17/07/2006, 09h56
  4. Réponses: 7
    Dernier message: 09/05/2006, 11h30
  5. Est il possible de faire une fusion
    Par boy569 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 07/02/2006, 13h58

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