Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks
Bibliothèques & Frameworks Forum d'entraide sur les frameworks et bibliothèques JavaScript (jQuery, Mootools, Prototype, Script.aculo.us, etc.). Avant de poster : Cours Frameworks JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2010, 14h32   #1
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Par défaut Es-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 :
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
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 20h39   #2
Membre actif
 
Avatar de FrankOVD
 
Inscription : juin 2005
Messages : 407
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 407
Points : 182
Points : 182
Envoyer un message via MSN à FrankOVD
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 :
"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.
__________________
http://www.overdrunk.net

Pensez à la balise
FrankOVD est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web