IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Insertion des données dans une table mysql


Sujet :

ASP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 49
    Par défaut Insertion des données dans une table mysql
    Bonjour,
    Je suis débutante en asp.
    Ma base de données est en access.
    je voulais insérer des données à partir d'un formulaire dans la table clients.
    Id_client c'est le clé primaire de la table clients (Id_client est auto-incrémente)
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    <!--#include file="../Connections/Produits.asp" -->
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    DSN_BASE="DBQ="& Server.Mappath("../database/produits.mdb")&";Driver={Microsoft Access Driver (*.mdb)};DriverId=25"
    conn.Open DSN_BASE
    
    	'Save entered username and password
    	gender = Request.Form("gender")
    	nom = Request.Form("nom")
    	prenom = Request.Form("prenom")
    	societe = Request.Form("societe")
    	adress1 = Request.Form("adress1")
    	adress2 = Request.Form("adress2")
    	postal = Request.Form("postal")
    	ville = Request.Form("ville")
    	pays = Request.Form("pays")
    	tel = Request.Form("tel")
    	gsm = Request.Form("gsm")
    	fax = Request.Form("fax")
    	login = Request.Form("login")
    	email = Request.Form("email")
    	pass1 = Request.Form("pass1")
    	pass2 = Request.Form("pass2")
    
    	if email = "" then Response.redirect("login.asp?login=createnamefailed")
    	if pass1 = "" then Response.Redirect("login.asp?login=createpassfailed")
    	if pass1 <> pass2 then Response.Redirect("login.asp?login=createpassfailed")		
    		
    	Function GenereAlea()
         Dim RefreshAlea 'Num Aleatoire
         Dim RefreshSec 'Nb de secondes depuis le 31/12/95
         Dim RefreshNum
         Randomize
         RefreshAlea = Int((100 * Rnd) + 1)
         RefreshSec = DateDiff("s", "12/31/95", Now)
         RefreshNum = CStr(RefreshSec) & CStr(RefreshAlea)
         GenereAlea = RefreshNum
         End Function
    	 
    	
    	
    	'Build connection
    	'set conn = server.CreateObject ("ADODB.Connection")
    	'conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath ("users.mdb")
    	set rs = server.CreateObject ("ADODB.Recordset")
    	'Open all records
    	rs.Open "SELECT * FROM clients", conn, 3, 3 
    	
    	'Check if username doesn't already exist
    	do while not rs.EOF
    		if rs("Email_client")=email then
    			set rs=nothing
    			set conn=nothing
    			Response.Redirect("login.asp?login=createnamefailed")
    		end if
    		rs.MoveNext
    	loop
    
    
    	'Add a record
    	rs.AddNew 
    	'Put username and password in record
    
    	'rs("Id_client")=111
    	rs("Code_client")=13
    	rs("login")=login
    	rs("password")=pass1
    	rs("Secu_level")=1
    	rs("Cat_client")=1
    	rs("tva_client")=1
    	rs("DateCreation")=Date
    	rs("HeureCreation")=Time
    	rs("Email_client")=email
    	rs("Genre_client_facturation")=gender
    	rs("Nom_client_facturation")=nom
    	rs("Prenom_Client_facturation")=prenom
    	rs("Societe_client_facturation")=societe
    	rs("Adresse1_client_facturation")=adress1
    	rs("Adresse2_client_facturation")=adress2
    	rs("Postal_client_facturation")=postal
    	rs("Ville_client_facturation")=ville
    	rs("Pays_client_facturation")=pays
    	rs("Tel_client_facturation")=tel
    	rs("Fax_client_facturation")=fax
    	rs("Gsm_client_facturation")=gsm
    	rs("Num_rcs")=0
    	rs("Num_siret")=0
    	rs("Num_ape")=0
    	rs("Points_fid")=1
    	rs("informations")=""
    	
    	'Save record
    	rs.Update 
    	
    	set rs=nothing
    	
    	'set dbrec=nothing
    	set conn=nothing
    
    	Response.Redirect("login.asp?login=creatednew")
    %>
    Il m'affiche une erreur la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Microsoft OLE DB Provider for ODBC Drivers erreur '80004005'
     
    [Microsoft][Pilote ODBC Microsoft Access]Erreur dans la ligne
     
    /client/create.asp, ligne 95
    c'est la ligne qui est en rouge dans le code.

    Avez vous une réponse??

    Merci d'avance.

  2. #2
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 49
    Par défaut
    Bonjour,
    j'ai changé un peu le code.
    voici mon nouveau code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    <!--#include file="../Connections/Produits.asp" -->
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    DSN_BASE="DBQ="& Server.Mappath("../database/produits.mdb")&";Driver={Microsoft Access Driver (*.mdb)};DriverId=25"
    conn.Open DSN_BASE
     
    	'Save entered username and password
    	gender = Request.Form("gender")
    	nom = Request.Form("nom")
    	prenom = Request.Form("prenom")
    	societe = Request.Form("societe")
    	adress1 = Request.Form("adress1")
    	adress2 = Request.Form("adress2")
    	postal = Request.Form("postal")
    	ville = Request.Form("ville")
    	pays = Request.Form("pays")
    	tel = Request.Form("tel")
    	gsm = Request.Form("gsm")
    	fax = Request.Form("fax")
    	login = Request.Form("login")
    	email = Request.Form("email")
    	pass1 = Request.Form("pass1")
    	pass2 = Request.Form("pass2")
     
    	if email = "" then Response.redirect("login.asp?login=createnamefailed")
    	if pass1 = "" then Response.Redirect("login.asp?login=createpassfailed")
    	if pass1 <> pass2 then Response.Redirect("login.asp?login=createpassfailed")		
     
    	Function GenereAlea()
         Dim RefreshAlea 'Num Aleatoire
         Dim RefreshSec 'Nb de secondes depuis le 31/12/95
         Dim RefreshNum
         Randomize
         RefreshAlea = Int((100 * Rnd) + 1)
         RefreshSec = DateDiff("s", "12/31/95", Now)
         RefreshNum = CStr(RefreshSec) & CStr(RefreshAlea)
         GenereAlea = RefreshNum
         End Function
     
    	 Function AccessDate(dateandtime)
    Dim myDay
    Dim myMonth
    Dim myYear
     
    myDay = Day(dateandtime)
    If Len(myDay)=1 Then myDay="0" & myDay
     
    myMonth = Month(dateandtime)
    If Len(myMonth)=1 Then myMonth="0" & myMonth
     
    myYear = Year(dateandtime)
     
    AccessDate = myYear & "-" & myMonth & "-" & myDay
    End Function
     
     
     
     
     
     
    	'Build connection
    	'set conn = server.CreateObject ("ADODB.Connection")
    	'conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath ("users.mdb")
    	set rs = server.CreateObject ("ADODB.Recordset")
    	'Open all records
    	rs.Open "SELECT * FROM clients", conn, 3, 3 
     
    	'Check if username doesn't already exist
    	do while not rs.EOF
    		if rs("Email_client")=email then
    			set rs=nothing
    			set conn=nothing
    			Response.Redirect("login.asp?login=createnamefailed")
    		end if
    		rs.MoveNext
    	loop
     
     
      dbrec = "INSERT INTO clients (Code_client, login, password, Secu_level, Cat_client, tva_client, DateCreation, HeureCreation, Email_client, Genre_client_facturation, Nom_client_facturation, Prenom_Client_facturation, Societe_client_facturation, Adresse1_client_facturation, Adresse2_client_facturation, Postal_client_facturation, Ville_client_facturation, Pays_client_facturation, Tel_client_facturation, Fax_client_facturation, Gsm_client_facturation) VALUES (" & GenereAlea & ",'" & login & "','" & pass1 & "',1,1,1,#" & AccessDate(Date) & "#,#" & Time & "#,'" & email & "','" & gender & "','" & nom & "','" & prenom & "','" & societe & "','" & adress1 & "','" & adress2 & "','" & postal & "','" & ville & "','" & pays & "','" & tel & "','" & fax & "','" & gsm & "')"
    'response.Write(dbrec)
     conn.execute(dbrec)
     
    %>
    il y a une erreur au niveau de la requete que j'ai pas trouvé.
    il m'affiche l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Microsoft OLE DB Provider for ODBC Drivers erreur '80040e07'
     
    [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère.
     
    /client/create.asp, ligne 82
    avez vous une réponse??

    Merci d'avance.

  3. #3
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Bonjour

    ce message signifie que le type de données d'un des champs que tu veux insérer n'est pas bon (2 coups sur 3, c'est sur les champs de type date).

    Pour trouver lequel, rien de mieux que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    response.write(dbrec)
    response.end
    Il faut ensuite vérifier ta requete. Les # sont probablement l'erreur, une simple mise entre côtes (c'est bon, une entrecôte !!) devrait suffire.

    Par ailleurs, ta boucle
    rs.Open "SELECT * FROM clients", conn, 3, 3

    'Check if username doesn't already exist
    do while not rs.EOF
    if rs("Email_client")=email then
    set rs=nothing
    set conn=nothing
    Response.Redirect("login.asp?login=createnamefailed")
    end if
    rs.MoveNext
    loop
    n'est pas très judicieuse. Imagines, si tu as 10000 clients ! ou plus !

    il vaut mieux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rs.Open "SELECT * FROM clients where email_client='" & email & "'", conn, 3, 3 
    if not rs.eof then
        Response.Redirect("login.asp?login=createnamefailed")
    end if
    (les objets conn et rs sont automatiquement fermés implicitement)


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " 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 ...)

    Chuck Norris comprend JC Van Damme.

  4. #4
    Poumtschak
    Invité(e)
    Par défaut
    Citation Envoyé par roro06 Voir le message
    (les objets conn et rs sont automatiquement fermés implicitement)
    Sans vouloir détourner ce fil, as-tu un lien qui explicite cette affirmation ?
    Je ferme et détruit systématiquement tout ResultSet après usage, mais si ODBC le fait tout seul, c'est peut-être superflu...
    Merci.

  5. #5
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Citation Envoyé par Poumtschak Voir le message
    Sans vouloir détourner ce fil, as-tu un lien qui explicite cette affirmation ?
    Je ferme et détruit systématiquement tout ResultSet après usage, mais si ODBC le fait tout seul, c'est peut-être superflu...
    Merci.
    http://msdn.microsoft.com/fr-fr/library/bb469833.aspx

    C'est pas odbc qui le fait, c'est asp qui libère automatiquement les objets à la fin du script. Une des conséquences est que les recordsets restés ouverts sont fermés. Ce n'est pas superflu de les fermer manuellement, c'est même un bon reflexe. Ca évite les fuites mémoires.


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " 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 ...)

    Chuck Norris comprend JC Van Damme.

  6. #6
    Poumtschak
    Invité(e)

  7. #7
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 49
    Par défaut
    Bonjour,
    le problème c'est au niveau du nombre aléatoire GenereAlea.
    Le champs dans la base de données ne peut pas tenir un grand nombre comme 124567895.

    Merci pour vos aides.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insertion des données dans une table
    Par bza88 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 28/04/2015, 12h02
  2. Utilisation/insertion des données dans une table
    Par MomoAss dans le forum Débuter
    Réponses: 1
    Dernier message: 28/08/2012, 08h29
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Réponses: 2
    Dernier message: 28/09/2009, 13h46
  5. [MySQL] PHP-MySQL: Insertion de donnée dans une table vide
    Par jrosenzw dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/03/2009, 02h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo