[ASP.net][C#] Update MySQL Grrrr

Résolu
Signaler
Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007
-
Messages postés
2
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
24 janvier 2005
-
Bon bah c'est encore moi, pour la N-ième fois je viens me plaindre sur le forum, je commence a etre un habitué!

Cette fois ci je ne pense pas que ca seras un simple probleme d'espace,
alors merci d'avance a tout ceux qui vont me preter main forte !

Mon probleme est que comme toujours j'ai recupérer le code fait par WebMatrix et j'l'ai adapter pour que ca fonctionne avec MySQL!

On a donc un Datagrid avec 2 colonne pour la gestion d'une base de donnée!

une colonne avec 'Modifier', une colonne avec 'Supprimer' (d'ailleur la suppression fonctionne tres bien )

Lorsque l'on clic sur 'Modifier', la ligne de l'enregistrement concerné
apparait qu'avec des TextBox (pour pouvoir faire les modif') et le
'Modifier' se "transforme" en 'Valider Annuler' qui vous l'aurez
compris permettent de valider ou annuler la modification apportée!

Bon j'espere avoir été assez clair, maintenant mon probleme:

Tout mes TextBox apparaissent mais apres les avoir remplis et avoir
cliqué sur 'Valider' bah pouf y'a rien qui s'affiche, en fait je tape
pour rien et ca c'est pas plaisant vous en conviendrez !

Alors bah je vous laisse mon code pour la fonction que je suppose foireuse:



void DataGrid_Update(object sender, DataGridCommandEventArgs e) {

// update the database with the new values

// get the edit text boxes

//string ID = ((TextBox)e.Item.Cells[2].Controls[0]).Text;

string Nom = ((TextBox)e.Item.Cells[3].Controls[0]).Text;

string Prenom = ((TextBox)e.Item.Cells[4].Controls[0]).Text;

string Pass = ((TextBox)e.Item.Cells[5].Controls[0]).Text;



// TODO: update the Command value for your application

OdbcConnection myConnection = new OdbcConnection(ConnectionString);

OdbcCommand UpdateCommand = new OdbcCommand();

UpdateCommand.Connection = myConnection;



if (AddingNew){

UpdateCommand.CommandText =
"INSERT INTO Login(Nom, Prenom, Pass) VALUES (@Nom, @Prenom, @Pass)";

}else{

UpdateCommand.CommandText "UPDATE Login SET Nom @Nom, Prenom = @Prenom, Pass = @Pass WHERE ID =
@ID";

}



//UpdateCommand.Parameters.Add("@ID", OdbcType.VarChar, 11).Value = ID;

UpdateCommand.Parameters.Add("@Nom", OdbcType.Text, 40, "Nom"); //).Value = Nom;

UpdateCommand.Parameters.Add("@Prenom", OdbcType.Text, 20, "Prenom"); //).Value = Prenom;

UpdateCommand.Parameters.Add("@Pass", OdbcType.Text, 20, "Pass"); //).Value = Pass;



// execute the command

try {

myConnection.Open();

UpdateCommand.ExecuteNonQuery();

}

catch (Exception ex) {

Message.Text = ex.ToString();

}

finally {

myConnection.Close();

}

// Resort the grid for new records

if (AddingNew) {

DataGrid1.CurrentPageIndex = 0;

AddingNew = false;

}



// rebind the grid

DataGrid1.EditItemIndex = -1;

BindGrid();

}



Voilà sinon je peux vous énumérer les fonctions utilisé:

void Page_Load(object sender, EventArgs e)
void DataGrid_ItemCommand(object sender, DataGridCommandEventArgs e)

void CheckIsEditing(string commandName)

void DataGrid_Edit(object sender, DataGridCommandEventArgs e)

void DataGrid_Update(object sender, DataGridCommandEventArgs e)

void DataGrid_Cancel(object sender, DataGridCommandEventArgs e)

void DataGrid_Delete(object sender, DataGridCommandEventArgs e)

void DataGrid_Page(object sender, DataGridPageChangedEventArgs e)

void AddNew_Click(Object sender, EventArgs e)

protected bool AddingNew

void BindGrid()



Ah oui j'ai aussi un LinkButton pour ajouter un enregitrement (d'où le
AddNew) qui me pose aussi des probleme, mais chaque chose en sont
temps, je reviendrais dessus apres avoir reglé le pb de la modif'!



Merci a tous pour votre future aide!


Mets spiderman comme sonnerie de téléphone à ta
copine si tu trouve pas d'autre moyen pour la faire grimper au plafond
(Dixit SFR)

17 réponses

Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007

En fait je pense avoir trouvé plus simple...lol sans vouloir me la raconter!



UpdateCommand.CommandText "UPDATE Login SET Nom'"+ Nom +"', Prenom = '"+ Prenom +"', Pass = '"+ Pass +"' WHERE
ID = 2";


Ca fonctionne donc je pense que je V garder cette solution, sinon c'est quoi le trace.warn(sql)??

le response.write me dit qqch je V retourné potasser les book moi!



En tout cas merci pour tout!


Mets spiderman comme sonnerie de téléphone à ta
copine si tu trouve pas d'autre moyen pour la faire grimper au plafond
(Dixit SFR)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
oui en fait quand un serveru demande une page, il envoie une requete,
cette requete comporte des infos sur le client, navigateur, langue, IP,
url de la page qu'il provient les cookies, etc... tu peux obtenir quasi
toutes les infos via la classe Httputility.request, ou plus simple
encore quand t'es dans une page. me.request.querystring("Id") par
exemple, il y aussi toutes les valeurs de la form d'avant.
Request.form(""). Ensuite le serveur analyse la requete, il regarde
l'extension, et suivant celle ci regarde qui est concerné. Si c'est une
aspx le processus aspnet_wp va prendre la suite, il analyse la page
etc... il y a plusieurs evenements avant que celle ci soient renvoyée,
le page_init, le page_load, le page_render etc... (a noter qu'en
asp.net 2 il y en aura beaucoup d'autres) la réponse se fait dans le
page_render, (le page_end, n'est effectuée que par le garbage
collector, donc quand il a besoin de mémoire (pour simplifier)) si tu
fais un response.write, ca va t'afficher le texte en haut de la reponse
(en fait en haut du html de la réponse, car la réponse est constitué de
plusieurs choses, le content-type (pour savoir si c'est une image, du
html, etc...) etc...) et ensuite vient le reste de la page.



donc quand tu fais un response.write("test") ca va juste t'afficher ton
texte en haut, je te deconseil cette méthode, car le HTML sera ensuite
mal formée. Mais quand tu veux debugger ca nous va tres bien ca nous permet rapidement de voir l'etat de nos variables.



L'autre solution pour voir afficher des infos sur nos variables, et
d'avoir aussi plein d'autres infos, c'est d'utiliser l'attribut trace
de la page. Pour cela il faut tout simplement ajouter <%@ page
language= "VB" trace="true" %> cela aura pour effet d'afficher à la
fin de la réponse, des infos bien utiles, comme le temps de chargement,
les valeurs des cookies, les valeurs de la requete etc...

tu peux aussi ecrire la dedans avec ton code. pour cela il te suffit de
faire trace.warn("text") ou trace.write("text") le premier ecrira en
rouge, le deuxieme en noir. ceci te permet en plus de voir le temps
d'execution, l'ordre des évenements etc... c'est pout ca que c'est tres
pratique.





Je suis pas sur de tout ce que j'ai dit si haut, c'est ce que j'ai
compris, mais je vais surement bientot m'acheter un bouquin sur le
fonctionnement détaille du protocole http



j'espere que la longueur du texte que j'ai ecrit ne te repoussera pas trop et que j'ai pas dit trop de conneries Pour ce qui est de m'aider, ouais pourquoi pas, mais mes questions sont pas vraiment de cette ordre la généralement ca va chercher un peu plus compliqué et puis j'ai rarement des questions, quand j'en ai, je trouve les réponses



sur ce



@+






<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr<sp =""></sp>
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Lol

t'as l'air de bien t'amuser avec MySql
mais je tient à te féliciter car c'est pas souvent qu'on voit des
messages hyper clair, j'ai meme pas essayé de comprendre ce que tu
disais



Moi je vois pas de problemes flagrant, je pense à un problème au niveau
de ta requete. Le insert fonctionne ? essaye de passer tes paramètres
en dur. Et oui c'est normal que la ligne ID soit commenté ? car si tu
laisse l'ID vide ta fonction risque de planter



<!--StartFragment -->
<hr>

Cyril
Webmaster de,
,
Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007

Merci bien JesusOnline!

Bah tu sais je m'éfforce d'etre le plus clair possible, enfin d'apporté
un maximum d'élément, pour que la réponse soit la plus claire possible
aussi!

Et puis je vais pas soulé les gens avec des trucs que j'aurais deja essayé ou quoi que ce soit!

Mais tu as raison, je vais testé la requete en dur sur PHPmyAdmin et je
verrais bien ce que ca va donné, je te tiens au courant... héhé pcq en
plus tu pourras peu etre m'eclairé!

Merci d'avoir repondu en tout cas!

Bonne nuit ;)

Mets spiderman comme sonnerie
de téléphone à ta copine si tu trouve pas d'autre moyen pour la faire
grimper au plafond (Dixit SFR)
Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007

Allez hop, on s'y remets de si bon matin!

Bon alors, j'ai suivi tes conseils mon cher JesusOnline, et j'ai donc saisi ces 2 requetes dans PHPmyAdmin:
- INSERT INTO Login(Nom, Prenom, Pass) VALUES (MOI, Seb, 2222)- UPDATE Login SET Nom MOI, Prenom Seb, Pass = 2222 WHERE ID = 2



Bon, bien entendu ca ne fonctionnait pas puisqu'il faut
mettre les valeurs entre guillemets, ce que j'ai fais par la suite et
qui fonctionne à merveille!

Donc, questions ... :

- Est ce que le fait d'avoir @Nom, @Prenom... à la place des valeurs peut etre la cause de mes soucis!?

- Lorsque l'on utilise @Variable, qui je suppose
permet de récupérer les valeurs saisies d'un TextBox, les guillemets
sont ils mis "automatiquement"? cad ne faut il pas faire une petite
manipulation de chaine de caracteres pour ajouter les guillemets?



Bah voilà, ca peut parraitre des questions tres débile mais au moins, la prochaine fois je connaitrais avec exactitude l'utilité de chaque chose!

En vous remerciant bien!

Bonne prog' a tous, et merci de tes éclaircissements jeune fils de vigneron

Tcho tcho!


Mets
spiderman comme sonnerie de téléphone à ta copine si tu trouve pas
d'autre moyen pour la faire grimper au plafond (Dixit SFR)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Lorsqu'on utilise des variables @var pas besoin de faire une manip de
chaine, heureusement ... et puis je ne pense pas que c'est source de
problème, moi personnellement je fais tout mes accés à la base de
données via des procédures stockées, comme tu le fais tu t'en approches
un peu plus



Mais ton problème est il resolu ?



Ce que je voulais dire par en dur c'est : UpdateCommand.CommandText "UPDATE Login SET Nom"DURAND", Prenom = "Cyril", Pass = "Pass" WHERE
ID = 2";





@+



PS : je prefere etre appellé par mon prénom : Cyril

<!--StartFragment -->
<hr>

Cyril
Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007

Pas de probleme Cyril,

Je respecte le fait que tu prefere qu'on t'appelle par ton prenom, que
je n'avais pas vu d'ailleurs, puisque je lis sans vraiment faire
attention au signature.

Toujours est il, ce n'etait pas pour te facher que je te disais ca ;)

Bon, beh sinon voui, je vais surement tester en dur comme TU me le dis,
je n'ai meme pas pensé a faire ca....pfffff, nan mais moi, n'importe
quoi!

Bon je verifie demain et te tiens au courant ;)

MERCI

Mets spiderman comme sonnerie de
téléphone à ta copine si tu trouve pas d'autre moyen pour la faire
grimper au plafond (Dixit SFR)
Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007

Ouuaah mais t'es un dieu de la programmation!

Bon j'ai fais mes tests, et effectivement en dur ca passe nickel
chrome, j'en deduit donc que j'ai un probleme au niveau de mes TextBox
(enfin je pense)!

Mais comment faire pour gérer ce probleme?

Bon bah je crie encore une fois à l'aide et je continu a chercher de mon coté egalement.

Meri a toute aide qui se trouve bienvenue ;)



Bonne prog'

Mets spiderman comme sonnerie de
téléphone à ta copine si tu trouve pas d'autre moyen pour la faire
grimper au plafond (Dixit SFR)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
essaye comme ca :


string sql "UPDATE Login SET Nom"DURAND", Prenom = "Cyril", Pass = "Pass" WHERE
ID =" +
((TextBox)e.Item.Cells[2].Controls[0]).Text
;

Remplace les tous, je suis pressé



fais un response.write(sql) ou un ( trace.warn(sql) et met l'attribut trace à true )



tu verras ce qu'on tes checkbox dans le ventre


<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Oui lol t'as solution est plus simple



le trace.warn ? c'est pas mal



rajoute ca :

<%@ Page language="C#" Trace="True"%>



et ensuite



trace.warn("categorie","message") ou trace.warn("message") ensuite regarde tout en bas de ta page



ca te dit quoi les response.write ?


<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr
Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Je crois que ton precedent message n'a pas marché

<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr<sp =""></sp>
Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007

Effectivement mais en fait je n'arrivais pas utiliser le site, ca plantais...

Je t'avoue franchement que je n'ai pas eu trop le temps de plonger dans
les bouquins, mais pour ce qui est du response.write, il me semble que
ca a un rapport avec les informations qui sont envoyé dans la page...je
ne sais pas si je me fais bien comprendre!, lol!!

En fait si j'me souviens bien, etant donné que le client et le server
communique ensemble il s'envoie forcement des données, requetes... il
me semble que le response.write doit interagir la dedans, dis moi si je
suis loin du compte, ce qui n'est pas improbable, PTDR!

Sinon, pour le trace.warn, je n'ai pas eu l'idée d'appliqué, puisque je
suffoquais de joie d'avoir trouvé ma solution qui m'as permis d'avancer
allègrement, lol!

En tout cas je te remercie pour tout, je V essayer de voir kan meme a quoi sert tout ce que tu m'as dis!

Si t'as un tuto ou des explications, je suis open...!

En attendant, je vais acceptée la reponse etant donnée que je ne suis plus bloqué, ;)

Merci encore cyril et au plaisir de te redemander de l'aide pcq j'ai
pas trop l'impression que c'est moi qui vais t'en apporter, mdr!

Mets
spiderman comme sonnerie de téléphone à ta copine si tu trouve pas
d'autre moyen pour la faire grimper au plafond (Dixit SFR)
Messages postés
52
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
11 avril 2007

Bah ouai j'ai bien compris que t'étais mille fois meilleur que moi, pas la meine de te la péter, mdr!

Je blague, enfin, oui t'inkiete j'ai tout lu,je le relirai encore plus
tard pcq là il se fait tard et j'ai encore pas mal de chose a faire,
mais ce n'est pas ces quelques lignes qui vont me rebuter, tres cher!

Les infos qu'on me donne, je les lis toutes, pcq la connaissance est
l'une des plus grandes richesses, et ce serais dommage de gacher ces
infos, de plus si je veux, je peux fouiller et approfondir un peu
lorsque j'aurai un peu plus de tps ;)



Allez merci encore pour tout et a plus tard sur une autre question existentiel de moi! MDR

Mets
spiderman comme sonnerie de téléphone à ta copine si tu trouve pas
d'autre moyen pour la faire grimper au plafond (Dixit SFR)
Messages postés
2
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
24 janvier 2005

Salut,

j'ajoute mon petit post parceque je suis dans le même cas que spiderman. En fait, j'ai bien fait tout comme il faut pour le dataGrid mais je ne récupère pas dans les textBox les valeurs de ce que j'ai entré : j'arrive à récupérer les valeurs d'origine mais pas celle rajoutée : je ne comprends pas du tout d'oû cela peut venir... Si quelqu'un à déjà eu ce problème, merci d'avance....
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
tu dois avoir un problème avec le postback.

A mon avis, les valeurs que tu appelles d'origine, c'est les valeurs
que tu definis par le code dans le page_load, pour pallier à ce
problème il faut tout simplement faire ceci dans le page_load



if not page.ispostback

' binddata()

end if



<!--StartFragment -->
<hr>

Cyril - Webmaster de Hoshimi.CodeS-SourceS.fr<sp =""></sp>
Messages postés
2
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
24 janvier 2005

Ouaip,
j'avais bien un problème de IsPostBack. En fait, je rechargeais mon dataset à chaque load de la page sans vérifier le PostBack. Ce que je ne comprends pas par contre, c'est que je pensais que même si je rechargeais le dataset, l'objet e que renvoit la commande update du datagrid contenait tout et qu'il n'était pas lié au dataset....