Formulaire html/python/sql

Fermé
Gauthier - Modifié le 8 nov. 2022 à 16:32
jordane45 Messages postés 38151 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 mai 2024 - 8 nov. 2022 à 17:00

Bonsoir,

Je dois rendre un projet où l'on doit seulement utiliser python, html/css et une base de donnée SQL. Malheureusement, je n'arrive pas à enregistrer les donnée soumises par l'utilisateur dans ma base de donnée.

Voici mon code python :

import sqlite3

connexion = sqlite3.connect('repertoire.db')

cursor = connexion.cursor()
cursor.execute("""
    CREATE TABLE IF NOT EXISTS REPERT(
    Nom TEXT,
    Prenom TEXT,
    Numero INT,
    PRIMARY KEY (Numero))
    """)
connexion.commit()


from flask import Flask, render_template, request
app = Flask(__name__)



@app.route('/')
def index():
    return render_template("index.html")

@app.route('/EnrgNum', methods = ['GET'])
def EnrgNum():
    return render_template("EnrgNum.html")
    Nom = request.form['Nom'],
    Prenom = request.form['Prenom'],
    Numero = request.form['Numero']
    print('Nom :',Nom,'prenom :', Prenom, 'num :',Numero)
    data =(Nom,Prenom,Numero)
    cursor.execute("INSERT INTO REPERT(Nom,Prenom,Numero) VALUES(?,?,?)", data)
    connexion.commit()
    cursor.close()

app.run(debug=True)

connexion.close()

voici mon code html :

<!doctype html>
<html lang="fr">
<head>
    <meta charset="utf-8">
    <title>Repertoire</title>
    <link rel="stylesheet" href="{{url_for('static',filename='EnrgNum.css')}}">
    <link href="http://fonts.cdnfonts.com/css/jk-abode" rel="stylesheet">

</head>
<body>
    <div class="container">
        <form>
            <form action="http://localhost:5000/resultat" method="get">
            <h1>Enregistrer un numero</h1>
            <input type="text" placeholder="Nom: Doe" name="Nom" required><br>
            <input type="text" placeholder="Prenom: John" name="Prenom" required><br>
            <input type="tel" placeholder="Numéro de télephone: 00-00-00-00-00" pattern="[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}" name="Numero" required><br>
            <p><div class="Envoyer"><input type="submit" value="Envoyer"></div>
            <p><br><a href="{{ url_for('index')}}">Retour vers la première page</a></p>

        </form>
    </div>

</body>
</html>

Merci d'avance !

A voir également:

5 réponses

jordane45 Messages postés 38151 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 mai 2024 4 652
6 nov. 2022 à 22:24

Bonjour

Pour commencer, tu as une balise form en trop dans ton code HTML.

Ensuite, peux-tu nous dire si ton print affiche les informations de ton formulaire ou pas ?


0

Ah oui j’avais pas vu pour le form en trop

et pour le print oui il affiche les informations ;)

0
jordane45 Messages postés 38151 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 mai 2024 4 652
Modifié le 6 nov. 2022 à 22:59

Essaie d'ajouter un bloc try catch pour voir les éventuels erreurs.

Un truc du genre : (en remplaçant par tes variables bien entendu)

    try:
        cur.execute(sql_query, sql_data)
        con.commit()
    except sqlite3.Error as er:
        print('SQLite error: %s' % (' '.join(er.args)))
        print("Exception class is: ", er.__class__)
        print('SQLite traceback: ')
        exc_type, exc_value, exc_tb = sys.exc_info()
        print(traceback.format_exception(exc_type, exc_value, exc_tb))
    

0

Bonjour,

Après avoir testé, je n'ai pas d'erreur.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 7 751
8 nov. 2022 à 16:35

Bonjour,

Je n'ai jamais fait de flask, mais quelque chose me paraît étrange dans ton code.

En effet, ta fonction EnrgNum retourne à la ligne 27, et donc tu n'évalues jamais la ligne 33 responsable de l'insertion en base d'un nouvel enregistrement. Je suppose donc que la ligne 27 devrait être déplacée à la ligne 36.

Bonne chance

0
jordane45 Messages postés 38151 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 mai 2024 4 652
8 nov. 2022 à 17:00

Hello

J'ai pensé la même chose .. mais comme il nous a indiqué que son print affichait bien les bonnes données...... je n'ai pas poussé plus loin.

0