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

  FORUM HardWare.fr
  Programmation
  PHP

  Passage de paramètres du JQUERY au PHP

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage de paramètres du JQUERY au PHP

n°2355709
picotar
Timeo Danaos et dona ferantes
Posté le 10-06-2020 à 13:42:32  profilanswer
 

Bonjour,
Je cherche à transférer un tableau Javascript en paramètre à un fichier PHP récupérable par la méthode GET.
Voici mon code:
HTML et JQUERY
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ajax - Load</title>
</head>
 
<body>
 <button id="action">Afficher</button><br/>
 <div id="r">Cliquez sur le bouton</div>
 
<script src="jquery.js"></script>
 
    <script>
      $(function() {
        $('#action').click(function() {
          var cr=new Array();
          cr[0]=40;
          cr[1]=60;
          z1='id='+cr;
           
          $('#r').load('progetable.php?',z1);
           });  
      });
     </script>
</body>
</html>

 
Et le fichier progetable.php
$mid=$_GET['id'];
echo $mid.'<br/>';
echo $mid[0].'<br/>';
echo $mid[1].'<br/>';
echo $mid[2].'<br/>';
echo $mid[3].'<br/>';
echo $mid[4].'<br/>';
?>

 
Questions :  
1 Pourquoi l'affichage du tableau et de ses éléments se comporte comme s'il s'agissait d'une chaîne de caractères ?
2 Comment faut-il coder le JQUERY pour pouvoir récupérer le tableau dans son intégrité ?
Merci pour votre réponse.
 

mood
Publicité
Posté le 10-06-2020 à 13:42:32  profilanswer
 

n°2355713
rufo
Pas me confondre avec Lycos!
Posté le 10-06-2020 à 14:05:13  profilanswer
 

Tu peux l'envoyer via ajax en paramètre GET au script php. Si les infos sont complexes, tu peux les mettre dans une chaîne de caractères avec séparateur (ou JSON, ou XML) encodée en base64.
Genre : Info1###Info2###Info3###... et t'encodes ça en base64. Faut pas dépasser 2Ko en GET de mémoire.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2355794
picotar
Timeo Danaos et dona ferantes
Posté le 11-06-2020 à 09:26:50  profilanswer
 

Merci pour la réponse,
Le passage de chaîne par la méthode précédemment exposée ne m'a pas posé de difficulté particulière.  
Ma question sur le passage d'un tableau reste d'actualité.
Je voudrais juste savoir comment coder l'affectation de la variable z1 pour pouvoir envoyer le tableau au PHP par la méthode GET.

n°2355821
rufo
Pas me confondre avec Lycos!
Posté le 11-06-2020 à 12:16:48  profilanswer
 

Je viens de te l'expliquer : tu sérializes en quelque sorte le contenu de ta variable js dans une chaîne de caractères js qui sera convertie en base64 et passée en GET à ton script php. Si ton tableau a 2 dim, tu utilises un séparateur différent pour les lignes et colonnes.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2355983
picotar
Timeo Danaos et dona ferantes
Posté le 13-06-2020 à 08:57:44  profilanswer
 

Oui rufo, j'avais compris la solution que tu me proposes mais elle ne répond pas exactement à ma demande. Sans doute l'avais-je mal exprimée. Je vais essayer de la reprendre :
Avec cette méthode jquery, je peux passer des paramètres au fichier PHP, qu'ils soient variable simple ou chaîne. Mais je ne réussi pas à passer un tableau entier ni à le récupérer en tant que tel. Le script que j'ai donné dans mon message initial transforme le tableau en une chaîne. Si, par exemple cr[0]=40 dans le script, je récupère cr[0]=4 et cr[1]=0 dans le PHP. Ce n'est pas tout à fait cela que j'attendais et c'est pourquoi j'ai mis en cause la façon de coder la variable z1.  z1='id='+cr;  n'est sans doute pas la bonne formulation pour ce que je veux faire. Je suppose qu'elle existe quelque part mais je n'ai pas trouvé sur le Net, d'où mon appel sur ce forum...
Voilà, c'est un peu long mais j'espère que c'est plus clair.
 

n°2355984
rufo
Pas me confondre avec Lycos!
Posté le 13-06-2020 à 09:44:13  profilanswer
 

