IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Récupération lignes SQLite => Fragments


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2018
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Récupération lignes SQLite => Fragments
    Bonjour,

    Pour découvrir la programmation Androïd (et un peu de SQL par la même occasion), j'ai décidé de suivre quelques cours/tuto en me développant en parallèle une petite application qui va me permettre de gérer mes séances sportive, que je pourrais créer, consulter et supprimer.

    Donc mes séances (1 tables SQL), vont comporter plusieurs exercices (1 autre table SQL) :
    Nom : table seances.PNG
Affichages : 169
Taille : 6,8 KoNom : tables exercices.PNG
Affichages : 177
Taille : 15,2 Ko
    Donc mes séances ont un id auto-incrémenté à chaque nouvelle création et chaque exercice créé en base de données aura l'id correspondant à la séance, c'est comme ça que je fais le lien entre les séances et exercices correspondants.

    Mon soucis c'est que, je voudrais consulter ces séances, donc lorsque je clique sur l'une d'elles dans ma ListView :
    Nom : list seances.PNG
Affichages : 177
Taille : 16,7 Ko
    J'ai une nouvelle activité qui s'ouvre et je récupère le nom de la séance par un extra dans un string (ça c'est OK).

    Maintenant, ce que j'aimerai, c'est récupéré tout les exercices ayant le même id que la séance dont j'ai récupéré le nom dans un string via mon extra et les afficher sous forme de "liste" avec le nombre de séries/répétitions et le poids. Je suppose que la meilleure solution d'utiliser les fragments mais c'est là que je bloque.

    J'espère avoir été assez clair et avoir fournit assez d'informations pour que vous puissiez m'éclairer.

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Dans un premier temps ta conception SQL est incorrecte.

    Il te faut une table exercices :
    Elle ne contient que les exercies, pas de notion de poids , de répétitions

    Une table séances :
    Elle ne contient que les séances . Pas de référence aux exercices. On peut imaginer y ajouter une date comme dans mon exemple, mais c'est accessoire.

    Une table exo_par_seance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id | id_seance | id_exercice | repetitions | poids
    Elle fait le lien entre exercice et séances. Pour une même séance tu auras donc plusieurs lignes (autant que d'exercice).
    Pour bien faire on pourrait aller encore plus loin et ajouter un table "caracteristiques_exercice" qui contiendrait les notions de poids et de répétitions. La table exo séance deviendrait alors : id | id_seance | id_exercice | id_caracteristiques.

    Ensuite , ta seconde erreur c'est de récupérer le nom de la séance. Ici c'est l'id qui t'intéresse , le nom ne sera probablement pas unique. Il faut donc que lorsque tu clique sur ta listview tu envoi l'id et non le nom.
    Finalement dans l'activity (ou le fragment ca n'a pas de réelle importance) qui recois l'infos tu refais une requête avec des jointures pour tous retrouver.

    Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT s.label as seance, e.label as exo, eps.repetitions, eps.poids FROM seances s INNER JOIN exo_par_seance eps ON s.id = eps.id_seance INNER JOIN exercices e ON e.id = eps.id_exercice WHERE s.id = :id_recu
    Tu vas recevoir quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    seance 1 | squat | 10 | 50
    seance 1 | curl | 5 | 15
    qui sera la liste des exos de ta séance.

    C'est aussi possible de le faire en plusieurs requêtes.

    D'un points de vue java , ca va se traduire par une classe "Seance" qui contiendra une list d'Exercice? Chaque exercice contenant lui même un object "Caracteristique" indiquant le nombre de rep et le poids éventuel.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2018
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Ca me parait super, merci beaucoup de ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération données SQLite
    Par Willy55 dans le forum Android
    Réponses: 2
    Dernier message: 11/04/2012, 10h57
  2. Récupération lignes cochées dans un gridview
    Par stefsas dans le forum ASP.NET
    Réponses: 8
    Dernier message: 24/06/2010, 15h36
  3. Réponses: 1
    Dernier message: 24/06/2009, 11h44
  4. Réponses: 6
    Dernier message: 07/05/2009, 09h32
  5. récupération ligne datatable active
    Par psycho_xn dans le forum JSF
    Réponses: 4
    Dernier message: 20/09/2008, 03h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo