[ASP3] Ma base de données ne se met pas à jour

daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012 - 30 janv. 2006 à 16:21
nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008 - 31 janv. 2006 à 17:12
Bonjour le forum,

Je travail avec asp3, vbscript et Access 2003 sous windows server 2003.

J'aimerais juste introduire des données via un site web asp et que ces
données soient enregistrées dans une table access.

J'ai créé un site de test que vous pouvez voir ici

http://164.15.112.38/delibes/chanteur.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%Response.Buffer = False%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title></head>

<%
dim cnn
dim rst
set cnn = server.createobject("ADODB.connection")
cnn.open "DSN=delibes"

set rst = server.CreateObject("ADODB.recordset")
rst.open "select * FROM [chanteur];",cnn

rst.movefirst
while not rst.EOF
%>
<td><%response.Write rst("nom")%>,
,
" size="4" />
</td>

<%
rst.movenext
wend
%>



<form id="form1" name="form1" method="post" action="recupchanteur.asp">





</form>


</html>

et voici le code de ma page "recupchanteur" feuille asp qui est censé
envoyer les données vers la table access :

J'aimerais juste entrer des cotes (exemple 18 , 15...) et en appuyant sur le
bouton, enregistrer ces cotes dans une table mais ça ne fonctionne pas. Pas
d'erreur mais lorsque je check la table de la base de données, il n'y a rien.

Voici le code de ma page chanteur.asp :

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<%
dim cnn
dim rst
const adOpenDynamic = 2
const adLockOptimistic = 3
set cnn = server.CreateObject("ADODB.CONNECTION")
cnn.open = "delibes"
set rst = server.CreateObject("ADODB.RECORDSET")
rst.open "select * FROM [chanteur];",cnn,2,3
rst.movefirst
'while not rst.eof
with request
rst("guitare") = .form("txtun")
rst("chant") = .form("txtdeux")
end with
'rst.movenext
'wend
rst.update
rst.close
set rst = nothing
cnn.close
set cnn = nothing

%>


Mise à jour effectuée

</html>

J'ai fais au plus simple, sans boucle... mais ça ne fonctionne pas.

J'ai pourtant donné l'autorisation de modification sur la base de données à
tout le monde.

Est-ce que vous voyez quelque chose d'anormal ?

Merci d'avance pour votre aide.

David

12 réponses

nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008
30 janv. 2006 à 16:59
Comme je te le disais sur l'autre post je prefere utiliser un requette sql

a la place de :
with request
rst("guitare") = .form("txtun")
rst("chant") = .form("txtdeux")
end with

je mettrais : update [chanteurs] set [guitare] = 'textun', [chant] = 'textdeux' where [nom] = 'renaud séchan';
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
30 janv. 2006 à 17:29
Merci de ta réponse

à partir d'ici, il considère le texte comme du commentaire :

'textun', [chant] = 'textdeux' where [nom] = 'renaud séchan';'"

voici le code entier après la modif que tu me conseilles :

<http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>



<%
dim cnn
dim rst
const adOpenDynamic = 2
const adLockOptimistic = 3
set cnn = server.CreateObject("ADODB.CONNECTION")
cnn.open = "delibes"
set rst = server.CreateObject("ADODB.RECORDSET")
rst.open "select * FROM [chanteur];",cnn,2,3
rst.movefirst
'while not rst.eof
'with request
'rst.fields("guitare") = .form("txtun")
'rst.fields("chant") = .form("txtdeux")
'end with
'rst.movenext
'wend
update [chanteurs] set [guitare] = 'textun', [chant] = 'textdeux' where [nom] = 'renaud séchan';'"
rst.update
rst.close
set rst = nothing
cnn.close
set cnn = nothing


%>
&nbsp;

Mise à jour effectuée



</html>

Merci encore
David
0
nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008
30 janv. 2006 à 17:54
le rst.update ne sert plus a rien donc tu peut l'enlever mais sinon ça devrait marcher
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
31 janv. 2006 à 14:56
Salut,

Merci pour ton aide d'hier soir.

Comme tu le dis, le SQL n'est pas si mal.

J'ai toujours un problème avec mon code, ça te dérangerais pas de regarder stp (j'ai une erreur 500).

