Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1387 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [PHP/JS]Envoyer contenu d'une cellule via XMLHttpRequest

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/JS]Envoyer contenu d'une cellule via XMLHttpRequest

n°2198704
furil
Posté le 25-07-2013 à 09:45:08  profilanswer
 

Bonjour,
 
Voilà j'aimerai pouvoir poster le contenu d'une cellule d'un tableau php vers une autre page php, la solution se tournerai vers XMLHttpRequest mais je ne vois pas comment l'utiliser. J'ai un annuaire lorsque que je clique sur une cellule en particulier, le contenu de la cellule sur laquelle on a cliqué est posté puis l'utilisateur va être rediriger vers la page php correspondante(identity.php) qui va utilisé le contenu de cette cellule pour son exécution(l’exécution d'une requête SQL va prendre comme argument le POST effectué) . On a 2 fichiers, annuaire.php et identity.php, je vais mettre les parties de code concernés :
 
Annuaire.php :
partie JS

Code :
  1. <script type='text/javascript'>
  2.  //Creation Objet AJAX pour transmission de données
  3.   function getXhr()
  4.   {
  5.    var xhr = null;
  6.    if(window.XMLHttpRequest) //firefox
  7.     xhr = new XMLHttpRequest();
  8.    else if(window.ActiveXObject)
  9.    {
  10.     try{
  11.      xhr = new ActiveXObject("Msxml2.XMLHTTP" );
  12.      } catch (e) {
  13.       xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  14.      }
  15.    }
  16.    else{
  17.    alert("error" );
  18.    xhr = false;
  19.    }
  20.    return xhr;
  21.   }
  22.   /* Appel de la methode lors de la selection */
  23.   function sendToIdentity()
  24.   {
  25.    var xhr = getXhr();
  26.    //creation d'une fonction qui s'executera à chaque changement d'etat
  27.    xhr.onreadystatechange = function()
  28.    {
  29.     //readyState = Etat de l'objet utilisé exemple 4 => Prêt | status = Code réponse du serveur exemple 200 => OK
  30.     if(xhr.readyState == 4 && xhr.status == 200)
  31.     {
  32.      //reponse retournée par le serveur au format texte
  33.      leselect = xhr.responseText;
  34.      //creation d'un objet html  
  35.      document.getElementById('code').innerHTML = leselect;
  36.      var code = document.getElementById('code').innerHTML;
  37.     }
  38.    }
  39.    xhr.open("POST","identity.php",true);
  40.    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  41.    //alert(code); //verif que la bonne valeur est stockée
  42.    xhr.send(code);
  43.   }


 
Partie PHP :
 

Code :
  1. while($data=mysql_fetch_assoc($req))
  2.       {
  3.        echo '<tr align="center">';
  4.        echo '<td class="othVar">' . $data['nom'] . '</td>';
  5.        echo '<td class="othVar">' . $data['prenom'] . '</td>';
  6.        echo '<td class="othVar" id = "code" onclick="sendToIdentity('. $data['code'] .');">' . $data['code'] . '</td>';  //je veux poster $data['code']  
  7. }


 
 
identity.php ( qui va utiliser la variable qui a été posté ) :
 

Code :
  1. $requete = ("SELECT code,nom,prenom,activite
  2.     FROM personne
  3.     WHERE  code = ".$_POST['code']."" );


 
Voilà, j’espère avoir bien expliqué, merci et bonne journée :)

mood
Publicité
Posté le 25-07-2013 à 09:45:08  profilanswer
 

n°2198710
mechkurt
Posté le 25-07-2013 à 11:08:18  profilanswer
 

Oula, si tu protèges pas ton $_POST['code'] dans ta requête SQL, tu t'exposes à des piratages...
 
En moins grave tu a un ID code pour tous tes td, or les id doivent être unique au sein de ta page.
 
ligne 9 du code php je ferais plutôt un truc du genre :

Code :
  1. echo '<td class="othVar" id = "id_'. $data['code'] .'" onclick="sendToIdentity(this);">' . $data['code'] . '</td>';


 
et ta fonction JS :

Code :
  1. function sendToIdentity(DOM)
  2.   {
  3.    var data = DOM.getAttribute('id').split('_')[1];
  4.    var xhr = getXhr();
  5.    //creation d'une fonction qui s'executera à chaque changement d'etat
  6.    xhr.onreadystatechange = function()
  7.    {
  8.     //readyState = Etat de l'objet utilisé exemple 4 => Prêt | status = Code réponse du serveur exemple 200 => OK
  9.     if(xhr.readyState == 4 && xhr.status == 200)
  10.     {
  11.      //reponse retournée par le serveur au format texte
  12.      leselect = xhr.responseText;
  13.      //creation d'un objet html   
  14.      this.innerHTML = leselect;
  15.     }
  16.    }
  17.    xhr.open("POST","identity.php",true);
  18.    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  19.    //alert(code); //verif que la bonne valeur est stockée
  20.    xhr.send(data);
  21.   }


 
Vu ton niveau, tu devrais t'orienter vers une bibliotheque javascript (mootools ou jquery) qui te simplifieront énormément la vie, y compris pour la compatibilité entre les navigateurs...


---------------
D3
n°2198730
furil
Posté le 25-07-2013 à 13:56:12  profilanswer
 

Salut mechkurt,
 
Encore merci pour l'aide :)
 
Je constate que le POST est bel est bien effectué, pourrais-tu m'éclairer sur la partie de l'ouverture automatique de la page identity lors de l'envoie du POST? Si on utilise window.open() en complément de xhr.send() (...).
 

Citation :

Oula, si tu protèges pas ton $_POST['code'] dans ta requête SQL, tu t'exposes à des piratages...


 
Je suppose que tu parle des injections SQL (mysql_real_escape_string()), oui je vais mettre par les suite les contrôles(...) pour le moment je fais le coté fonctionnel :)
 

