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

JavaScript Discussion :

[AJAX] requete INSERT sql


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [AJAX] 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 : 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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    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 : 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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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']..

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 5
    Points
    5
    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

Discussions similaires

  1. [Toutes versions] Requete Insert SQL direct
    Par xtenseadsl dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/02/2017, 18h29
  2. [2008] Requete Insertion sql server
    Par judefei dans le forum Développement
    Réponses: 2
    Dernier message: 04/12/2013, 07h21
  3. [WD11] Requete Insertion SQL Serveur
    Par serge__g dans le forum WinDev
    Réponses: 12
    Dernier message: 03/03/2010, 09h55
  4. [AJAX] [PHP] Lourde Requête INSERT, header ou ajax
    Par speedev dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/10/2006, 11h28
  5. [SQL] requete INSERT possible?
    Par clad523 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/08/2005, 15h42

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