[RESOLU] Récupérer le contenu d'une div dans une variable PHP

Eléphant du PHP | 161 Messages

22 janv. 2016, 17:53

Bonjour à tous et à toutes,

Mon problème ne peut être plus explicite que l'objet de ce sujet.
Par du javascript et du Jquery, une chaîne de caractère est inséré dans une div, et j'aimerai récupérer le contenu dans une variable PHP.

Voici mon code :

La page traitement.php

Code : Tout sélectionner

<?php if(isset($_POST['checkboxDossierPath'])) { ?> <div id="lucie_title"> <h1 id="lucie_title_modif">ATTRIBUTS DES FICHIERS</h1> <hr/> <p id="lucie_instructor">Séléctionnez les nouveaux attributs pour les dossiers séléctionnés :</p> </div> <div id="lucie_droits"> <form id="lucie_attributionDroits" name="lucie_attributionDroits" action="#" method="POST"/> <fieldset class="lucie_fieldset_proprio"> <legend class="lucie_legend"> Permissions du propriétaire </legend> <ul class="lucie_droits_dossiers"> <li><input type="checkbox" name="checkbox_droit" id="checkboxLire_proprio" value="4"/>Lire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxEcrire_proprio" value="2"/>Écrire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxExecuter_proprio" value="1"/>Éxécuter</li> </ul> </fieldset> <fieldset class="lucie_fieldset_groupe"> <legend class="lucie_legend"> Permissions de groupe </legend> <ul class="lucie_droits_dossiers"> <li><input type="checkbox" name="checkbox_droit" id="checkboxLire_groupe" value="4"/>Lire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxEcrire_groupe" value="2"/>Écrire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxExecuter_groupe" value="1"/>Éxécuter</li> </ul> </fieldset> <fieldset class="lucie_fieldset_public"> <legend class="lucie_legend"> Permissions publiques </legend> <ul class="lucie_droits_dossiers"> <li><input type="checkbox" name="checkbox_droit" id="checkboxLire_public" value="4"/>Lire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxEcrire_public" value="2"/>Écrire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxExecuter_public" value="1"/>Éxécuter</li> </ul> </fieldset> </form> Valeur numérique : <div id="lucie_valeur_num"></div> <input type="button" name="lucie_valider_attributs" value="ATTRIBUER" id="lucie_valider_attributs"/> </div> <?php echo '<div id="lucie_foreachDossier">'; include 'js/numerisation.js'; //echo $_POST['valNum']; foreach($_POST['checkboxDossierPath'] as $valeur) { //Il faudra peut-être utiliser ce code à un moment $mode =0755;chmod("$valeur", octdec($mode)); On précise que $mode sera spécifier en fonction des choix de l'utilisateur echo "La checkbox $valeur a été cochée<br>"; } echo '</div>'; } else { echo '<h1 id="lucie_title_error">ATTENTION !</h1><hr/><p id="lucie_errorDossier">Veuillez tout d\'abord sélectionner les dossiers auxquels modifier les attributs.</p>'; } ?>
Et mon code JS :

Code : Tout sélectionner

<script> $(function numerisation(){ $('#lucie_valider_attributs').click(function(){ // Ce tableau javascript va stocker les valeurs des checkbox var checkbox_val_proprio = []; var checkbox_val_groupe = []; var checkbox_val_public = []; // Parcours de toutes les checkbox checkées avec les différentes classes $("#checkboxLire_proprio:checked, #checkboxEcrire_proprio:checked, #checkboxExecuter_proprio:checked").each(function(){ checkbox_val_proprio.push(parseInt($(this).val())); }); $("#checkboxLire_groupe:checked, #checkboxEcrire_groupe:checked, #checkboxExecuter_groupe:checked").each(function(){ checkbox_val_groupe.push(parseInt($(this).val())); }); $("#checkboxLire_public:checked, #checkboxEcrire_public:checked, #checkboxExecuter_public:checked").each(function(){ checkbox_val_public.push(parseInt($(this).val())); }); //Les lignes de code "console.log" permettent de vérifier les valeurs du tableau (dans la console) //console.log(checkbox_val_proprio); //console.log(checkbox_val_groupe); //console.log(checkbox_val_public); //Ici, on va additionner les valeurs qui auront été placées dans le tableau checkbox_val_proprio. var tableauArray1 = checkbox_val_proprio.reduce(function(a, b) { return a + b; }); //console.log(tableauArray1); //On peut le vérifier le total grâce à la console. Si admettons "Lire", "Écrire", et "Éxécuter" ont été cochées, alors la console renverra 7 var tableauArray2 = checkbox_val_groupe.reduce(function(a, b) { return a + b; }); //console.log(tableauArray2); var tableauArray3 = checkbox_val_public.reduce(function(a, b) { return a + b; }); //console.log(tableauArray3); var valeurNumerique = String(tableauArray1)+String(tableauArray2)+String(tableauArray3); //console.log(valeurNumerique); $("#lucie_valeur_num").html(valeurNumerique); //$.post("../wp-content/plugins/DWPSecurity/traitement.php",{'valNum':valeurNumerique}, function(data){$("#lucie_valeur_num").html('Valeur numérique : '+valeurNumerique);}); }); }); </script>
Je n'ai aucune idée de comment faire. Aidez-moi s'il vous plaît .....

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 janv. 2016, 18:51

Bonjour,

Le php s'exécute côté serveur, tandis que le javascript s'exécute côté client. Autrement dit, une fois la page générée par php, il n'est pas possible que javascript puisse transmettre des données à php autrement que par un nouvel appel au serveur.

Le plus simple pour faire cela sans recharger la page est d'utiliser les méthodes ajax te permettant d'appeler le serveur en javascript et de lui transmettre les variables js que tu souhaites en get ou post. La réponse du serveur pourra alors te permettre d'actualiser les informations affichées ou autre...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 161 Messages

23 janv. 2016, 10:31

Je formule la chose autrement : J'ai lu qu'il était possible de générer le contenu d'une valeur d'un input hidden, grâce à du Jquery (et AJAX puisqu'on en parle), mais le problème c'est que je ne sais pas comment récupérer la valeur d'un input hidden une fois la valeur généré par du PHP car si c'est dans la même page ça pose problème, puisque le PHP s’exécute avant le JS...

Mammouth du PHP | 2703 Messages

23 janv. 2016, 19:04

mais le problème c'est que je ne sais pas comment récupérer la valeur d'un input hidden
http://stackoverflow.com/questions/3091 ... eld-jquery

Eléphant du PHP | 161 Messages

25 janv. 2016, 10:44

Je sais attribuer une valeur, ce que je voudrais, c'est récupérer la valeur en php, une fois celle-ci générée ^^'

Eléphant du PHP | 161 Messages

25 janv. 2016, 10:58

Autrement j'ai procédé comme suivant :

Code : Tout sélectionner

<?php if(isset($_POST['checkboxDossierPath'])) { ?> <div id="lucie_title"> <h1 id="lucie_title_modif">ATTRIBUTS DES FICHIERS</h1> <hr/> <p id="lucie_instructor">Séléctionnez les nouveaux attributs pour les dossiers séléctionnés :</p> </div> <div id="lucie_droits"> <form id="lucie_attributionDroits" name="lucie_attributionDroits" action="#" method="POST"/> <fieldset class="lucie_fieldset_proprio"> <legend class="lucie_legend"> Permissions du propriétaire </legend> <ul class="lucie_droits_dossiers"> <li><input type="checkbox" name="checkbox_droit" id="checkboxLire_proprio" value="4"/>Lire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxEcrire_proprio" value="2"/>Écrire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxExecuter_proprio" value="1"/>Éxécuter</li> </ul> </fieldset> <fieldset class="lucie_fieldset_groupe"> <legend class="lucie_legend"> Permissions de groupe </legend> <ul class="lucie_droits_dossiers"> <li><input type="checkbox" name="checkbox_droit" id="checkboxLire_groupe" value="4"/>Lire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxEcrire_groupe" value="2"/>Écrire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxExecuter_groupe" value="1"/>Éxécuter</li> </ul> </fieldset> <fieldset class="lucie_fieldset_public"> <legend class="lucie_legend"> Permissions publiques </legend> <ul class="lucie_droits_dossiers"> <li><input type="checkbox" name="checkbox_droit" id="checkboxLire_public" value="4"/>Lire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxEcrire_public" value="2"/>Écrire</li> <li><input type="checkbox" name="checkbox_droit" id="checkboxExecuter_public" value="1"/>Éxécuter</li> </ul> </fieldset> <br/> Valeur numérique :<br/> <input type="text" name="lucie_valeurs" id="lucie_valeur_num" style="text-align: center;"/> <input type="hidden" name="lucie_valeurCachee_recup" id="lucie_valeurCachee_recup" value=""/> </form> <br/> <input type="button" name="lucie_valider_attributs" value="ATTRIBUER" id="lucie_valider_attributs"/> </div> <?php echo '<div id="lucie_foreachDossier">'; include 'js/numerisation.js'; foreach($_POST['checkboxDossierPath'] as $valeur) { //Il faudra peut-être utiliser ce code à un moment $mode =0755;chmod("$valeur", octdec($mode)); On précise que $mode sera spécifier en fonction des choix de l'utilisateur echo "La checkbox $valeur a été cochée<br>"; } echo '</div>'; } else { echo '<h1 id="lucie_title_error">ATTENTION !</h1><hr/><p id="lucie_errorDossier">Veuillez tout d\'abord sélectionner les dossiers auxquels modifier les attributs.</p>'; } ?> <script type="text/javascript"> function aller() { var valeur = document.forms['lucie_attributionDroits'].elements['lucie_valeur_num'].value; // Contient la valeur de l'<input /> document.location.href = 'index.php?store='+valeur; } </script> <?php if(isset($_GET['store'])){ $test = $_GET['store']; echo $test; } ?>
JS :

Code : Tout sélectionner

<script> $(function numerisation(){ $('#lucie_valider_attributs').click(function(){ // Ce tableau javascript va stocker les valeurs des checkbox var checkbox_val_proprio = []; var checkbox_val_groupe = []; var checkbox_val_public = []; // Parcours de toutes les checkbox checkées avec les différentes classes $("#checkboxLire_proprio:checked, #checkboxEcrire_proprio:checked, #checkboxExecuter_proprio:checked").each(function(){ checkbox_val_proprio.push(parseInt($(this).val())); }); $("#checkboxLire_groupe:checked, #checkboxEcrire_groupe:checked, #checkboxExecuter_groupe:checked").each(function(){ checkbox_val_groupe.push(parseInt($(this).val())); }); $("#checkboxLire_public:checked, #checkboxEcrire_public:checked, #checkboxExecuter_public:checked").each(function(){ checkbox_val_public.push(parseInt($(this).val())); }); //Les lignes de code "console.log" permettent de vérifier les valeurs du tableau (dans la console) //console.log(checkbox_val_proprio); //console.log(checkbox_val_groupe); //console.log(checkbox_val_public); //Ici, on va additionner les valeurs qui auront été placées dans le tableau checkbox_val_proprio. var tableauArray1 = checkbox_val_proprio.reduce(function(a, b) { return a + b; }); //console.log(tableauArray1); //On peut le vérifier le total grâce à la console. Si admettons "Lire", "Écrire", et "Éxécuter" ont été cochées, alors la console renverra 7 var tableauArray2 = checkbox_val_groupe.reduce(function(a, b) { return a + b; }); //console.log(tableauArray2); var tableauArray3 = checkbox_val_public.reduce(function(a, b) { return a + b; }); //console.log(tableauArray3); var valeurNumerique = String(tableauArray1)+String(tableauArray2)+String(tableauArray3); //console.log(valeurNumerique); $("#lucie_valeur_num").html(valeurNumerique); document.getElementById("lucie_valeur_num").value = valeurNumerique; document.getElementById("lucie_valeurCachee_recup").value = valeurNumerique; }); }); </script>
Mais ça ne marche pas non plus et voici mon erreur générée :

Uncaught TypeError: Cannot read property 'value' of undefined

L'ordinateur se moque de moi ou c'est comment ? :evil:

ynx
Mammouth du PHP | 586 Messages

25 janv. 2016, 15:13

Salut,

Pour la ligne
var valeur = document.forms['lucie_attributionDroits'].elements['lucie_valeur_num'].value;
les clés lucie_attributionDroits et lucie_valeur_num doivent correspondre à l'attribut name de tes balises, ce qui est le cas pour le formulaire mais pas pour l'input :
<input type="text" name="lucie_valeurs" id="lucie_valeur_num" style="text-align: center;"/>
L'attribut name doit également être égal à lucie_valeur_num

Bonne journée

Eléphant du PHP | 161 Messages

25 janv. 2016, 15:26

J'ai remplacé comme vous me l'avez dit, rien n'y fait, j'ai toujours la même erreur.

ynx
Mammouth du PHP | 586 Messages

26 janv. 2016, 12:42

Peux tu stp nous préciser le numéro de ligne de ton erreur, car celle indiqué dans mon précédent message se trouve dans la fonction aller(), or il semble que cette fonction ne soit jamais appelée.

Eléphant du PHP | 161 Messages

26 janv. 2016, 13:13

En fait j'ai procédé bien autrement, et ai utilisé cet tutoriel : http://creer-un-site.fr/tp-ajax-ecrire- ... te-292.php.

Bonne journée :)