Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ 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 03/05/2008, 15h37   #1
Invité de passage
 
Inscription : mai 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 7
Points : 2
Points : 2
Par défaut requete INSERT sql

J'ai effectué un drag&drop entre 2 colonnes.
http://www.dhtmlgoodies.com/scripts/...ag-drop-2.html

J'utilise ma BDD pour alimenter la colonne de gauche d'éléments.( ce sont des noms d'ordinateur dans mon cas dans les petites boites blanches à la place des noms d'animaux)

Je voudrais, quand je clique sur un bouton , sauvegarder les noms des éléments qui sont dans la colonne de droite dans une table de ma BDD.

J'arrive grâce à la DOM de javascript à parcourir la colonne de droite qui est une DIV et à récupérer les noms d'ordinateurs mais je ne sais pas comment les enregistrer dans ma BDD.

Premiere Question ? faut-il que j'utilise de l'ajax, je suppose que oui car je vais effectuer une requete d'insertion.

Est-ce qu'une fonction comme cela se rapproche de ce que je souhaite faire ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function save()
{	
	var xhr = getXhr()
 
	xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4)
         {
              if(xhr.status  == 200) 
                 document.getElementById('res').innerHTML= xhr.responseText; 
         }
    }; 
 
 
	var nombre = document.getElementById("dropContent").childNodes.length;
	for ( var i = 0; i<nombre ; i++){
		xhr.open("POST","checkpc2.php",true);
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		premier = document.getElementById("dropContent").childNodes[i].firstChild.data;
		xhr.send("ordi="+premier);
 	}
}
la variable "premier" correspond au nom de l'ordinateur que je veux sauvegarder

checkpc2.php correspond au fichier php où j'effectue la requete d'insertion:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
	if(isset($_POST["save"]))
	{
		include('../connect.php');
 
 
		$reponse=mysql_query("INSERT INTO pccheck SET NomOrdinateur='$_POST[ordi]'")or die(mysql_error()); 
		mysql_close();
 
 
	}
 
?>
Mon problème est que je ne sais pas si déjà j'écris bien le code de ce que je souhaite faire, et je n'arrive pas à effectuer d'insertion, je dois pas arriver à accéder au fichier checkpc2.php à mon avis.

merci de votre aide.
icarus54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2008, 19h14   #2
Membre éprouvé
 
Avatar de d-Rek
 
Développeur Web
Inscription : janvier 2007
Messages : 438
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2007
Messages : 438
Points : 400
Points : 400
Tu fais un xhr.send("ordi="+premier); à checkpc2.php
Ton passage de donnée est donc réussi.
Seulement, tu peux pas utiliser l'objet XHR autant de fois comme ça, il se "consumme".

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function save(){
	var xhr = getXhr()
	xhr.onreadystatechange = function(){
		if(xhr.readyState==4 && xhr.status==200){
			document.getElementById('res').innerHTML=xhr.responseText;
		}
	}
 
	var nombre = document.getElementById("dropContent").childNodes.length;
	for(var i=0; i<nombre; i++){
		premier+=document.getElementById("dropContent").childNodes[i].firstChild.data';';
 	}
	xhr.open("POST","checkpc2.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("ordi="+premier);
}
Voilà, j'économise en envoyant qu'une seule requête XHR, j'ai concaténé les données via un séparateur ";"
A toi, côté PHP, de faire un split sur $_POST['ordi']

Code :
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_POST['ordi'])){
	include('../connect.php');
	$temp=split(';', $_POST['ordi']); // ici tu devrais faire un htmlentities sur $_POST['ordi'] histoire de ne pas te faire SQL-Injecté
	for($i=0; $i<count($temp); $i++){
		$reponse=mysql_query("INSERT INTO pccheck SET NomOrdinateur='".$temp[$i]."'")or die(mysql_error());
	}
	mysql_close();
}
?>
Sinon je comprend vraiment pas pourquoi dans ton fichier PHP, tu testes $_POST['save']..
__________________
Mon blog
d-Rek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2008, 20h57   #3
Invité de passage
 
Inscription : mai 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 7
Points : 2
Points : 2
Par défaut Ca avance...faut faire l'autre colonne

ce que je souhaite faire :
http://www.dhtmlgoodies.com/scripts/...ag-drop-2.html

Nikel d-rek, j'ai fais ce que tu m'as dit et ça fonctionne, je retrouve bien les noms des PC dans ma table.

Cependant j'ai un problème, car ce que je fais me permet d'insérer les noms des PC qui se trouvent dans la DIV "dropContent" qui est la colonne de gauche...ce qui n'est pas le but final car je veux ceux de la colonne de droite mais je voulais déjà tester le code pour voir si j'arrivais à faire de l'ajax et donc à sauvegarder les noms d'ordinateurs.

Maintenant que ça marche je m'étais dis que dès que je changerais par dropContent2 qui correspond à la DIV de la colonne de droite ça marcherait toujours !!Mais NON !! lol
Quand je déplace mes éléments dans la colonnes de droite et que je regarde le code source et ben dropContent2 est toujours vide alors que j'ai bien des éléments dedans ! Ce doit être la faute du drag & drop qui en fait ne modifie rien à la page... Mais comment je peux récupérer les éléments dans la colonne droite ? ou alors faudrait ke j'exécute le script dès que je lâche l'élément dans la colonne de droite ?

Que faire ? Faudrait peut être que je mette ma fonction dans une autre fonction du drag and drop ?
Vous pouvez télécharger l'exemple de drag & drop ici :
http://www.dhtmlgoodies.com/index.ht...ag-drop-custom

merci
icarus54 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 00h36.


 
 
 
 
Partenaires

Hébergement Web