Partage
  • Partager sur Facebook
  • Partager sur Twitter

Valeurs inconnues en BDD

    29 janvier 2021 à 16:15:42

    Bonjour à toutes et tous,

    voilà j'ai un soucis avec ma base de données. un ami qui m'a gentiment inséré des packs pour mes joueurs est passé par la BDD.

    jusque là pas de soucis. mon soucis est de savoir comment en ajouter d'autres en sachant que les ressources que le joueur gagne est sous cette forme bizarre que je ne comprends ni ne connais à ce jour :

    a:3:{s:4:"bois";i:10000;s:6:"pierre";i:10000;s:5:"dacre";i:10000;}


    Quelqu'un peut-il m'expliquer à quoi correspondent toutes ces données ? 

    comment est défini a: au début et les valeur s: également 

    Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter

    Le CSS ça peut craindre -->Conférence CSS3.CREATE

      29 janvier 2021 à 16:41:27

      Bonjour,

      Ce sont des données sérialisées.

      Cela correspond à la transformation d'un tableau en chaîne de caractères.

      La syntaxe de sérialisation est : une lettre donnant le type, deux points, et selon le type, soit la valeur de l'élément (pour les entiers), soit un entier donnant la longueur de l'objet (pour les chaînes et les tableaux) suivi de deux points et de la valeur. Les tableaux étant encadrés par des accolades.

      Avec l'exemple donné on peut comprendre :

      C'est un tableau (a = array) contenant 3 éléments.

      • Le premier élément est composé d'une chaîne (s = string de 4 caractères) valant "bois" et d'un entier (i = integer) valant 10000.
      • Le deuxième élément est composé d'une chaîne (s = string de 6 caractères) valant "pierre" et d'un entier (i = integer) valant 10000.
      • Le premier élément est composé d'une chaîne (s = string de 5 caractères) valant "dacre" et d'un entier (i = integer) valant 10000.

      a:3:{

              s:4:"bois";i:10000;

              s:6:"pierre";i:10000;

              s:5:"dacre";i:10000;

      }

      qui pourrait être matérialisé en PHP comme :

      [

      "bois" => 10000,

      "pierre" => 10000,

      "dacre" => 10000

      ]

      La sérialisation à ce format se fait souvent dans WordPress pour stocker un tableau en base et éviter de créer des tables de relation ... C'est une solution de fainéant :D

      En PHP, tu peux facilement sérialiser avec la fonction serialize qui transforme un tableau (array) en chaîne, et désérialiser avec la fonction unserialize qui transforme une chaîne sérialisée en tableau.

      -
      Edité par Benzouye 29 janvier 2021 à 16:45:01

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        29 janvier 2021 à 16:50:16

        ah ok je pige mieux à présent.
        solutions de fainéant ou juste plus pratique ?

        j'en sais trop rien et j'avoue que je ne saurais pas comment organiser ça en BDD non plus 

        bon par contre une autre question :

        je dois ajouter des troupes mais les troupes sont faites à partir de la population qui arrive chaque jour selon le nombre de maison qu'on a construit.

        ensuite on les forme donc comment ajouter ce pack de troupes a mes joueurs ? dois-je effectuer une formation de troupes spécifiées ou simplement ajouter 20 de population et les former par le biais d'un script directement ?

        pour mieux comprendre chaque habitant a un statut sur la même ligne donc en gros il ne se transforment pas vraiment en soldats... ils ont juste le status type soldat ou épéiste etc 

        Complexe pour moi tout ça xD

        -
        Edité par stefde3 29 janvier 2021 à 16:52:37

        • Partager sur Facebook
        • Partager sur Twitter

        Le CSS ça peut craindre -->Conférence CSS3.CREATE

          29 janvier 2021 à 17:09:22

          stefde3 a écrit:

          solutions de fainéant ou juste plus pratique ?

          En toute rigueur la modélisation devrait être en trois tables :

          • joueur ( id_joueur [pk], pseudo, email, password )
          • ressource ( id_ressource [pk], libelle )
          • stock ( id_joueur [pk][fk], id_ressource [pk][fk], quantite )

          La logique serait la même pour les troupes, en rajoutant deux tables, par exemple :

          • troupe ( id_troupe [pk], libelle )
          • armee ( id_joueur [pk][fk], id_troupe [pk][fk], nombre )

          Cela permet de normaliser le stockage de données et d'en faciliter la mise à jour et l'intégrité ...

          stefde3 a écrit:

          dois-je effectuer une formation de troupes spécifiées ou simplement ajouter 20 de population et les former par le biais d'un script directement ?

          Quel est ton modèle de données actuel ?

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            14 février 2021 à 13:47:14

            Actuellement on doit faire venir de la population en augmentant le nombre de yourtes. 10 nouveau habitants par nbr de yourte nouvellement construite. Ensuite soient ils reste fermiers et sont alloués à la culture/récolte etc soit on en fait des soldats qu'on forme. 

            Il faut savoir aussi qu'il y a 4 tranches de population. Serfs, artisans, bourgeois et nobles avec 4 types d'infrastructures différentes pour les faire venir et des conditions de points de réputation etc

            C'est assez complexe à l'heure actuelle. 

            Pour les serfs = yourtes

            Pour les artisans = des chaumières

            Pour les bourgeois = des villas

            Pour les nobles = des villas de lux

            Chacun consomment des quantités de ressources différentes et arrivent selon toutes les conditions. Et chacun peut devenir un soldat, un chevalier, un archer, un epeiste selon son rang etc. Y a beaucoup de troupes différentes 😉

            • Partager sur Facebook
            • Partager sur Twitter

            Le CSS ça peut craindre -->Conférence CSS3.CREATE

              16 février 2021 à 13:13:07

              Ok, mais où veux-tu en venir ?

              Si l'on poursuit la logique précédemment proposée, il te faut deux tables de plus :

              • habitat ( id_habitat [pk], nom ) pour stocker les différents types d'habitat
              • habitat_ressource ( id_habitat [pk][fk], id_ressource [pk][fk], cout ) pour stocker le coût de l'habitat dans chaque ressource
              • propriete ( id_joueur [pk][fk], id_habitat [pk][fk], nombre ) pour stocker le nombre d'habitats possédés par un joueur

              Après, il ne faut pas mélanger le stockage des données et les règles qui font évoluer ces données. C'est dans ton code applicatif que tu décideras quand ajouter de la population à un joueur et que tu agiras sur la base de données en conséquence ...

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

              Valeurs inconnues en BDD

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown