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

Résolu/Fermé
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020 - Modifié le 3 déc. 2020 à 18:42
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020 - 11 déc. 2020 à 08:50
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()

A voir également:

1 réponse

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
3 déc. 2020 à 19:27
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?
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
3 déc. 2020 à 19:32
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.
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
3 déc. 2020 à 19:58
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.
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
3 déc. 2020 à 21:39
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?
0
kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
Modifié le 4 déc. 2020 à 10:25
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.
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > kymer_officiel Messages postés 38 Date d'inscription mardi 20 novembre 2018 Statut Membre Dernière intervention 11 décembre 2020
4 déc. 2020 à 10:40
je ne pense pas que ce que tu as appris te permette de faire cet exercice.
0