Créer un tableau multi-dimentionnel, et modifier les valeurs de certaines occurences JSON en PHP

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 : Créer un tableau multi-dimentionnel, et modifier les valeurs de certaines occurences JSON en PHP

Re: Créer un tableau multi-dimentionnel, et modifier les valeurs de certaines occurences JSON en PHP

par two3d » 26 févr. 2021, 19:54

Salut, pour savoir combien de jours ya dans le mois: https://www.php.net/manual/fr/function. ... -month.php

Si tu veux savoir combien il y a de semaines dans le mois, tu peux utiliser cette fonction: https://www.c2script.com/scripts/nombre ... p-s36.html

Re: Créer un tableau multi-dimentionnel, et modifier les valeurs de certaines occurences JSON en PHP

par Ryle » 26 févr. 2021, 19:26

Salutations !

Le plus simple pour conserver cette structure, c'est effectivement de constituer ton agenda dans un tableau en php puis de sérialiser celui-ci, c'est à dire le transformer en une chaine de caractères, pour pouvoir l'enregistrer dans ta table en base (par contre en stockant tout ton tableau dans un unique champ, tu ne pourras faire aucun traitement, filtre ou recherche efficace dans ton agenda en SQL).

Pour transformer ton tableau en chaine de caractère (et surtout pouvoir le restaurer quand tu veux le lire), tu peux utiliser les fonction serialize() et unserialize(), ou éventuellement json_encode() et json_decode(). Cette seconde option est selon moi à préférer si tu utilises ton tableau agenda pour des traitements javascript ou pour des API, mais sinon je ne suis pas certain qu'elle soit plus intéressante que la première.

Créer un tableau multi-dimentionnel, et modifier les valeurs de certaines occurences JSON en PHP

par sharko28 » 26 févr. 2021, 16:38

Bonjour à tous.
Vous n'avez rien compris à mon titre et c'est normal.
Je suis en train de créer un calendrier en PHP. J'ai réussi à créer une structure qui me semble pas trop mal.
Je vous mettrai mon code en fin mais là n'est pas le plus important.

J'ai une table users. Dans laquelle il y a plusieurs champs dont : `id`,`agenda`.
Je veux dans chacune des cases `agenda` on retrouve la totalité du calendrier sous cette forme :

Code : Tout sélectionner

2021 [ 1 [ 1 => 'valeur du premier jour', 2 => 'valeur du deuxieme jour', 3 => 'valeur du troisieme jour', 4 => 'valeur du quatrieme jour', etc... ], 2 [ 1 => 'valeur du premier jour', 2 => 'valeur du deuxieme jour', 3 => 'valeur du troisieme jour', 4 => 'valeur du quatrieme jour', etc...], 3 [], 4 [], 5 [], 6 [], 7 [], 8 [], 9 [], 10 [], 11 [], 12 [] ]
déjà ça je galère. Mon calendrier est sous cette structure :

Code : Tout sélectionner

<?php $annee = 2021; for ($i = 1, $i <= 12, $i++){ $mois = mktime(0,0,0,$i,date("d",time()),$annee); // J'ai réussi à coder une fonction qui détermine automatiquement le nombre de jours dans le mois etc je vous la skip pour plus de clarté. Je me retrouve avec un while qui va correspondre à linterieur de lui-même au jour en question while (): agenda($id_utilisateur, $annee, $i, $mois); endwhile; } // je vous présente donc maintenant ma fonction agenda() function agenda($id_utilisateur,$annee,$i,$mois){ //idem je vous masque toute la fonction pour plus de clarté, mais on se retrouve avec ce meme while qui, dedans, nous sommes sur le jour J sous la forme d'un timestamp. // actuellement, j'ai stocké sous forme de string la totalité du tableau pour ensuite faire des explode. Ce n'est pas la bonne manière et c'est ce pourquoi je vous demande de l'aide. contenu dans la base de données : 2021!1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;3,,,,,,,,,,,,,,,,,,,,,;4;5;6;7;8;9;10;11;12,2022!1;etc.... // chaque année est séparéé par un ' ! ' // chaque mois est séparé par un ' ; ' // le contenu de chaque jour est séparé par une ' , ' // spoiler alert : ça marche pas while () { $jour_j = mktime(0,0,0,$i,$z,$annee); // Je vais chercher le champs agenda dans ma table users $req = $GLOBALS['bdd']->prepare("SELECT agenda FROM `users` WHERE `id`='".$id_utilisateur."'"); $req->execute(); $data = $req->fetch(PDO::FETCH_OBJ); $tableau_annee = explode('!', $data->agenda_p4); $tableau_mois = explode(',', $tableau_annee[$i]); $tableau_jour = explode(';', $tableau_mois[$i]); $strdd = strftime("%e",$jour_j_1)-1; // j'arrive à afficher les valeurs de la journée, mais ce n'est pas automatique.. // avec ce <input> je dois en live pouvoir modifier la case en question dans ma string. echo '<td class="bg-'.$bg.' text-'.$color.'"> <input class="editation_agenda" data-annee="'.$annee.'" data-mois="'.$tableau_jour[$i].'" data-jour="'.$z.'" value="'.$tableau_jour[strftime("%e",$jour_j_1)-1].'"> '; // print_r($tableau_jour); echo '</td>'; $z++; } } ?>
J'ai donc décidé de passer ça en JSON ce sera peut-être plus simple ? Je n'en sais rien.. Si vous avez des idées, je suis preneur je suis relativement débutant là dedans.
Je vous remercie grandement par avance !!