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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 49
    Points : 35
    Points
    35
    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
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 49
    Points : 35
    Points
    35
    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 : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    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)

  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
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 49
    Points : 35
    Points
    35
    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.

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    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.

  7. #7
    Poumtschak
    Invité(e)

+ 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