Mise a jour d'une table dans SQL server avec un formulaire [Résolu]

Signaler
Messages postés
5
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
21 juin 2005
-
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
-
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

Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
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 !
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
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 !
Messages postés
5
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
21 juin 2005

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
Messages postés
5
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
21 juin 2005

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
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
désolé pour la faute : (tout doit être dans la même page évidement )
Messages postés
5
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
21 juin 2005

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
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
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 !
Messages postés
5
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
21 juin 2005

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
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
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 !