Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| def info_perso(): | |
| # Récupérer le gestionnaire de base de données | |
| db_manager = st.session_state.get("db_manager") | |
| if db_manager is None: | |
| st.error("Erreur : DBManager n'est pas initialisé.") | |
| else: | |
| # Récupérer les informations de l'utilisateur connecté | |
| user_id = st.session_state["user_id"] | |
| query = f"SELECT * FROM utilisateurs WHERE id_utilisateur = {user_id}" | |
| user_info = db_manager.query(query) | |
| if not user_info: | |
| st.error("Utilisateur non trouvé.") | |
| else: | |
| user_info = user_info[0] # Récupérer la première ligne (unique utilisateur) | |
| # print(user_info) # Récupérer et afficher les informations de l'utilisateur | |
| # Premier formulaire (Nom, Email, Mot de passe) | |
| col1, col2, col3 = st.columns(3) | |
| with col1: | |
| nom = st.text_input("Nom", user_info["login"]) | |
| with col2: | |
| email = st.text_input("Email", user_info["email"]) | |
| # Deuxième formulaire (Objectifs nutritionnels, Poids, Taille) | |
| col1, col2, col3 = st.columns(3) | |
| with col1: | |
| objectifs_nutritionnels_val = ( | |
| user_info["objectifs_nutritionnels"] | |
| if user_info["objectifs_nutritionnels"] | |
| else "Vide" | |
| ) | |
| objectifs_nutritionnels = st.selectbox( | |
| "Objectifs nutritionnels", | |
| ["Prise de masse", "Tonification", "Perdre du poids", "Vide"], | |
| index=[ | |
| "Prise de masse", | |
| "Tonification", | |
| "Perdre du poids", | |
| "Vide", | |
| ].index(objectifs_nutritionnels_val), | |
| ) | |
| with col2: | |
| poids = st.number_input("Poids (kg)", value=user_info["poids"], step=1) | |
| with col3: | |
| taille = st.number_input( | |
| "Taille (cm)", value=user_info["taille"], step=1 | |
| ) | |
| # Troisième formulaire (Régime particulier, Activité physique, Objectif calorique) | |
| col1, col2, col3 = st.columns(3) | |
| with col1: | |
| regime_particulier = st.text_area( | |
| "Régime particulier", user_info["regime_particulier"] | |
| ) | |
| with col2: | |
| # Traitement de la valeur vide pour l'activité physique | |
| activite_physique_val = ( | |
| user_info["activite_physique"] | |
| if user_info["activite_physique"] | |
| else "Vide" | |
| ) | |
| activite_physique = st.selectbox( | |
| "Activité physique", | |
| ["Sédentaire", "Légère", "Modérée", "Intense", "Vide"], | |
| index=["Sédentaire", "Légère", "Modérée", "Intense", "Vide"].index( | |
| activite_physique_val | |
| ), | |
| ) | |
| with col3: | |
| objectif_calorique = st.text_input( | |
| "Objectif calorique", user_info["objectif_calorique"] | |
| ) | |
| # Bouton pour sauvegarder toutes les informations | |
| if st.button("Tout mettre à jour"): | |
| table_name = "utilisateurs" | |
| set_clause = """login = ?, email = ?, objectifs_nutritionnels = ?, poids = ?, taille = ?, | |
| regime_particulier = ?, activite_physique = ?, objectif_calorique = ?""" | |
| condition = "id_utilisateur = ?" | |
| # Rassembler les paramètres à passer à la méthode | |
| params = ( | |
| nom, | |
| email, | |
| objectifs_nutritionnels, | |
| poids, | |
| taille, | |
| regime_particulier, | |
| activite_physique, | |
| objectif_calorique, | |
| user_id, | |
| ) | |
| # Appel à la méthode update_data avec les bons paramètres | |
| db_manager.update_data(table_name, set_clause, condition, params) | |
| st.success("Informations mises à jour avec succès.") | |