Boucle champ table dans textbox

Résolu
Jaber_ Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
Jaber_ Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous !

Voilà, j'essaie d'afficher dans un champ text multiligne les éléments d'un champ d'une table et le code ci-dessous ne m'affiche que le premier enregistrement...
Pouvez-vous m'aider svp ?
            MySqlDataAdapter Notif = new MySqlDataAdapter("SELECT Notifications FROM tb_notifications WHERE UserId='" + Id1 + "'", mcon);
      
            DataTable data = new DataTable();
            Notif.Fill(data);
            string Not1 = data.Rows[0][3].ToString();

            for (int i = 0; i < Not1.Length; i++) { TXT_Notifications.Text += "• " + Not1[i] + "\n"; }



La ligne
string Not1 = data.Rows[0][3].ToString(); est pour affiche le 3ème champ de la table qui est UserId

Merci de votre aide


A voir également:

4 réponses

Utilisateur anonyme
 
Bonjour peux tu poser un exemple de texte présent dans ta table et ce que tu voudrais obtenir?
0
Jaber_ Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Whismeril,

En fait, Dans un premier formulaire, je me connecte et l'Id de l'utilisateur est mémorisé.
Ensuite, dans se second formulaire, je me connecte à une seconde table :
CREATE TABLE `tb_notifications` (
  `NumId` int(11) NOT NULL,
  `DateNotif` datetime NOT NULL,
  `UserId` varchar(11) NOT NULL,
  `Notifications` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `tb_notifications` (`NumId`, `DateNotif`, `UserId`, `Notifications`) VALUES
(1, '2016-08-05 08:26:20', '1', 'Bonjour toi !'),
(2, '2016-08-05 14:31:22', '2', 'Salut');
(3, '2016-08-05 14:31:22', '1', 'Tu vas bien ?');

d'où je dois comparer le UserId (1) de l'Id de la première table et afficher la notification de celle-ci comme suite :
• Bonjour toi !
• Tu vas bien ?


Voilà, j'espère que j'ai été explicite :s
Merci encore pour ton aide !
Cordialement
0
Utilisateur anonyme
 
Les bases de données c'est pas mon fort et surtout pas avec un datatable, je me sers de Linq.
C'est pourquoi je ne t'ai pas demandé quelle requête tu fais, mais ce qui est sensé être là
            string Not1 = data.Rows[0][3].ToString();


Parce que ce qui est sûr c'est que
            for (int i = 0; i < Not1.Length; i++) { TXT_Notifications.Text += "• " + Not1[i] + "\n

Ça ne peut pas donner
• Bonjour toi !
• Tu vas bien 


Not1 est un string donc Not1[i] est un caractère pas une phrase.


Cela dit data.Rows[0][3].ToString(), au vue de ce que tu montres, ne peux retourner que Bonjour Toi!, et Tu vas bien ? doit se trouver dans data.Rows[1][3].ToString()

En supposant que tu travailles en FrameWork >= 4.0, tu fais un foreach sur tes Row, à chacune tu ajoutes "• " + la case 3 dans une list<string>.

A la fin de la boucle, tu faits un string.Join de cette list avec "\n\r" comme séparateur
0
Jaber_ Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Whismeril,

Et voilà ! avec ce code tout fonctionne parfaitement !

Dans le load :
MyConnexion.Open();

            using (MySqlCommand cmd = new MySqlCommand("select * from tb_notifications where UserId=" + Id1, MyConnexion))
            {
                MySqlDataAdapter adapter = new MySqlDataAdapter("select * from tb_notifications where UserId=" + Id1, MyConnexion);
                DataSet DS = new DataSet();
 
                adapter.Fill(DS);
                MySqlDataReader reader = cmd.ExecuteReader();

                for (int i = 0; i < DS.Tables[0].Rows.Count; i++)

                {
                    TXT_Notifications.Text = TXT_Notifications.Text + "• " + DS.Tables[0].Rows[i][3].ToString() + "\r\n";

                }
            }
MyConnexion.Close();
0