Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Webmasters - Développement Web > ASP

ASP Développement Web ASP (pour ASPX voir le forum .NET). Voir FAQ ASP & Tutoriel ASP

Réponse
 
Outils de la discussion
Vieux 07/11/2008, 09h36   #1 (permalink)
Nouveau membre du Club
 
Date d'inscription: octobre 2008
Localisation: Suisse
Messages: 63
Par défaut Récupérer les données d'un formulaire

Bonjour,
j'ai beau chercher, mais je ne trouve pas comment récupérer les données de nom formulaire d'inscription, dans ma base de donnée Access.
Voici mon code de ma page de récupération :
----------------------------
Code :
<% 
Dim Nom, Prenom, Societe, Email, Pass1, Pass2, rs, Connstring
 
Nom = Request.Form("Nom") 
Prenom = Request.Form("Prénom")
Societe = Request.Form("Société") 
Email = Request.Form("Email") 
Pass1 = Request.Form("Mot de passe") 
Pass2 = Request.Form("Retapez votre mot de passe") 
%>
 
 
<%	
	Set cnn = Server.CreateObject("ADODB.Connection")
	ConnString = "DBQ=" & Server.MapPath("/test/recup.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25"
	cnn.Open ConnString
	SQL = "SELECT * FROM (Donnee)"
	Set RS = Cnn.Execute(SQL)
%>
 
 
<%
	SQL="SELECT * FROM (Donnee)"
	Set RS = Server.CreateObject("ADODB.Recordset")
	RS.Open SQL.Conn
	
	RS.addnew
	RS("Nom") = Request.Form ("Nom")
	RS("Prenom") = Request.Form ("Prénom")
	Rs("Societe") = Request.Form ("Société")
	RS ("Email") = Request.Form("Email") 
	RS ("Pass1") = Request.Form("Mot de passe") 
	RS ("Pass2") = Request.Form("Retapez votre mot de passe")
	RS.update 
	Set RS = Nothing
%>
 
Votre enregistrement a bien été fait.
 
<%
	cnn.Close
%>
----------------------------
Quand je test ma page, l'erreur suivante me vient :
Citation:
Microsoft VBScript runtime erreur '800a01a8'

Object required: 'SELECT * FROM (Donne'

/test/recuperation.asp, ligne 34

Et est-ce le bon code pour retrouvé les données que mon visiteur a mis dans la page d'inscription ?

Désolé de toute ces questions mais je ne m'y connais pas très bien, et je ne trouve pas beaucoup de documentation. Si vous pouviez m'aider(meme juste me donner des liens), Merci d'avance !

Dernière modification par Immobilis ; 07/11/2008 à 22h48
LaJess est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/11/2008, 18h51   #2 (permalink)
Modérateur
 
Avatar de kaiser59
 
Date d'inscription: novembre 2005
Localisation: Roubaix
Âge: 28
Messages: 966
Envoyer un message via MSN à kaiser59
Par défaut

Salut,

Première chose, inutile d'ouvrir et fermer le code asp pour chaque instruction.
Deux, pourquoi as-tu deux fois la requete Select pour dire la même chose ?
Trois, tu n'es pas en vba ici, utilises plutot la requete update (ou Insert) pour enregistrer tes informations provenant d'un formulaire.
Quatre, évite les espaces dans tes variables p.e : request.form("mot de passe") De plus, à quoi te sert tes variables nom, prenom etc... si tu mets à l'insertion request.form("").. ??
Cinq, utilises les balises code (#) du forum pour faire la distinction code - problème exposé.
Enfin, toutes les valeurs récuperant du text tu dois leur appliquer ceci :
nom = request.form("nom")
nom = replace(nom,"'","''")
Si tu ne fais pas ça, il suffit que l'on mette un apostrophe à son nom (ou autre champ de type text) pour dire que la syntaxe de la requete est fini.

Voiloù
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir !
----------------
Essayez d'expliquer, de la façon la plus claire possible votre problème.
----------------
Parfois une image vaut mieux qu'un long discours
----------------
FAQ ASP

Dernière modification par Immobilis ; 07/11/2008 à 22h50
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/11/2008, 11h49   #3 (permalink)
Nouveau membre du Club
 
Date d'inscription: octobre 2008
Localisation: Suisse
Messages: 63
Par défaut

Merci beaucoup !! J'ai tout refait mon code. J'arrive a afficher les informations que l'utilisateur a remplis dans le formulaire sur ma page de récupération.
Par contre, pour l'enregistrement des donnée, ca ne fonctionne toujours pas. Mon nouveau code :
Code :
 
<%
Set cnn = Server.CreateObject("ADODB.RecordSet")
	ConnString = "DBQ=" & Server.MapPath("/test/TestPass.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25"
	'Ouverture de la table dans la base
	cnn.Open "Donnee", Connstring, 2,3,2
	'Création d'un 'nouvel' enregistrement
	cnn.AddNew()
	'Sauvegarde des valeurs 
	cnn("Nom") = replace(Nom, "<", "&lt;")
	cnn("Prenom") = replace(Prenom, "<", "&lt;")
	cnn("Societe") = replace(Societe, "<", "&lt;")
	cnn("Email") = replace(Email, "<", "&lt;")
	cnn("Pass1") = replace(Pass1, "<", "&lt;")
	cnn("Pass2") = replace(Pass2, "<", "&lt;")
	'Enregistrement dans la base de donnée
	cnn.UpDate
	'Fermeture et destruction du record set
	cnn.close
	Set cnn=Nothing
%>
 
Voici l'erreur donnée :
Microsoft OLE DB Provider for ODBC Drivers erreur '80004005'

[Microsoft][Pilote ODBC Microsoft Access] Mise à jour impossible. La base de données ou l'objet est en lecture seule.

/test/recuperation.asp, ligne 45
LaJess est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/11/2008, 13h56   #4 (permalink)
Membre du Club
 
Date d'inscription: juillet 2008
Âge: 25
Messages: 97
Par défaut

Salut;
T'es sure que lorsque tu executes la page, le fichier de la base de données access n'est pas ouvert? Une bd access ne permet pas deux utilisateurs en meme temps.
Contact2012 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/11/2008, 14h24   #5 (permalink)
Nouveau membre du Club
 
Date d'inscription: octobre 2008
Localisation: Suisse
Messages: 63
Par défaut

Oui, il est bien fermé. Je ne comprend pas du tout le problème.
LaJess est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/11/2008, 21h10   #6 (permalink)
Modérateur
 
Avatar de Immobilis
 
Date d'inscription: mars 2004
Messages: 3 439
Par défaut

Salut,

Il faut donner les droits de "modification" sur la base de données à l'utilisateur IUSR_NOMDELAMACHINE qui est l'utilisateur délégé utilisé par IIS.

A+
__________________
Les regles du forum
Pensez au tag
Merki

Rejoignez-moi sur les groupes sociaux suivants: Tomb Raider Underworld. Quelle est votre Lara préférée? | America's Army
La Sophrologie
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/11/2008, 12h41   #7 (permalink)
Membre expérimenté
 
Avatar de roro06
 
Date d'inscription: avril 2007
Localisation: la côte d'Uzur
Messages: 594
Par défaut

... et également, si je ne m'abuse, les mêmes droits au dossier contenant ladite base
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)
roro06 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 20h26   #8 (permalink)
Modérateur
 
Avatar de Immobilis
 
Date d'inscription: mars 2004
Messages: 3 439
Par défaut

Citation:
et également, si je ne m'abuse, les mêmes droits au dossier contenant ladite base
Pas forcement, normalement, windows gère bien les droits sur un seul fichier. J'ajoute que ce peut être dangereux si la base se trouve sous la racine du site web et si le dossier contient d'autres fichiers qu'il ne faut pas modifier.

A+
__________________
Les regles du forum
Pensez au tag
Merki

Rejoignez-moi sur les groupes sociaux suivants: Tomb Raider Underworld. Quelle est votre Lara préférée? | America's Army
La Sophrologie
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 09h00   #9 (permalink)
Nouveau membre du Club
 
Date d'inscription: octobre 2008
Localisation: Suisse
Messages: 63
Par défaut

J'ai déja les droits, donc ce n'est pas sa
LaJess est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 13h40   #10 (permalink)
Modérateur
 
Avatar de Immobilis
 
Date d'inscription: mars 2004
Messages: 3 439
Par défaut

Citation:
Envoyé par LaJess Voir le message
J'ai déja les droits, donc ce n'est pas sa
Peux-tu etre plus explicite? Les droits de quoi lire, ecrire, modifier?
__________________
Les regles du forum
Pensez au tag
Merki

Rejoignez-moi sur les groupes sociaux suivants: Tomb Raider Underworld. Quelle est votre Lara préférée? | America's Army
La Sophrologie
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 14h11   #11 (permalink)
Nouveau membre du Club
 
Date d'inscription: octobre 2008
Localisation: Suisse
Messages: 63
Par défaut

Les droits au dossiers. Et j'ai controlé, ma base n'est pas en lecture seule.
Je ne vois vraiment pas ce qui cloche, et je dois avancé dans mon travail
En tout cas merci de m'aidez
LaJess est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 19h01   #12 (permalink)
Modérateur
 
Avatar de Immobilis
 
Date d'inscription: mars 2004
Messages: 3 439
Par défaut

Citation:
Envoyé par LaJess Voir le message
Les droits au dossiers.
Désolé ça veut rien dire. Quels sont les privilèges du compte utilisé pour IIS?

A+
__________________
Les regles du forum
Pensez au tag
Merki

Rejoignez-moi sur les groupes sociaux suivants: Tomb Raider Underworld. Quelle est votre Lara préférée? | America's Army
La Sophrologie
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 19h12   #13 (permalink)
Modérateur
 
Avatar de kaiser59
 
Date d'inscription: novembre 2005
Localisation: Roubaix
Âge: 28
Messages: 966
Envoyer un message via MSN à kaiser59
Par défaut

Citation:
Envoyé par LaJess Voir le message
Merci beaucoup !! J'ai tout refait mon code. J'arrive a afficher les informations que l'utilisateur a remplis dans le formulaire sur ma page de récupération.
Par contre, pour l'enregistrement des donnée, ca ne fonctionne toujours pas. Mon nouveau code :
Code :
 
<%
Set cnn = Server.CreateObject("ADODB.RecordSet")
	ConnString = "DBQ=" & Server.MapPath("/test/TestPass.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25"
	'Ouverture de la table dans la base
	cnn.Open "Donnee", Connstring, 2,3,2
	'Création d'un 'nouvel' enregistrement
	cnn.AddNew()
	'Sauvegarde des valeurs 
	cnn("Nom") = replace(Nom, "<", "&lt;")
	cnn("Prenom") = replace(Prenom, "<", "&lt;")
	cnn("Societe") = replace(Societe, "<", "&lt;")
	cnn("Email") = replace(Email, "<", "&lt;")
	cnn("Pass1") = replace(Pass1, "<", "&lt;")
	cnn("Pass2") = replace(Pass2, "<", "&lt;")
	'Enregistrement dans la base de donnée
	cnn.UpDate
	'Fermeture et destruction du record set
	cnn.close
	Set cnn=Nothing
%>
 
Voici l'erreur donnée :
Microsoft OLE DB Provider for ODBC Drivers erreur '80004005'

[Microsoft][Pilote ODBC Microsoft Access] Mise à jour impossible. La base de données ou l'objet est en lecture seule.

/test/recuperation.asp, ligne 45
Re

Deux choses
1/ Vire moi c'est ", 2,3,2" qui pour moi n'ont aucun intérêt, je ne les utilise jamais.
2/ Je me répète tu n'es pas en vb access, utilise une requête d'ajout INSERT plutôt que rs.addnew ce qui t'évitera d'avoir un SELECT (à utiliser en fait, uniquement pour vérifier s'il n'y aurait pas un doublon)
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir !
----------------
Essayez d'expliquer, de la façon la plus claire possible votre problème.
----------------
Parfois une image vaut mieux qu'un long discours
----------------
FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/11/2008, 22h48   #14 (permalink)
Modérateur
 
Avatar de Immobilis
 
Date d'inscription: mars 2004
Messages: 3 439
Par défaut

Citation:
Envoyé par kaiser59 Voir le message
1/ Vire moi c'est ", 2,3,2" qui pour moi n'ont aucun intérêt, je ne les utilise jamais.
Ben c'est bien dommage, parce que selon les choix que tu fais les resultats peuvent être très différents. Tu pourrais au moins expliquer pourquoi? Voici un post ou on en parle. J'y avais attaché un fichier montrant les différentes performance des curseurs.
Citation:
Envoyé par kaiser59 Voir le message
utilise une requête d'ajout INSERT plutôt que rs.addnew
Bah si tu dis pas pourquoi c'est pas interessant. Cette écriture est propre et sympathique. Pourquoi ne devrait-il pas l'utiliser?
Citation:
Envoyé par kaiser59 Voir le message
ce qui t'évitera d'avoir un SELECT (à utiliser en fait, uniquement pour vérifier s'il n'y aurait pas un doublon)
Ca veut dire quoi?

Bon, je te cherche un peu kaiser59 . Il faut expliquer un peut.
  1. Les options ont un grand interet lors de l'ouverture des recordset. Suivant les combinaisons, il sont plus ou moins rapides, permettent ou non de compter le nombre d'enregistrement, de faire de la pagination. Tu pourrais d'ailleurs utiliser les options "1, 3" au lieu de "2, 3, 2":
    Code :
    <%
    Dim strProvider
    dim rs, nouveau_num_auto
     
    strProvider = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=CheminVersLaBase;"
    Set rs = server.CreateObject("ADODB.recordset")
     
    rs.open "country", strProvider,1,3
    	rs.AddNew
    		rs("country_desc") = "valeur1"
    	rs.Update
    	nouveau_num_auto = rs("country_id")
    rs.close
    set rs = nothing
     
    response.write nouveau_num_auto
    %>
  2. INSERT plutot que AddNew, oui. C'est plus fiable je trouve. J'ai pas de meilleur explication.

A+
__________________
Les regles du forum
Pensez au tag
Merki

Rejoignez-moi sur les groupes sociaux suivants: Tomb Raider Underworld. Quelle est votre Lara préférée? | America's Army
La Sophrologie

Dernière modification par Immobilis ; 14/11/2008 à 23h00
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/11/2008, 18h17   #15 (permalink)
Membre expérimenté
 
Avatar de roro06
 
Date d'inscription: avril 2007
Localisation: la côte d'Uzur
Messages: 594
Par défaut

Bonjour

Citation:
1/ Vire moi c'est ", 2,3,2" qui pour moi n'ont aucun intérêt, je ne les utilise jamais.
Voilà qui me surprends beaucoup, en particulier en ce qui concerne la valeur de lockType, ici 3 qui correspond à adLockOptimistic. Si omise, la valeur par défaut est adLockReadOnly, (lecture seule). Comment faire un ajout d'enregistrement dans ce cas là ?

Le genre de bout de code qui marche très bien :

Code :
Dim rsCateg
 
Set rsCateg = Server.CreateObject("ADODB.Recordset")
rsCateg.ActiveConnection = connString
rsCateg.Source = "SELECT *  FROM donnees where id=-1"
rsCateg.CursorType = 2
rsCateg.CursorLocation = 2
rsCateg.LockType = 3
rsCateg.Open()
 
'... 
' La clause where id=-1 pour recevoir un jeu d'enregistrement vide
' c'est pour l'exemple
 
rsCateg.addnew
rsCateg("nom")="..."
rsCateg("prenom")="..."
' etc ...
 rsCateg.update
Citation:
utilise une requête d'ajout INSERT plutôt que rs.addnew
ça se défend, dans un certaine mesure.
Une requête insert aura des performances bien meilleures (y paraît, pas fais de bench), peut être utilisée au sein de transactions, etc ... , mais l'utilisation du code ci-dessus facilite grandement la maintenance (genre on te demande de rajouter une quinzaine ou une trentaine de champs supplémentaires de champs dans ta base, avec les traitements qui vont avec) ( c'est du vécu ! J'ai certaines tables qui contiennent plusieurs centaines de champs). Le choix de l'une ou l'autre méthode (il en existe d'autres encore, comme les procédures stockées) dépendra du trafic que tu escompte avoir sur ton site (et donc sur ta BDD) : Quelques requêtes par jour, ou plusieurs milliers par heure ?

Un petit conseil :
Citation:
cnn("Nom") = replace(Nom, "<", "&lt;")
Remplace ça par une fonction :
Code :
function traitement(data)
dim d
d=replace(data, "<", "&lt")
traitement=d
end function

cnn("Nom") = traitement(Nom)
juste pour le cas où tu aurais un deuxième caractère à traiter
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)
roro06 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ASPF.A.Q ASPF.A.Q ASP.NETTUTORIEL ASPTUTORIELS ASP.NET

Réponse

Précédent   Forum des développeurs > Webmasters - Développement Web > ASP



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide