Partage
  • Partager sur Facebook
  • Partager sur Twitter

Stocker données cycliques en BDD + affichage HTML

Quelle méthode ?

    19 avril 2024 à 22:08:24

    Bonjour,


    J'ai suivi avec attention le cours sur la création d'un site avec PHP et SQL et j'ai reproduit les exemples donnés sans problème. Maintenant je voudrais utiliser ce que j'ai appris pour mon projet personnel, une page Web sur laquelle les utilisateurs pourront afficher sous forme de tableaux leurs résultats de régime/entraînement sportif et ajouter/éditer des entrées via un formulaire. Ces cycles d'entraînement étant sur 35 jours, je prévois dans ma BDD un champ "JOUR" pour le numéro de chaque jour, qui sera incrémenté automatiquement.

    Je voudrais que quand les utilisateurs se connectent,  tous leurs tableaux s'affichent cote à cote sur la page principale de leur compte sous la forme suivante (grosso modo) :


    CYCLE 1                                                 CYCLE 2                                         

    J       REPAS        ENDURANCE            J       REPAS   ENDURANCE             

    1       Avocat,...       30'10                      1       Fruit,...       29'10

    |       ...                   29'50                       |       ...               30'05

    |       ...                     ...                           |       ...                  ...

    35    ...                     ...                           35    ...                  ...

    J'ai d'abord pensé à créer une table par période de 35 jours, puis à organiser le code PHP (en résumé) de la manière suivante :

    1. enregistrer dans un tableau numéroté le résultat de la requête 'SHOW TABLES'

    2. boucler sur ce tableau (foreach $TablesList as $Table), en effectuant à chaque passe la requête '"SELECT * FROM " $Table' et en affichant les données dans un tableau HTML

    Mais je m'aperçois que pour la requête SELECT il faut toujours nommer la table (on ne peut pas utiliser la variable automatique $Table). Dans tous les exemples que j'ai trouvés sur le net, les tables sont toujours nommées, même quand il y en a plusieurs. Mais comment faire quand on ne connaît pas à l'avance le nombre de tables ?

    Je suis donc parti dans une autre direction : créer une seule grande table par utilisateur, mais il faut que le champ "JOUR" dans la BDD soit auto-incrémenté et se remette à zéro automatiquement lorsque l'utilisateur crée un nouveau tableau cyclique. Je ne sais pas comment faire ça et surtout, je ne sais pas si c'est la bonne approche pour ce que je veux faire.

    Si vous pouvez m'éclairer...

    Merci par avance !

    -
    Edité par Gillou67 19 avril 2024 à 23:33:55

    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2024 à 17:43:17

      Bonjour,

      Je suis donc parti dans une autre direction : créer une seule grande table par utilisateur, mais il faut que le champ "JOUR" dans la BDD soit auto-incrémenté et se remette à zéro automatiquement lorsque l'utilisateur crée un nouveau tableau cyclique.

      Pourquoi ne pas utiliser simplement la date

      EDIT : Il te faudra une table Cycles, et Activités par exemple... Dans le cycle créé, tu y préciseras sa date de démarrage et dans l'activité, tu y préciseras l'ID du cycle et le numéro du jour (1 à 35).

      -
      Edité par fred1599 20 avril 2024 à 17:50:30

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        20 avril 2024 à 22:25:36

        J'ai effectivement pensé à un ID par cycle, mais je n'ai pas pensé le mettre dans une table dédiée. J'ai créé une table "Cycles" avec un champ ID et j'ai mis ce champ en tant que clé étrangère dans la table "Activités".

        La requête suivante fonctionne : 'SELECT * FROM ACTIVITÉS WHERE `ID_CYCLE`=1';

        Mais il y a quelque chose que je ne comprends pas : j'essaie de créer automatiquement un nouveau tableau HTML par ID_CYCLE. Si par exemple j'enregistre le résultat de la requête 'SELECT * FROM CYCLES' dans un array et je boucle sur cet array pour requêter les données "Activités" à chaque passe en filtrant sur le champ ID_CYCLE actuel, j'écris la formule suivante :

        foreach ($Cycles as $Cycle) { 'SELECT * FROM Activités WHERE `ID_Cycle`=$Cycle '; }

        Mais c'est le même problème qu'avec $Table, je ne peux pas introduire de variable PHP automatique dans la requête SQL ?

        -
        Edité par Gillou67 21 avril 2024 à 0:15:48

        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2024 à 0:08:27

          .

          -
          Edité par Gillou67 21 avril 2024 à 0:16:08

          • Partager sur Facebook
          • Partager sur Twitter
            21 avril 2024 à 11:39:30

            Lorsque vous intégrez une variable PHP dans une chaîne en PHP, vous devez utiliser des guillemets doubles pour que la variable soit interprétée.

            • Partager sur Facebook
            • Partager sur Twitter

            Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
            La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

              21 avril 2024 à 16:11:46

              On parle bien d'une chaîne en PHP, pas d'une chaine en SQL ?
              • Partager sur Facebook
              • Partager sur Twitter
                21 avril 2024 à 18:33:14

                Oui
                • Partager sur Facebook
                • Partager sur Twitter

                Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                  21 avril 2024 à 21:23:00

                  OK, je vais essayer ça.  Merci pour votre aide !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 avril 2024 à 12:30:01

                    Ne pas oublier d'inclure un critère utilisateur aussi ;) (table d'utilisateur, liaison des autres tables avec l'id_utilisateur)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 avril 2024 à 22:30:44

                      Oui en effet, merci ! Pour l'instant je teste avec un utilisateur unique pour comprendre comment faire, mais c'est vrai qu'il y en aura d'autres après !

                      -
                      Edité par Gillou67 22 avril 2024 à 22:31:23

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Stocker données cycliques en BDD + affichage HTML

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown