Condition à partir de clé primaire et étrangère

Résolu/Fermé
Messages postés
38
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
11 décembre 2020
-
Messages postés
38
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
11 décembre 2020
-
Bonjour,
Si je suis ici c’est parce que j’aimerais crée une condition sqlite3 sur python.
Cette condition ferait en sorte que si PRIMAIRY KEY = FOREIGNE KEY.
Il faut bien sur qu’elle soit de la même ligne, exemple la clé primaire de la ligne 1 doit correspondre avec la clé étrangère de la même ligne.
Au moins si l’es clé correspond ça m’ouvre une fenêtre tkinter avec marquer “ bravo c’est’est la bonne cle”, si elle ne correspond pas ca m’ouvre une autres fenêtre avec marquer “La cle primaire ou étrangère ne correspond pas réessaie”.

PS : j’écris le code sur python, et ma base de donnée et en SQLite3.
mon code
import sqlite3
from tkinter import *



fenetre1= Tk()
fenetre1.geometry("380x380+500+200")
fenetre1.resizable(width=NO,height=NO)

Etiquette1=Label(fenetre1,text='Bonjour,',font=("Courrier", 15)).place(x=165,y=30)
Etiquette1=Label(fenetre1,text='Et bienvenue dans Cloud Games',font=("Courrier", 15)).place(x=60,y=55)
Etiquette1=Label(fenetre1,text='La plateforme compétitife de partage ',font=("Courrier", 15)).place(x=30,y=80)
Etiquette1=Label(fenetre1,text='de jeux',font=("Courrier", 15)).place(x=165,y=105)
Etiquette1=Label(fenetre1,text='Souhaitez-vous vous connecter :',font=("Courrier", 15)).place(x=60,y=130)
Etiquette1=Label(fenetre1,text='Ou vous inscrire :',font=("Courrier", 15)).place(x=60,y=175)
#définit ma première fenetre avec sont texte, et ses 2 boutons en bas de la page

class create():
    def page2():
        fenetre2=Tk()
        fenetre2['bg']='white'
        fenetre2.geometry("600x250+400+350")

        Etiquette1=Label(fenetre2,text='Prénom').place(x=100,y=45)
        entree1=Entry(fenetre2,width=10)
        entree1.insert(0,1)
        entree1.place(x=100,y=65)

        Etiquette2=Label(fenetre2,text='Age').place(x=200,y=45)
        entree2=Entry(fenetre2,width=10)
        entree2.insert(0,1)
        entree2.place(x=200,y=65)

        Etiquette3=Label(fenetre2,text='Pseudo').place(x=100,y=90)
        entree3=Entry(fenetre2,width=10)
        entree3.insert(0,1)
        entree3.place(x=100,y=110)

        Etiquette4=Label(fenetre2,text='mots de passe').place(x=200,y=90)
        entree4=Entry(fenetre2,width=10)
        entree4.insert(0,1)
        entree4.place(x=200,y=110)



        def Creation():

            n = entree1.get()
            a = entree2.get()
            u = entree3.get()
            p = entree4.get()
            conn = sqlite3.connect('baseDonnees.db')
            cursor = conn.cursor()
            cursor.execute("""CREATE TABLE IF NOT EXISTS users(name TEXT,age INTEGER,username PRIMARY KEY UNIQUE NOT NULL,password FOREIGNE KEY UNIQUE NOT NULL)""")
            conn.commit()
            cursor.execute("""INSERT INTO users(name, age, username, password) VALUES(?, ?, ?, ?)""", (n, a, u, p))
            conn.commit()
            cursor.close()
            conn.close()
            fenetre3=Tk()
            fenetre3['bg']='white'
            fenetre3.geometry("600x250+400+350")
            Etiquette5=Label(fenetre3,text='Bravo, votre compte a bel et bien était crée.',bg='white',font=("Arial", 20)).place(x=40,y=45)

            def fermertout():
                fenetre2.destroy()
                fenetre3.destroy()

            bouton4=Button(fenetre3, text='fermer', command=fermertout).place(x=70,y=65)
#cette def permet d'executer le programme qui permet d'enregistrer les donnée mises dans les "entree" de ma fenetre2.
#elle est placée dans une autre def afin que la fenetre2 lui sois définit.
        bouton3=Button(fenetre2,text='crée un nouveau compte',command=Creation).place(x=80,y=20)
# je definit ma deuxieme page tkinter, avec le bouton de création (celui qui n'apparet pas)

class conexion():
    def page3():
        fenetre4=Tk()
        fenetre4['bg']='white'
        fenetre4.geometry("600x250+400+350")
        fenetre1.destroy()

        Etiquette5=Label(fenetre4,text='Pseudo').place(x=100,y=90)
        entree5=Entry(fenetre4,width=10)
        entree5.insert(0,1)
        entree5.place(x=100,y=110)

        Etiquette6=Label(fenetre4,text='mots de passe').place(x=200,y=90)
        entree6=Entry(fenetre4,width=10)
        entree6.insert(0,1)
        entree6.place(x=200,y=110)

        u = entree5.get()
        p = entree6.get()

        def conecté():
            u = entree5.get()
            p = entree6.get()

            conn = sqlite3.connect('baseDonnees.db')
            cursor = conn.cursor()
            cursor.execute("""SELECT username, SUM(password) FROM users""")#je bloque ici pour l'instant.
            conn.commit()


        bouton5=Button(fenetre4,text='Se connecté',command=conecté)



bouton1=Button(fenetre1,text='Connexion',command=conexion.page3).place(x=80,y=155)
bouton2=Button(fenetre1,text='crée mon compte',command=create.page2).place(x=80,y=200)
fenetre1.mainloop()

1 réponse

Messages postés
18318
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 janvier 2022
1 002
bonjour,
tu as une table, users, avec les champs suivants: name, age, username, password.

peux-tu donner un exemple de ce que tu veux faire?
est-ce lié à la ligne 101 de ton code?
veux-tu vérifier si le nom de l'utilisateur et le mot de passe sont corrects?
Messages postés
18318
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 janvier 2022
1 002
dans ce cas-là, tu dois utiliser une clause WHERE dans la requête.

en passant, je pense que tu n'as pas du tout compris ce qu'était une clé étrangère.
Messages postés
38
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
11 décembre 2020
>
Messages postés
18318
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 janvier 2022

Oui se que je veux vérifier c’est que le nom d’utilisateur et le mots de passe soit correct. Et mon prof ma dit qu’une clé étrangère pouvait faire office de seconde cle.
Messages postés
18318
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 janvier 2022
1 002 >
Messages postés
38
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
11 décembre 2020

je ne vois aucune raison d'avoir une clé étrangère basée sur le mot de passe.
ton prof a-t-il expliqué dans quel cas utiliser une clé étrangère?

ton prof a-t-il expliqué comment faire une requête avec un WHERE?
Messages postés
38
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
11 décembre 2020
>
Messages postés
18318
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 janvier 2022

Pour la clé étrangère il m’a dit qu’elle pouvait faire office de second clé primaire. C’est d’ailleurs pour ça que je me sert d’une clé étrangère pour le mors de passe.

Et non il ne m’a pas expliquer comment faire une requête WHERE.
Messages postés
18318
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 janvier 2022
1 002 >
Messages postés
38
Date d'inscription
mardi 20 novembre 2018
Statut
Membre
Dernière intervention
11 décembre 2020

je ne pense pas que ce que tu as appris te permette de faire cet exercice.