[RESOLU] Tableau mise à jour en ajax mais problème de session

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Tableau mise à jour en ajax mais problème de session

Re: Tableau mise à jour en ajax mais problème de session

par kevin254kl » 12 avr. 2016, 13:05

Finalement j'ai résolu mon problème,
Je génère un id en php avec un random je vérifie si celui ci n'ai pas dans l'url.
en javascript je modifie l'url pour y intégrer l'id je ne le fait qu'une fois en vérifiant que l'id n'ai aps dans mon url.
je transporte mon id en ajax à travers les formulaire.
Avec ce procéder j'ai des session unique il faut juste faire attention à bien supprimer les session quand on a finit ses requêtes.

Re: Tableau mise à jour en ajax mais problème de session

par kevin254kl » 08 avr. 2016, 15:05

Le soucis si je stockes dans un array javascript c'est que je sais le nombre d'élément dans une ligne, mais je ne sais pas combien de ligne je dois afficher puisque cela dépend de l'utilisateur.

Re: Tableau mise à jour en ajax mais problème de session

par kevin254kl » 08 avr. 2016, 14:35

J'ai pensé à faire quelque chose de ce genre

Code : Tout sélectionner

<html> <head> </head> <body> <table id="tableau" style="border: 1px solid black;"> <tr> <td>test 1</td> <td>test 2</td> </tr> <tr> <td>test 3</td> <td>test 4 </td> </tr> </table> <input type="button" value="Ajouter" onclick="addRow(document.getElementById('tableau'), document.getElementById('rowText').value);" /> <input type="text" id="rowText" /> </body> </html> <script> function addRow(id, value) { var tr = document.createElement('tr'); id.appendChild(tr); var td = document.createElement('td'); tr.appendChild(td); var tdText = document.createTextNode(value); td.appendChild(tdText); } </script>
par contre ici à mon avis pour à la fin enregistrer les éléments en base je dois stocker les données dans un array à deux dimensions vous en pensez quoi?

Tableau mise à jour en ajax mais problème de session

par kevin254kl » 08 avr. 2016, 12:43

Bonjour à tous, pourriez vous m'aider s'il vous plaît? c'est au sujet du post viewtopic.php?f=8&t=275768

J'ai un tableau dans une page php.
Ce tableau par des requêtes ajax dans un formulaire ajout externe est mise à jour sans recharger la page.
Quand je valide ma page le tableau est envoyé.
Le problème le tableau est transporté en session.

ici action est récupéré par ajax et précise simplement que l'on va ici ajouter une ligne, action égal à 1.
A la fin on stocke cela en session pour lros du prochain appelle afficher le tableau (ce n'ai pas mon script mais celui de mon prédécesseur).
Pour afficher le tableau

Code : Tout sélectionner

if(isset($_GET['ligne']) || isset($_GET['action'])){ switch ($_GET['action']) { case 1: $delai_s = null; if($_GET['delai_s'] != null) { if($date = DateTime::createFromFormat('Y-m-d',$_GET['delai_s'])) $delai_s = $date->format('d/m/Y'); } $besoin = new Besoin('',$_GET['num_item'],'',$_GET['type_produit'],$_GET['ref_client'],$_GET['ref_valeo'],$_GET['ind'],$_GET['dsg_client'], $_GET['dsg_valeo'],$_GET['qte'],$_GET['prix_u'],$delai_s,'',$_GET['commentaire'],'','','',''); $tableau[][] = $besoin; break; case 2: $delai_s = null; if($_GET['delai_s'] != null) { if($date = DateTime::createFromFormat('Y-m-d',$_GET['delai_s'])) $delai_s = $date->format('d/m/Y'); } $besoin = new Besoin('','','',$_GET['type_produit'],$_GET['ref_client'],$_GET['ref_valeo'],$_GET['ind'],'',$_GET['dsg_valeo'],$_GET['qte'],'',$delai_s,'',$_GET['commentaire'],'','','',''); $tableau[$_GET['ligne']][] = $besoin; break; case 3: $besoin = $tableau[$_GET['ligne']][$_GET['sous_ligne']]; $besoin -> setType_produit($_GET['type_produit']); $besoin -> setNum_item($_GET['num_item']); $besoin -> setRef_client($_GET['ref_client']); $besoin -> setRef_valeo($_GET['ref_valeo']); $besoin -> setInd($_GET['ind']); $besoin -> setDsg_client($_GET['dsg_client']); $besoin -> setDsg_valeo($_GET['dsg_valeo']); $besoin -> setQte($_GET['qte']); $besoin -> setPrix_u($_GET['prix_u']); $delai_s = null; if($_GET['delai_s'] != null) { if($date = DateTime::createFromFormat('Y-m-d',$_GET['delai_s'])) $delai_s = $date->format('d/m/Y'); } $besoin -> setDelai_s($delai_s); $besoin -> setCommentaire($_GET['commentaire']); break; case 4: $besoin = $tableau[$_GET['ligne']][$_GET['sous_ligne']]; $besoin -> setType_produit($_GET['type_produit']); $besoin -> setRef_client($_GET['ref_client']); $besoin -> setRef_valeo($_GET['ref_valeo']); $besoin -> setInd($_GET['ind']); $besoin -> setDsg_valeo($_GET['dsg_valeo']); $besoin -> setQte($_GET['qte']); $delai_s = null; if($_GET['delai_s'] != null) { if($date = DateTime::createFromFormat('Y-m-d',$_GET['delai_s'])) $delai_s = $date->format('d/m/Y'); } $besoin -> setDelai_s($delai_s); $besoin -> setCommentaire($_GET['commentaire']); break; case 5: if($_GET['sous_ligne'] == 0) unset($tableau[$_GET['ligne']]); // supprimer une ligne du tableau else unset($tableau[$_GET['ligne']][$_GET['sous_ligne']]); // supprimer une sous_ligne du tableau break; } } if(isset($tableau)) $_SESSION['tableau']=serialize($tableau);
Pour afficher le tableau, on affect la session en désérializant

Code : Tout sélectionner

if(isset($_SESSION['tableau'])){ $tableau = unserialize($_SESSION['tableau']); // Si il a déja été sérialisé alors on le déserialize pour pouvoir utiliser le tableau }
Le code marche très bien, seul problème le multi fenêtre avec les session que je veux donc éradiquer!
Ma question pour un champion, comment je peux faire, pour ajouter des lignes sans recharger la page, vous me conseillerai du javascript et auriez vous un exemple?
Le formulaire d'ajout n'ai pas dans la même page que le tableau, voici l'architecture :
une page ajt_dl ou on appelle ajout_besoin.php et d'autres formulaire, dans ajt par ajax quand on valide on envoi à la page du tableau les nouvelles données.

Je suppose j'ai super mal expliqué désolé pour ça si vous n'avez pas compris je réexplique merci à vous.