Je ne comprends pas ce que tu dis. Si t'as une variable cr[0]=40 et que tu la passe en paramètre au script php :
partie JS (c'est un ex) :
httpRequest.open("GET", "script.php?id=" + cr[0] + "&autreVar=" + cr[1]);    
httpRequest.send();
 
Côté php, tu va récupérer dans $_GET['id'] la valeur de cr[0] et dans $_GET['autreVar'] la valeur de cr[1].
 
Au passage, faire z1 = "string" + varDeTypeArray, ça n'a aucun sens. Et donc, c'est bien ce que je te dis, tu n'as pas compris ma méthode
 
Moi, ce que je te propose, c'est en js :

Code :
  1. var sTab = "";
  2. for(var i = 0; i < MonTab.length; i++)
  3. {
  4.    if (i > 0)
  5.    {
  6.         sTab += "###";
  7.    }
  8.    sTab += MonTab[i];
  9. }
  10. // Tu encodes sTab en base64 pour éviter les pbs avant l'envoi
  11. httpRequest.open("GET", "script.php?monTab=" + sTab);    
  12. httpRequest.send();


 
Et côté php, tu fais : $MonArray = explode('###', $_GET['monTab']));
 
Evidemment, faut protéger tout ça contre les injections de balises, scripts... mais c'est l'idée de base que j'essaye de t'exposer depuis le début.


Message édité par rufo le 13-06-2020 à 09:44:46

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2355985
B4X
kebab-case
Posté le 13-06-2020 à 10:33:02  profilanswer
 

Tout ce qui passe en GET est nécessairement typé string, c'est le protocole HTTP qui veut ça, tu ne peux pas envoyer directement un tableau/booléen/objet/etc.
 
Tu dois donc forcément transformer ton tableau en une (ou plusieurs) chaîne de caractères avant de l'envoyer à PHP. Soit par une méthode dégueulasse à base de séparateurs arbitraires tel que proposé par Rufo :whistle: , soit en sérialisant avec JSON.stringify() par exemple : https://developer.mozilla.org/fr/do [...] /stringify  
 
Également, immédiatement après l'avoir encodé en JSON, il te faudra l'encoder en base64 avec btoa() https://developer.mozilla.org/fr/do [...] ase64/btoa pour standardiser les caractères spéciaux dans l'URL avant de l'envoyer à PHP.
 
Enfin, dans ton script PHP, tu réalise l'inverse pour pouvoir récupérer ton tableau donc : d'abord base64_decode() https://www.php.net/manual/fr/funct [...] decode.php puis json_decode() https://www.php.net/manual/fr/function.json-decode.php
 
[:cetrio:4]


---------------
In vanitas veritas.
n°2355986
picotar
Timeo Danaos et dona ferantes
Posté le 13-06-2020 à 10:38:11  profilanswer
 

Merci B4X pour cette mise au point.
Elle me sera utile pour mes futurs développements.

n°2355988
picotar
Timeo Danaos et dona ferantes
Posté le 13-06-2020 à 10:40:05  profilanswer
 

Décidément, Rufo, nous n'arrivons pas à nous comprendre.  
Qu'importe ! Je te remercie pour tes réponses et garde sous le coude la dernière que je pense pouvoir exploiter un jour.

n°2355996
rufo
Pas me confondre avec Lycos!
Posté le 13-06-2020 à 11:35:15  profilanswer
 

B4X a écrit :

Tout ce qui passe en GET est nécessairement typé string, c'est le protocole HTTP qui veut ça, tu ne peux pas envoyer directement un tableau/booléen/objet/etc.
 
Tu dois donc forcément transformer ton tableau en une (ou plusieurs) chaîne de caractères avant de l'envoyer à PHP. Soit par une méthode dégueulasse à base de séparateurs arbitraires tel que proposé par Rufo :whistle: , soit en sérialisant avec JSON.stringify() par exemple : https://developer.mozilla.org/fr/do [...] /stringify  
 
Également, immédiatement après l'avoir encodé en JSON, il te faudra l'encoder en base64 avec btoa() https://developer.mozilla.org/fr/do [...] ase64/btoa pour standardiser les caractères spéciaux dans l'URL avant de l'envoyer à PHP.
 
Enfin, dans ton script PHP, tu réalise l'inverse pour pouvoir récupérer ton tableau donc : d'abord base64_decode() https://www.php.net/manual/fr/funct [...] decode.php puis json_decode() https://www.php.net/manual/fr/function.json-decode.php
 
[:cetrio:4]


Tu noteras que je lui ai parlé de JSON et XML aussi. Mais celle du séparateur me paraissait la plus simple vu manifestement le niveau débutant que l'auteur du topic semble avoir (je dis sans méchanceté ou autre ;)). Le JSON ou XML me paraissait simplement plus complexe à exploiter pour lui.
On se rejoint sur l'encodage en base64 ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Passage de paramètres du JQUERY au PHP

 

Sujets relatifs
Probleme list -> apprentissage PHPDiagramme - PHP - BDD
[PHP] $_SESSION et jquery load() vs &1&[résolu] Problème jQuery
PHP Prestashop, Help please ! (règles panier)PHP PSQL Aide sur un moteur de recherche
PHP PSQL Encodage UTF8 encore et encore.....PHP Impossible de Connecter à 2 BDD PSQL
PHP : bug avec strtotime 
Plus de sujets relatifs à : Passage de paramètres du JQUERY au PHP


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