Merci d'avance.

David

<%
'Récupérer le nombre de lignes à traiter
Str_NbLignes = Request.QueryString("NbLignes")
dim cnn
dim Str_Chanteur
dim Str_Guitare
dim Str_Chant
dim txtSQL


set cnn = server.CreateObject("ADODB.CONNECTION")
Cnn.Open(Application("delibes"))
'cnn.open "delibes"


' Récupérer les valeurs
For i = 1 to Str_NbLignes
Str_Chanteur = Request.Form("txtChanteur" & i)
Str_Guitare = Request.Form("txtGuitare" & i)
Str_Chant = Request.Form("txtChant" & i)


' Tentative d'insertion
'en cas d'erreur on va à la ligne suivante
on error resume next
txtSQL = ""
txtSQL = "insert into chanteur [(nom_chanteur, guitare, chant)]
values('" & txtChanteur & "', '" & txtGuitare & "' , '" & txtChant & "')";
Cnn.Execute (txtSQL)

'Si erreur => Update
if Err then
on error goto 0
txtSQL = ""
txtSQL = "update [chanteur]"
Cnn.Execute (txtSQL)
end if
Cnn.close
set Cnn = nothing
Next
Response.Redirect("pc75.asp") %>
0

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

Posez votre question
nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008
31 janv. 2006 à 16:27
je vois pas trop ou peut etre ton erreur
mais je te conseil(ça vaut ce que ça vaut) :
Evite le On error resume next
et active ta gestion d'erreur quand tu aura fini de developpement
0
nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008
31 janv. 2006 à 16:27
je vois pas trop ou peut etre ton erreur
mais je te conseil(ça vaut ce que ça vaut) :
Evite le On error resume next
et active ta gestion d'erreur quand tu aura fini le developpement
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
31 janv. 2006 à 16:33
Salut,

Merci pour ta réponse.

Firefox me dit :


Erreur de compilation Microsoft VBScript erreur '800a0409'


Constante chaîne non terminée


/delibes/recupchanteurpc75.asp, ligne 33

txtSQL = "insert into chanteur (nom_chanteur, guitare, chant)
-------------------------------------------------------------^

Internet explorer me dit erreur 500. Encore une bonne raison d'utiliser firefox.

Merci pour ton conseil, quand je pourrai appliquer ce que tu me dis, c'est que je serais déjà bien avancé, ce qui n'est pas encore le cas.

Meric quand même
0
nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008
31 janv. 2006 à 16:41
je crois avoir trouvé tu as oublié un " a la fin de ta ligne 33
txtSQL = "insert into chanteur [(nom_chanteur, guitare, chant)]values('" & txtChanteur & "', '" & txtGuitare & "' , '" & txtChant & "')";
0
nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008
31 janv. 2006 à 16:42
je crois avoir trouvé tu as oublié un " a la fin de ta ligne 33
txtSQL = "insert into chanteur [(nom_chanteur, guitare, chant)]values('" & txtChanteur & "', '" & txtGuitare & "' , '" & txtChant & "')";
0
nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008
31 janv. 2006 à 16:43
je crois avoir trouvé tu as tecalé un " a la fin de ta ligne 33
txtSQL = "insert into chanteur [(nom_chanteur, guitare, chant)]values('" & txtChanteur & "', '" & txtGuitare & "' , '" & txtChant & "')";

apres correction

txtSQL = "insert into chanteur [(nom_chanteur, guitare, chant)]
values('" & txtChanteur & "', '" & txtGuitare & "' , '" & txtChant & "');"
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
31 janv. 2006 à 17:01
Plus de message d'erreur maintenant !

Il fallait le mettre sur une seule ligne

txtSQL = "insert into chanteur (nom_chanteur, guitare, chant) values('" & txtChanteur & "', '" &txtGuitare & "' , '" & txtChant & "')"

Par contre la table se met toujours pas à jours.

Merci pour tout

David
0
nahzhir Messages postés 66 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 15 janvier 2008
31 janv. 2006 à 17:12
le "insert into ..." ne m'est pas a jour il ajoute une autre ligne dans a table
pour la mise a jour c'est "update ..."
cherche un tutorial SQL ça t'aidera
0
Rejoignez-nous