Résolu [MySQL] comment stocker les données

Solutions (12)
Tags :
  • table
  • Sequence
  • Programme
  • Programmation
, Maître Yoda |
Bonjours à tous.
Sous phpMyAdmin j'ai créé 3 table (client, exercice, séquence) qui font partie de la même base de donnée (programme)

En gros le client arrive sur ma page web, il commence a créer son programme :
-il lui donne un nom puis clique sur le bouton ajouter séquence ( a se moment la l'exercice créé doit être lié à l'id de l'utilisateur)
-ensuite il rentre les données spécifique de l'exo, puis ajoute une séquence à l'exercice( la encore une fois, la séquence doit être rajouter cette fois ci à l'id de l'exercice créé auparavant.

Donc en gros, un programme peut avoir plusieurs exercices, et ses exercice peuvent eux avoir plusieurs séquence.
avoir un truc comme ci dessous algorithmiquement parlant :

  1. client 1 :
  2. #programme : toto
  3. exercice 1 :
  4. sequence 1:
  5. sequence 2:
  6. exercice 2 :
  7. sequence 1
  8. ..............


Mais le soucie c'est que je ne sais absolument pas comment organiser cela.
Pourriez vous m'aider ?
Contenus similaires
Meilleure solution
partage
|
Il te suffit de donner la durée maximale des sessions:
  1. ini_set('session.gc_maxlifetime', 15*60);

La session (de l'utilisateur) sera automatiquement détruite après 15 minutes d'inactivité sur le site.
  • Commenter cette solution |
Score
0
òh
òi
, Maître Yoda |
Meilleure réponse sélectionnée par danydan01.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
OOooooooh Yeah merci beaucoup crazycat@idn pour ton aide :D 





  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
En gros si je ne dis pas de bêtise et que j'ai bien compris ce que tu m'as expliqué, si je déclare 1 variable de session sur l'id de l'utilisateur connecté, et qu'il y a 2 utilisateurs en ligne en même temps, il sera créé 2 variable de sessions id c'est bien cela ?

Si c'est le cas je suis Heureux :love: 

EDIT : une pitite question avant de dormir. Comment faire pour que lorsque l'utilisateur ferme la page internet, je détruise la session à l'aide de session_destroy() ? j'ai entendu parler d'un time out mais je ne sais comment l'utiliser...
  • Commenter cette réponse |
Score
0
òh
òi
|
Ok, alors ma réponse serait: laisse le système gérer tes sessions client :) 
Enregistre dans la session juste les informations importantes qui sont dans ta base: id et username, et pourquoi pas le mot de passe crypté (afin de pouvoir chaque fois vérifier que c'est le bon utlisateur).

Et plus prosaïquement, la session est propre à chaque client, le serveur se débrouille tout seul et ne va pas écraser la session de l'utilisateur A parce que l'utilisateur B est connecté.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Désolé si je réponds un peux tard mais j'ai passer l'après-midi a revoir mes tables.
J'ai rajouté une table programme (qui appartient a un client et qui comporte des exercices, qui ont eux même des séquences)

Déjà j'ai plusieurs petite question :
quand le client se connecte sur ma page web, je récupère son id à l'aide de :

  1. if(isset($_SESSION['username']))
  2. {
  3. $req = mysql_query('select id_clt from clients');
  4. $dnn = mysql_fetch_array($req);
  5. $_SESSION['id_clt'] = $dnn['id_clt'];
  6. ?>


Ma question est, si il y a 2 clients en même temps sur la page. lorsque le client n°2 va se connecter, il ne va pas écrasé la variable utilisé par le client précédent qui est lui aussi en ligne (si vous voyez ou je veux en venir...) Comment faire pour gérer plusieurs client à la fois ?
  • Commenter cette réponse |
Score
0
òh
òi
|
C'est assez simple:
- tout d'abord une étape de connexion/inscription qui permet d'avoir l'id client (à stocker en session),
- ensuite un formulaire qui permet d'enregistrer un exercice ou d'accèder à un exercice du client déjà enregistré, ce qui permet d'obtenir l'id exercice,
- finalement, ajout ou édition d'une séquence appartenant à l'exercice.

Peux-tu montrer ce que tu as fait et surtout là où tu bloques ?
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Merci beaucoup crazycat@idn, je sais que je suis plutôt pas mal en création de table SQL :lol: 

Donc enfaite je voudrais mettre en œuvre mon outil en ligne de la sorte :
- chaque client aura un id, et a chaque fois que se client créer un exercice cette exercice est rattaché a se client (donc les autre clients n'auront pas accès au exercice des autres...)
- ensuite un exercice peut comporter plusieurs séquence, qui sont rattaché à l'id de l'exercice.
-ensuite libre à l'utilisateur de créer un nouvelle exercice pour son programme.

Donc en gros : 1programme appartient a un client, se programme contient des exercices, qui contient des séquences.

Pourriez vous m'aider à mettre en œuvre cela ?
J'ai déjà réalisé toute la partie des exercices et des séquences, reste plus que les connections entre elles...

  • Commenter cette réponse |
Score
0
òh
òi
|
Ok, ça me semble bon comme structure.
Donc, quel est ton souci exactement ?
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Oui effectivement je vais vous donné la structure de mes tables se sera plus simple :

Table Clients

  1. CREATE TABLE `clients` (
  2. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3. `username` varchar(255) NOT NULL,
  4. `password` varchar(255) NOT NULL,
  5. `Nom` varchar(255) NOT NULL,
  6. `Prenom` varchar(255) NOT NULL,
  7. `signup_date` int(10) NOT NULL,
  8. PRIMARY KEY (id)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Table Exercice (qui a pour clé secondaire l'id du client)

  1. CREATE TABLE IF NOT EXISTS `exercice` (
  2. `exerciceId` int(11) NOT NULL AUTO_INCREMENT,
  3. `id` bigint(20) NOT NULL,
  4. `exerciceNum` varchar(255) NOT NULL,
  5. `exerciceVitesse` int(11) NOT NULL,
  6. `exerciceAmp` int(11) NOT NULL,
  7. `nbsequence` int(11) NOT NULL,
  8. PRIMARY KEY (`exerciceId`),
  9. FOREIGN KEY (id)
  10. REFERENCES clients(id)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Table sequence

  1. CREATE TABLE IF NOT EXISTS `sequence` (
  2. `sequenceId` int(11) NOT NULL AUTO_INCREMENT,
  3. `exerciceId` int(11) NOT NULL,
  4. `Rotation` varchar(1) NOT NULL,
  5. `Nbimage` int(11) NOT NULL,
  6. `image1` varchar(5) NOT NULL,
  7. `image2` varchar(5) NOT NULL,
  8. `image3` varchar(5) NOT NULL,
  9. `image4` varchar(5) NOT NULL,
  10. `tempsimage1` int(11) NOT NULL,
  11. `tempsimage2` int(11) NOT NULL,
  12. `tempsimage3` int(11) NOT NULL,
  13. `tempsimage` int(11) NOT NULL,
  14. `sequenceTemps` int(11) NOT NULL,
  15. PRIMARY KEY (`sequenceId`),
  16. FOREIGN KEY (exerciceId)
  17. REFERENCES exercice(exerciceid)
  18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Voila pour mes tables.
  • Commenter cette réponse |
Score
0
òh
òi
|
Donne la structure des tables, ce sera plus explicite.
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

Il doit te manquer une table Programme.
Ensuite, il faut que tu aies des ID en auto-increment pour chacune de tes tables (enfin, une clé primaire, que ce soit un ID ou autre chose).
Et dans ta table Programme, tu as une colonne Client_ID qui est une "foreign key" sur la table Client.
Dans ta table Exercice, tu as une colonne Programme_ID qui est une foreign key sur ta table Programme.
Et enfin, dans ta table Sequence, tu as une colonne Exercice_ID qui est une foreign key sur ta table Exercice.

Donc, depuis ta séquence, tu peux récupérer l'exercice (Exercice_ID), puis récupérer le programme et enfin le client.

Et inversement, depuis ta table Client, tu peux récupérer le programme, puis récupérer ses exercices et les séquences de ces exercices.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS