Mise a jour d'une table dans SQL server avec un formulaire

Résolu
alyste Messages postés 5 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 21 juin 2005 - 13 juin 2005 à 16:06
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 - 29 juin 2005 à 22:23
Bonjour,
Je suis débutante et j'ai beaucoup de mal à effectuer des mises à jour dans une base SQL server 2000 à partir d'un formulaire.
Au début j'avais réussi à inserer des données dans ma table avec rs.addnew blabla et rs.update.
Mais depuis que j'ai rajouté des choses pour modifier cette table cela ne marche plus du tout (je dois faire ca dans la cadre de mon stage et je connais très peu asp)
En plus je me demandais ce que signifient les chiffres dans :rs.open reqSql,DBConn,2,3 car des fois je vois 3,3 ou 1,3.
Et je ne sais pas ce que cela change.
Est ce que je dois faire des méthodes pour inserer, modifier et supprimer? et comment? je dois tout faire dans la même page, là où se trouve mon formulaire.
Merci pout toute aide

9 réponses

cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
14 juin 2005 à 10:23
La sub est une bonne idée, ça donnerais un truc dans ce genre là :



If themode = "modifier" Then

Modifier()

Else

Ajouter()

End If



Sub Modifier

If Action <> "valid" Then Exit Sub

'tout le traitement pour modifier

End Sub



Sub Ajouter

'toute la partie pour l'ajout de données

End Sub



(tout ça doit être dans la même pas evidement...)

Nurgle
C'est une grande folie que de vouloir être sage tout seul !
3
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
13 juin 2005 à 16:41
qu'est ce que tu veux dire par "cette table cela ne marche plus du tout"

Tu as un message d'erreur ? ou autre chose ?



Sinon, les chiffres représentent le curseur utilisé pour lire ta table
ainsi que le mode de lecture/écriture (locktype) ==> Explication ici (dans la F.A.Q.)!!


Nurgle
C'est une grande folie que de vouloir être sage tout seul !
0
alyste Messages postés 5 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 21 juin 2005
14 juin 2005 à 10:02
Salut Nurgle, c'est vraiment super sympas de me répondre aussi vite (c'est la première fois que je demande de l'aide de cette façon, avant je regardais beaucoup pour voir les exemples que je pouvais trouver)
En fait j'avais commencé petit à petit. J'ai 2 fichiers liste.asp et formulaire.asp. J'avais fait un formulaire avec champ texte , liste et textarea et je dois insérer, modifier et supprimer des données dans une table SPECTACLE.
J'ai une liste de personnes qui vient de la table et j'ai 3 boutons "inserer nouvel artiste", "modifier" et "supprimer" auxquels je dois associer mon formulaire.


Je commence par l'insertion avec:
reqSql="select * from SPECTACLE where S_ID='"& theId & "'"
set rs=server.CreateObject("ADODB.recordset")
rs.open reqSql,DBConn,3,3
rs.addnew
rs("S_ARTISTE")=Request.Form("artiste")
rs("S_LIEU")=Request.Form("lieu")
rs("S_PERIODE")=Request.Form("periode")
rs("S_ORDRE")=Request.Form("ordre")
rs("S_LANG")=Request.Form("langue")
rs("S_TARIF")=Request.Form("tarif")
rs("S_DOC")=Request.Form("texte")
rs("S_IMAGE")=Request.Form("image")
rs.update


et cela marchais très bien, cela insérait les données dans ma table.

J'essaie maintenant d'ajouter du code pour la modif, on m'a dit de faire des "if" pour chaque action, mais du coup cela ne modifie pas et cela n'insère plus non plus.
voilà le type de code qu'on m'a conseillé d'utiliser:

if theMode="modifier" then
Action = Left(UCase(Request("action")),5)
If Action="valid" Then
sql = "update spectacle " sql sql & "Set S_ARTISTE" & Request.form("artiste")& "," sql sql & "S_PERIODE'" & Request.form("periode") & "'," sql sql & "S_LIEU'" & Request.form("lieu") & "' " sql sql & "S_ORDRE'" & Request.form("ordre") & "' " sql sql & "S_LANG'" & Request.form("langue") & "' " sql sql & "S_TARIF'" & Request.form("tarif") & "' " sql sql & "S_DOC'" & Request.form("texte") & "' " sql sql & "WHERE Id" & Request.form("id")
Set rs = Server.CreateObject("ADODB.Connection")
rs.Open sql,DBConn,2,3
Set rs= DBConn.Execute(sql)
msg = "modification effectu&eacute;e"
else reqsql "SELECT * FROM spectacle where S_ID" & theId & ""
Set rs = DBConn.Execute(reqSql)
theArtiste = rs("S_ARTISTE")
thePeriode = rs("S_PERIODE")
theLieu = rs("S_LIEU")
theOrdre = rs("S_ORDRE")
theLangue = rs("S_LANG")
theTarif = rs("S_TARIF")
theDoc = rs("S_DOC")
theImage = rs("S_IMAGE")


End If
end if

Je sais pas si d'utiliser des if est la meilleure solution, je pensais plutôt à une fonction ou une procédure type "sub" mais je maîtrise pas vraiment.
Je continue à chercher dans le bouquin.

A bientôt!

Aly
0
alyste Messages postés 5 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 21 juin 2005
14 juin 2005 à 10:14
Au fait j'ai oublié de te répondre, non je n'ai pas d'erreur, mais cela me donne l'impression que ca marche. quand je valide, le formulaire se vide (mais le message n'apparait pas) et quand je verifie dans la BDD, il n'y a rien ou des fois il y a une insertion qui apparait, mais vide.


Aly
0

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

Posez votre question
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
14 juin 2005 à 10:25
désolé pour la faute : (tout doit être dans la même page évidement )
0
alyste Messages postés 5 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 21 juin 2005
14 juin 2005 à 17:06
Merci je vais essayer et on verra bien mais ce qui est chiant c'est qu'il y a 3 actions différentes..
A bientôt


Aly
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
14 juin 2005 à 17:12
S'il y a trois actions différentes fait plutôt un :



Select Case Themonde

Case "Modifier"

modifier()

Case "Ajouter"

ajouter()

Case "3e truc"

autretruc()

End Select


Nurgle
C'est une grande folie que de vouloir être sage tout seul !
0
alyste Messages postés 5 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 21 juin 2005
21 juin 2005 à 11:06
Désolée de te repondre si tard je n'avais pas vu le mail. J'avais pensé aussi à faire des case.

J'ai essayé de le faire mais je n'ai pas du faire les choses comme il
fallait. Ca ne marche pas, la page ne s'affiche pas et il ne m'indique
pas où se trouve l'erreur:



<!-- #include file="../shared/lib/database_connect.inc.asp" -->

<% session("mode")=lcase(trim(mid(request.ServerVariables("SCRIPT_NAME"),28,2))) %>

<%

theMode=request.QueryString("mode")

theId=request.QueryString("id")



Sub Modifier()

'tout le traitement pour modifier

Action = Left(UCase(Request.Form("action")),5)

If Action="valid" Then

reqSql="SELECT * FROM spectacle where S_ID =" & theId & ""

set rs = server.CreateObject("ADODB.Recordset")

rs.open reqSql,DBConn,3,3

rs("S_ARTISTE")=Request.Form("artiste")

rs("S_LIEU")=Request.Form("lieu")

rs.update

rs.Close : Set rs = Nothing

DBConn.Close : Set DBConn = Nothing

else

reqsql "SELECT * FROM spectacle where S_ID" & theId & ""

Set rs = DBConn.Execute(reqSql)

theArtiste = rs("S_ARTISTE")

theLieu = rs("S_LIEU")

theOrdre = rs("S_ORDRE")

End If

end if

End Sub



Sub Inserer()

'toute la partie pour l'ajout de données

reqSql="select * from SPECTACLE"

set rs=server.CreateObject("ADODB.recordset")

rs.open reqSql,DBConn,3,3

rs.addnew

rs("S_ARTISTE")=Request.Form("artiste")

rs("S_LIEU")=Request.Form("lieu")

rs.update

rs.Close : Set rs = Nothing

DBConn.Close : Set DBConn = Nothingend if

End Sub



sub Supprimer()

'tout le traitement pour modifier

Action = Left(UCase(Request.Form("action")),5)

If Action="suppr" Then

reqSql="SELECT * FROM spectacle where S_ID =" & theId & ""

set rs = server.CreateObject("ADODB.Recordset")

rs.open reqSql,DBConn,3,

rs.delete

rs.Close : Set rs = Nothing

DBConn.Close : Set DBConn = Nothing

else

reqsql "SELECT * FROM spectacle where S_ID" & theId & ""

Set rs = DBConn.Execute(reqSql)

theArtiste = rs("S_ARTISTE")

thePeriode = rs("S_PERIODE")

theLieu = rs("S_LIEU")

theOrdre = rs("S_ORDRE")

theLangue = rs("S_LANG")

theTarif = rs("S_TARIF")

theDoc = rs("S_DOC")

theImage = rs("S_IMAGE")



End If

End Sub



'msg = "insertion reussie"

%>

<% select case session("mode")

case "in" then inserer()

case "mo" then modifier()

case "su" then supprimer()

end select %>

<% ' if session("mode")="mo" then modifier()

%>





<!-- #include file="../shared/lib/database_disconnect.inc.asp" -->

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<title>ARTISTE</title>

<link href="monstyle.css" rel="stylesheet" type="text/css">

</head>







ARTISTE


<%If Action <> "valid" Then

' elseif Action <> "suppr" Then

%>

<form method="post" action="<%=request.ServerVariables("SCRIPT_NAME")%>" target="_self">

">">



<label for=\"id_nom\">Nom / intitulé : </label></td>

">,

----

<label for="id_periode">P&eacute;riode : </label>,

" size="50">,

----

&nbsp;&nbsp;


<% end if%>

<%end if%>

<%' =msg %>

</form>



</html>



Apparemement il faut rajouter des variables d'environnement dans action="<%=request.ServerVariables("SCRIPT_NAME")%>"
dans le genre
action="<%=request.ServerVariables("SCRIPT_NAME")&"?id="&theId%>"
mais je ne sais pas où mettre le "mode"

. Aly
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
29 juin 2005 à 22:23
déjà :

Pas de 'Case "machin" Then Truc()' !!

l'erreur peut venir de là (je suis pas sûr mais on sait jamais...)

tu peux faire sur plusieurs lignes :

'

Case "machin"

Machin()

Case "truc"

Truc()

'

etc...



ensuite, il y a un truc que je comprend pas : ton formulaire est en
méthode "post", donc le champ "hidden" nommé "mode" ne peut pas être
récupéré avec Request.QueryString() !!

(mais plutôt avec Request.Form()...non ?)




Nurgle
C'est une grande folie que de vouloir être sage tout seul !
0
Rejoignez-nous