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

ASP.NET Discussion :

Textbox dynamique et insertion dans BD


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut Textbox dynamique et insertion dans BD
    Bonjour à tous, je suis actuellement confronté à un problème au quel je n'arrive pas à trouver de solution.
    Je vous explique ça : j'ai une base de données dans la quelle sont stockés des utilisateurs, j'ai crée un formulaire afin que ces utilisateurs une fois identifié puissent mettre à jour certaines de leurs infos personnelles, tels que leur adresse mail, leur numéro de tel et de tel portable.
    Lorsque la page est chargé je rempli les textbox, par default, avec la valeur contenu dans la base de données pour les champs concerné ou une chaine de caractère si la valeur des champs est à "null" dans la BD.
    Jusqu'a la pas de soucis, le soucis est que lorsque je clique sur le bouton submit, les valeur des mes textbox sont perdu et lors de l'insertion dans la base de données ce sont les valeurs "par defaut" qui sont inséré.
    Comment faire ?

    je vous met mon code :=)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Data.Odbc;
    using System.Text.RegularExpressions;
     
    public partial class Arbres_Utilisateurs_ARBRES_MonCompte : System.Web.UI.Page
    {
        public string login;
        public int user_id;  
     
        protected void Page_Load(object sender, EventArgs e)
        {
            login = (string)Session["utilisateur"];
            if (login == null || login == "")
            {
                Page.Response.Redirect("default.aspx", true);
            } 
        }
     
        public void Maj_user(object o, EventArgs e)
        {
            Regex mail = new Regex("^[a-zA-Z0-9_.-]+@{1}[a-zA-Z0-9_.-]{2,}\\.[a-zA-Z0-9_.-]{2,4}$");
            if (mail.IsMatch(email.Text))
            {
                OdbcConnection connection1 = new OdbcConnection();
                connection1.ConnectionString = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=Arbres; USER=root; PASSWORD=;";
     
     
                try
                {
                    connection1.Open();
                    OdbcCommand DbCommandTel = connection1.CreateCommand();
                    DbCommandTel.CommandText = "update utilisateur set Util_Tel='" + Tel.Text + "' where Util_id="+user_id;
                    DbCommandTel.ExecuteReader();
                    OdbcCommand DbCommandTelPort = connection1.CreateCommand();
                    DbCommandTelPort.CommandText = "update utilisateur set Util_Tel_Port='" + TelPort.Text + "' where Util_id="+user_id;
                    OdbcDataReader DbreaderTelPort = DbCommandTelPort.ExecuteReader();                
                    OdbcCommand DbCommandUpdate = connection1.CreateCommand();
                    DbCommandUpdate.CommandText = "update utilisateur set Util_Mel='" + email.Text + "' where Util_id="+user_id;
                    OdbcDataReader DbReaderUpdate = DbCommandUpdate.ExecuteReader();
                    connection1.Close();
                    Page.Response.Redirect("/Arbres/Utilisateurs Arbres/index_arbres_utilisateurs.aspx", true);
     
                }
                catch (Exception ex)
                {
                    lblerror.Text = ex.Message;
                }
            }        
            else
            {
                lblerror.Text = "Adresse mail invalide";
            }
        }
     
        public void form_load(object o1, EventArgs e1)
        {
                    user_id = (int)Session["id"];
                    OdbcConnection connection = new OdbcConnection();
                    connection.ConnectionString = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=Arbres; USER=root; PASSWORD=;";                
                        try
                        {
                            connection.Open();
                            OdbcCommand DbCommandUser = connection.CreateCommand();
                            DbCommandUser.CommandText = "SELECT Util_Nom, Util_Prenom, Util_Nom_Societe, Util_Mel, Util_Tel, Util_Tel_Port FROM utilisateur where Util_ID="+user_id;
                            OdbcDataReader DbReaderUser = DbCommandUser.ExecuteReader();
                            DbReaderUser.Read();
                            NomUser.Text = DbReaderUser.GetString(0);
                            PrenomUser.Text = DbReaderUser.GetString(1);
                            societe.Text = DbReaderUser.GetString(2);
                            email.Text = DbReaderUser.GetString(3);
                            if (DbReaderUser.IsDBNull(4) == false)
                            {
                                Tel.Text = DbReaderUser.GetString(4);
                            }
                            else
                            {
                                Tel.Text = "Non renseigné";
                            }
                            if (DbReaderUser.IsDBNull(5) == false)
                            {
                                TelPort.Text = DbReaderUser.GetString(5);
                            }
                            else
                            {
                                TelPort.Text = "Non renseigné";
                            }                        
                            connection.Close();
                        }
                        catch (Exception ex)
                        {
                            lblerror.Text = ex.Message;
                        }
     
                }
     
    }
    et maintenant mes abonnements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     <form runat="server" id="frmUser" onload="form_load">
     
    <asp:Button Text="Modifier mes informations" ID="valid"  onclick="Maj_user" runat="server" />
    voila en vous remerciant d'avance

  2. #2
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    bonjour,
    quand tu dis que tu perds la valeur, c'est que tes textboxs sont vides ou réinitialisées ?

  3. #3
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Salut,

    si tu mets un point d'arrêt dans ton code form_load, tu vas probablement voir qu'il est appelle a chaque chargement de page...et donc, qu'il te reinitialise les champs

    conseil 1: enleve le form_load, prends la logique du code pour faire une fonction ChargeDonnees, que tu appelles dans le Page_Load
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    protected void Page_Load(object sender, EventArgs e)
        {
            login = (string)Session["utilisateur"];
            if (login == null || login == "")
            {
                Page.Response.Redirect("default.aspx", true);
            } 
            if (!Page.IsPostBack) ChargeDonnees();
        }
    conseil 2:reprends ta partie acces aux donnees, lis cet article :
    http://johannblais.developpez.com/tu...acces-donnees/

    (Je vais demander des royalties sur les redirection ...sérieusement, c'est un classique...)

    Ta fonction Maj_user a quelques gros problèmes (accès aux données depuis ta couche interface utilisateur, connectionstrings en dur, 3 requetes sql la ou il n'en faudrait qu'une ...), même si ce n'est pas le cœur de ton pb du moment, autant faire bien du premier coup

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    Tout d'abord merci pour vos réponses, en modifiant le load comme tu me l'as conseillé le problème reste le même Ensuite je n'ai pas bien saisi cette partie de ta réponse
    (accès aux données depuis ta couche interface utilisateur, connectionstrings en dur

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    try
                {
                    connection1.Open();                
                    OdbcCommand DbCommand = connection1.CreateCommand();
                    DbCommand.CommandType = CommandType.Text;
                    DbCommand.CommandText = "update utilisateur set Util_mel=@mel, Util_Tel=@tel, Util_Tel_Port=@tel_port where Util_ID=@id";
                    OdbcParameter ParamTel = DbCommand.CreateParameter();
                    ParamTel.ParameterName = "@tel";
                    ParamTel.OdbcType = OdbcType.VarChar;
                    ParamTel.Direction = ParameterDirection.Input;
                    ParamTel.Value = Tel.Text;
                    OdbcParameter ParemTelPort = DbCommand.CreateParameter();
                    ParemTelPort.ParameterName = "@tel_port";
                    ParemTelPort.OdbcType = OdbcType.VarChar;
                    ParemTelPort.Direction = ParameterDirection.Input;
                    ParemTelPort.Value = TelPort.Text;
                    OdbcParameter ParamEmail = DbCommand.CreateParameter();
                    ParamEmail.ParameterName = "@mel";
                    ParamEmail.OdbcType = OdbcType.VarChar;
                    ParamEmail.Direction = ParameterDirection.Input;
                    ParamEmail.Value = email.Text;
                    OdbcParameter ParamId = DbCommand.CreateParameter();
                    ParamId.ParameterName = "@id";
                    ParamId.OdbcType = OdbcType.Int;
                    ParamId.Direction = ParameterDirection.Input;
                    ParamId.Value = user_id;
                    DbCommand.Parameters.Add(ParamTel);
                    DbCommand.Parameters.Add(ParemTelPort);
                    DbCommand.Parameters.Add(ParamEmail);
                    DbCommand.Parameters.Add(ParamId);
                    DbCommand.ExecuteNonQuery();
                    lblerror.Text = Tel.Text + " " + TelPort.Text + " " + email.Text;
                    connection1.Close();
                    Page.Response.Redirect("/Arbres/Utilisateurs Arbres/index_arbres_utilisateurs.aspx", true);
     
                }
                catch (Exception ex)
                {
                    lblerror.Text = ex.Message;
                }
    est-ce mieux ?

  6. #6
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Tu dois également vérifier que tu n'es pas dans la cadre d'un postback.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    Bonjour, même si cette vérification a lieu dans le load ? ( comme me l'as conseillé pvialatte).
    Merci de vos réponses.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/02/2008, 11h40
  2. Insertion dans textbox à l'endroit du focus
    Par micfont999 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2007, 01h22
  3. insertion dynamique de lignes dans un tableau
    Par loreleï85 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/06/2006, 17h32
  4. Réponses: 4
    Dernier message: 30/03/2006, 16h20
  5. [C#] Insertion dans un TextBox à la position du curseur
    Par papouAlain dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/12/2005, 15h25

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