Citation :

Vu ton niveau, tu devrais t'orienter vers une bibliothèque javascript (mootools ou jquery) qui te simplifieront énormément la vie,


 
Oui, je sais j'apprends sur le tas ^^ mais je cherche à comprendre un maximum de chose et comme je ne touche au JS que depuis 3semaines, j'enchaine des cours et exercices .  
 

Citation :

y compris pour la compatibilité entre les navigateurs...


J'avoue que je cherchais à résoudre le problème sous IE avec les InnerHTML. Je ne savais pas que Jquery avait une méthode adapté déjà toute faite. J'étais partis sur les méthodes DOM lol  :pt1cable:


Message édité par furil le 25-07-2013 à 14:01:25
n°2198733
mechkurt
Posté le 25-07-2013 à 14:06:56  profilanswer
 

Nan mais si ton but c'est d'ouvrir une nouvelle fenetre, pourquoi faire un Ajax (qui sert à récupérer du contenu pour mettre à jour ta page actuelle sans la recharger) !?


---------------
D3
n°2198734
furil
Posté le 25-07-2013 à 14:14:40  profilanswer
 

Arf alors j'ai mal compris le fonctionnement  :sweat:  
 
Voilà j'avais utilisé cette même méthode pour faire communiquer plusieurs fichiers PHP entre eux afin d'alimenter des listes déroulantes liées. Je me suis dit que ça reviendrais au même, si cette fois c'était une cellule d'un tableau. C'est juste que je ne voyais pas d'autre solutions pour l'envoie du contenu de la cellule d'un fichier vers un autre vu que ce sont pas des formulaires :/  
 

n°2198735
mechkurt
Posté le 25-07-2013 à 14:17:23  profilanswer
 

Ben tu l'envoi dans l'url /ma-page.php?data=toto(en GET quoi) et tu récupères ta valeur dans PHP avec $_GET['data'] !
 
 [:al zheimer]


---------------
D3
n°2198737
furil
Posté le 25-07-2013 à 14:25:50  profilanswer
 

xhr.send(data);
windows.open("identity.php?="+data);
 
Comme ça, ça devrait fonctionner aussi non? après il y aura plus qu'à adapter le fichier cible lors de la recup de la variable.


Message édité par furil le 25-07-2013 à 14:26:20
n°2198751
mechkurt
Posté le 25-07-2013 à 15:17:18  profilanswer
 

Mais encore une fois pourquoi faire du javascript pour faire ce qu'on peut faire avec des liens basique en html ?
 
window.open ouvrira une pop-up.
 
window.location.href redirigera la fenêtre...
 
...tout comme un bête <a href="/monurl">mon lien</a> le ferait !


---------------
D3
n°2198763
furil
Posté le 25-07-2013 à 16:15:25  profilanswer
 

je viens de piger, j'ai envie de me tirer une balle ...  :pfff:  
 
Je me complique la vie pour rien ...  :pfff:  
 
Merci


Message édité par furil le 25-07-2013 à 16:16:01

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [PHP/JS]Envoyer contenu d'une cellule via XMLHttpRequest

 

Sujets relatifs
Probleme connexion PHPremplir un tableau HTML avec des variables JS
EMPLOI - Développeur PHP H/F - CDI - Tours[PHP/JS]Passage de valeurs php vers une fonction JS
VBA Excel 2010: Lancer un fichier .bat / copier TOUT contenu d'1 .xtxEnvoyer des alertes aux ordinateurs d'un réseau local en vba
PHP : AUTO-COMPLETION[Résolu][PHP]récupérer tous les mercredis d'une période donnée
[VBA] mise à jour automatique d'une cellule 
Plus de sujets relatifs à : [PHP/JS]Envoyer contenu d'une cellule via XMLHttpRequest


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR