Partage
  • Partager sur Facebook
  • Partager sur Twitter

MYSQL ET ASP? Comment ça marche ?

    3 mars 2011 à 15:33:07

    Bonjour, je suis actuellement stagiaire dans une entreprise et j'ai pour objectif de récuperer les données d'un formulaire pour les mettre dans une BDD MySQL.
    Jusque là rien de bien compliqué mais la page qui traite les données du formulaire est en ASP, et je ne sais pas du tout quel est la méthode pour faire appel à une base de donnée, et faire des requêtes...
    Voici mon code :
    <%
    Dim demande
    Dim secteur
    Dim typeVehicule
    Dim societe
    Dim contact
    Dim telephone
    Dim mobile
    Dim email
    Dim adresse
    Dim nombre
    Dim message
    Dim Full_Msg
    Dim objCDOMail
    
    societe = Request.form("societe")
    demande = Request.form("nature")
    secteur = Request.form("secteur")
    contact = Request.form("contact")
    telephone = Request.form("telephone")
    mobile = Request.form("mobile")
    email = Request.form("email")
    adresse = Request.form("adresse")
    nombre = Request.form("nombre")
    typeVehicule = Request.form("vehicules")
    message = Request.form("message")
    
    'On définit le corps du mail
    Full_Msg = "Nom Complet : " & contact & "<br />"
    Full_Msg = Full_Msg & "Type demande : " & demande & "<br /><br />"
    Full_Msg = Full_Msg & "Société : " & societe & "<br />"
    Full_Msg = Full_Msg & "Secteur : " & secteur & "<br /><br />"
    Full_Msg = Full_Msg & "Téléphone : " & telephone & "<br />"
    Full_Msg = Full_Msg & "Mobile : " & mobile & "<br />"
    Full_Msg = Full_Msg & "E-mail : " & email & "<br /><br />"
    Full_Msg = Full_Msg & "Adresse : " & adresse & "<br /><br />"
    Full_Msg = Full_Msg & "Nombre de véhicules : " & nombre & "<br />"
    Full_Msg = Full_Msg & "Type véhicules : " & typeVehicule & "<br /><br />"
    Full_Msg = Full_Msg & "Message : " & message
    
    'On crée l'objet Email
    Set objErrMail = Server.CreateObject("CDO.Message")
    on error resume next
    
    'On envoie le mail
    With objErrMail
    	.From = Email
    	.To = "info@geoloc-systems.com; s.khayat@geoloc-systems.com; s.kessouri@geoloc-systems.com; stephanie.dieu@geoloc-systems.com"
    	.Subject = "Demande de devis en ligne : www.geoloc-systems.com"
    	.HTMLBody = CStr("" & Full_Msg)
    	.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    	.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
    	.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    	.Configuration.Fields.Update
    	.Send
    End With
    %>
    

    Je sollicite votre aide amis programmeurs, car je sèche complet...j'ai essayé deux manips trouvé sur le net et elles se sont averé inéficaces...
    Comme celle ci par exemple :
    string ConnectionString = “DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost;DATABASE=calcul;UID=root;PWD=;”
    OdbcConnection MyConnection = new OdbcConnection(ConenctionString);
    myConnection.Open() ;
    String sql = "INSERT INTO `clientpotentiel` (`societe` ,`demande` ,`secteur` ,`contact`,`telephone`,`mobile`,`email`,`adresse`,`nombre`,`typeVehicule`,`message`)VALUES (`societe` ,`demande` ,`secteur` ,`contact`,`telephone`,`mobile`,`email`,`adresse`,`nombre`,`typeVehicule`,`message`);";
    Statement s = connection.createStatement();
    s.executeUpdate(sql);
    myConnection.Close() ;
    

    Quelqu'un pourrait m'aider?
    merci
    </code>
    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2011 à 12:04:05

      personne pour m'aider svp? J'arrive vraiment pas à insérer les données dans la BDD...J'ai modifié le values en mettant les données de ce type : & donnée &, rien ne s'insère...
      Une aide serait vraiment apprécié :D
      merci
      • Partager sur Facebook
      • Partager sur Twitter
        7 mars 2011 à 15:53:47

        Salut
        Déjà dans ton insert tu n'a pas les valeurs à insérer donc ta requête SQL (sans parlé de vb) est mauvaise

        Je le rappel le insert s'écrit ainsi :

        insert into unetable (col1, col2, ..., colN) values ('valeur1', 'valeur2', ... , 'valeurN')
        


        De plus, tu utilises la fonction executeUpdate . Même si je connais pas le VB.NET, je pense que c'est pas la fonction idéal pour un insert (au vue du nom)
        • Partager sur Facebook
        • Partager sur Twitter
          8 mars 2011 à 12:07:15

          Salut!
          oui effectivement ce problème je l'ai corrigé car j'men suis rendu compte par la suite.
          Cependant j'ai eu l'occasion de discuter avec un programmeur experimenté en langage de programmation orienté objet et qui ma dit que la ligne qui posait problème était :

          OdbcConnection MyConnection = new OdbcConnection(ConenctionString);
          


          donc la modification a été fait et voila ce qui en retourne :
          Dim sConnection, objConn , objRS
          sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=mysql.internet-hebergeur.com; DATABASE=H0560_newsletter; UID=H0560;PASSWORD=q6UHirmc1Dt8Fzgd; OPTION=3"
          'Set objConn = Server.CreateObject("ADODB.Connection")
          Set objRS = ("INSERT INTO clientpotentiel (societe, demande, secteur, contact, telephone, mobile, email, adresse, nombre, typeVehicule, message) VALUES ('"& societe &"', '"& demande &"', '"& secteur &"', '"& contact &"', '"& telephone &"', '"& mobile &"', '"& email &"', '"& adresse &"', '"& nombre &"', '"& typeVehicule &"' ,'"& message &"')")
          
          Response.write(objrs)
          

          là il n'y a plus de problème d'affichage de la page, cependant la requête ne semble pas être executé car rien ne s'insère dans la BDD, une idée?
          merci


          EDIT :
          après avoir refléchis et m'etre rendu compte que je venais d'écrire nimporte quoi j'ai isolé le problème qui venais de la boucle while.
          je l'ai enlevé et il me reste :
          Dim sConnection, objConn , objRS
          sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=mysql.internet-hebergeur.com; DATABASE=H0560_newsletter; UID=H0560;PASSWORD=q6UHirmc1Dt8Fzgd; OPTION=3"
          Set objConn = Server.CreateObject("ADODB.Connection")
          Response.write("ici etlaossi enfin")
          objConn.Open(sConnection)
          Set objRS = objConn.Execute("INSERT INTO clientpotentiel (societe, demande, secteur, contact, telephone, mobile, email, adresse, nombre, typeVehicule, message) VALUES ('"& societe &"', '"& demande &"', '"& secteur &"', '"& contact &"', '"& telephone &"', '"& mobile &"', '"& email &"', '"& adresse &"', '"& nombre &"', '"& typeVehicule &"' ,'"& message &"')")
          
          
          
          objRS.Close
          Set objRS = Nothing
          objConn.Close
          Set objConn = Nothing
          

          Cela semble fonctionner nickel car aucune erreur etc, hors rien ne s'inscrit dans la base de données...pourquoi???
          • Partager sur Facebook
          • Partager sur Twitter
            8 mars 2011 à 13:38:49

            Ton dernier code me semble bon. Tu as essayé de faire un select et de récupérer le résultat dans un RecordSet pour voir si la connexion fonctionne correctement ?

            Tu peux essayer d'ajouter ce code pour voir les erreurs de connexion :
            Dim sConnection, objConn , objRS
            sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=mysql.internet-hebergeur.com; DATABASE=H0560_newsletter; UID=H0560;PASSWORD=q6UHirmc1Dt8Fzgd; OPTION=3"
            Set objConn = Server.CreateObject("ADODB.Connection")
            Response.write("ici etlaossi enfin")
            objConn.Open(sConnection)
            on error resume next 
            Set objRS = objConn.Execute("INSERT INTO clientpotentiel (societe, demande, secteur, contact, telephone, mobile, email, adresse, nombre, typeVehicule, message) VALUES ('"& societe &"', '"& demande &"', '"& secteur &"', '"& contact &"', '"& telephone &"', '"& mobile &"', '"& email &"', '"& adresse &"', '"& nombre &"', '"& typeVehicule &"' ,'"& message &"')")
            
            if objConn.errors.count > 0 then 
                 for each e in objConn.errors 
                    response.write e.description & "<br>" 
                 next 
            end if 
            
            objRS.Close
            Set objRS = Nothing
            objConn.Close
            Set objConn = Nothing
            
            • Partager sur Facebook
            • Partager sur Twitter
              8 mars 2011 à 16:07:27

              Salut,
              j'ai testé ton code et je n'ai aucune erreur mais rien ne s'insère non plus, j'ai suivit ton conseil et ajouté un recordset à ma "sauce" voilà le résultat :
              Dim sConnection, objConn , objRS
              Dim strSql
              Dim rst
              
              
              sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=mysql.internet-hebergeur.com; DATABASE=H0560_newsletter; UID=H0560;PASSWORD=q6UHirmc1Dt8Fzgd; OPTION=3"
              Set objConn = Server.CreateObject("ADODB.Connection")
              Response.write("ici etlaossi enfin")
              objConn.Open(sConnection)
              on error resume next 
              set strSql = "INSERT INTO clientpotentiel (societe, demande, secteur, contact, telephone, mobile, email, adresse, nombre, typeVehicule, message) VALUES ('"& societe &"', '"& demande &"', '"& secteur &"', '"& contact &"', '"& telephone &"', '"& mobile &"', '"& email &"', '"& adresse &"', '"& nombre &"', '"& typeVehicule &"' ,'"& message &"');"
                  Set rst = CurrentDb.OpenRecordset(strSql)
                  If rst.RecordCount = 0 Then
              		Response.write("erreur")
              	else
              		Set objRS = objConn.Execute(strSql)
              				Response.write("pas d'erreur")
              	end if
              objRS.Close
              Set objRS = Nothing
              objConn.Close
              Set objConn = Nothing
              

              la page qui traite les données affiche : erreur...
              Donc le count = 0, donc pas de données...Pourtant je ne voit pas d'erreur dans la requête en elle même cependant je suis néophyte dans l'ASP donc je me base surtout sur mes connaissances php qui me permettent de "décrypter" le code, mais bon...
              Donc toujours est-il qu'apparament les données ne sont pas pris en compte, étrange, avez vous une idée?? Merci
              • Partager sur Facebook
              • Partager sur Twitter
                8 mars 2011 à 16:15:05

                je le répète, je ne connais pas VB.NET mais je fais du vba access qui doit se rapprocher
                Pour moi, tu dois d'abord passer par la fonction QueryDefs si ta requête existe déjà
                Sinon passer par la fonction CreateQueryDef
                et seulement après tu peux utiliser le recordset

                Un petit exemple d'un de mes codes VBA
                Set qdf = CurrentDb.QueryDefs("rqSelect")
                Set oRs = qdf.OpenRecordset(dbOpenSnapshot)
                If oRs.RecordCount > 0 Then
                
                • Partager sur Facebook
                • Partager sur Twitter
                  8 mars 2011 à 16:38:09

                  Bonjour!
                  bah écoute, on est deux dans ce cas là alors! xD
                  j'ai testé ta méthode de cette façon :
                  Dim sConnection, objConn , objRS
                  Dim strSql
                  Dim qdf
                  Dim oRs
                  
                  sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=mysql.internet-hebergeur.com; DATABASE=H0560_newsletter; UID=H0560;PASSWORD=q6UHirmc1Dt8Fzgd; OPTION=3"
                  Set objConn = Server.CreateObject("ADODB.Connection")
                  Response.write("ici etlaossi enfin")
                  objConn.Open(sConnection)
                  on error resume next 
                  set strSql = "INSERT INTO clientpotentiel (societe, demande, secteur, contact, telephone, mobile, email, adresse, nombre, typeVehicule, message) VALUES ('"& societe &"', '"& demande &"', '"& secteur &"', '"& contact &"', '"& telephone &"', '"& mobile &"', '"& email &"', '"& adresse &"', '"& nombre &"', '"& typeVehicule &"' ,'"& message &"');"
                      'Set rst = CurrentDb.OpenRecordset(strSql)
                  	Set qdf = CurrentDb.QueryDefs(strSql)
                  	Set oRs = qdf.OpenRecordset(dbOpenSnapshot)
                      If oRs.RecordCount = 0 Then
                  		Response.write("erreur!!")
                  	else
                  		Set objRS = objConn.Execute(strSql)
                  				Response.write("pas d'erreur")
                  	end if
                  objRS.Close
                  Set objRS = Nothing
                  objConn.Close
                  Set objConn = Nothing
                  

                  hélàs cela me renvoi : erreur!!
                  je ne comprend vraiment pas ce qui cloche...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 mars 2011 à 17:18:37

                    Ca fait longtemps que je n'ai pas fait de VB, mais tu peux essayer ça :
                    Dim objConn  As OleDbConnection
                            Dim objcommand As OleDbCommand
                            Dim sConnection
                    
                            sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=mysql.internet-hebergeur.com; DATABASE=H0560_newsletter; UID=H0560;PASSWORD=q6UHirmc1Dt8Fzgd; OPTION=3"
                            objConn = Server.CreateObject("ADODB.Connection")
                            objConn.ConnectionString = sConnection 
                    
                            objcommand = New OleDbCommand
                            
                            strSql = "INSERT INTO clientpotentiel (societe, demande, secteur, contact, telephone, mobile, email, adresse, nombre, typeVehicule, message) VALUES ('"& societe &"', '"& demande &"', '"& secteur &"', '"& contact &"', '"& telephone &"', '"& mobile &"', '"& email &"', '"& adresse &"', '"& nombre &"', '"& typeVehicule &"' ,'"& message &"');"
                    
                            objcommand.CommandText = strSql
                    
                            objcommand.Connection = objConn
                    
                            'Open the connection
                            objConn.Open()
                    
                            objcommand.ExecuteNonQuery()
                    
                            objConn.Close()
                    


                    Renseigne toi sur les RecordSet, ils ne servent que dans le cas de requête de sélection.
                    De plus, n'hésite pas à typer les variables.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 mars 2011 à 9:20:55

                      Citation : jakovazor

                      Bonjour!
                      bah écoute, on est deux dans ce cas là alors! xD
                      j'ai testé ta méthode de cette façon :

                      Dim sConnection, objConn , objRS
                      Dim strSql
                      Dim qdf
                      Dim oRs
                      
                      sConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=mysql.internet-hebergeur.com; DATABASE=H0560_newsletter; UID=H0560;PASSWORD=q6UHirmc1Dt8Fzgd; OPTION=3"
                      Set objConn = Server.CreateObject("ADODB.Connection")
                      Response.write("ici etlaossi enfin")
                      objConn.Open(sConnection)
                      on error resume next 
                      set strSql = "INSERT INTO clientpotentiel (societe, demande, secteur, contact, telephone, mobile, email, adresse, nombre, typeVehicule, message) VALUES ('"& societe &"', '"& demande &"', '"& secteur &"', '"& contact &"', '"& telephone &"', '"& mobile &"', '"& email &"', '"& adresse &"', '"& nombre &"', '"& typeVehicule &"' ,'"& message &"');"
                          'Set rst = CurrentDb.OpenRecordset(strSql)
                      	Set qdf = CurrentDb.QueryDefs(strSql)
                      	Set oRs = qdf.OpenRecordset(dbOpenSnapshot)
                          If oRs.RecordCount = 0 Then
                      		Response.write("erreur!!")
                      	else
                      		Set objRS = objConn.Execute(strSql)
                      				Response.write("pas d'erreur")
                      	end if
                      objRS.Close
                      Set objRS = Nothing
                      objConn.Close
                      Set objConn = Nothing
                      


                      hélàs cela me renvoi : erreur!!
                      je ne comprend vraiment pas ce qui cloche...



                      Non le strSql n'est pas la requête SQL mais bien un nom donné à la requête: sous accès, on peut définir des requêtes et les sauvegarder (un peu comme une vue) C'est ce nom que la fonction QueryDefs attend

                      Mais bon sinon essaie comme ça :
                      set strSql = "INSERT INTO clientpotentiel (societe, demande, secteur, contact, telephone, mobile, email, adresse, nombre, typeVehicule, message) VALUES ('"& societe &"', '"& demande &"', '"& secteur &"', '"& contact &"', '"& telephone &"', '"& mobile &"', '"& email &"', '"& adresse &"', '"& nombre &"', '"& typeVehicule &"' ,'"& message &"');"
                      	Set qdf = CurrentDb.CreateQueryDef(strSql)
                      	Set oRs = qdf.OpenRecordset(dbOpenSnapshot)
                          If oRs.RecordCount = 0 Then
                      		Response.write("erreur!!")
                      	else
                      		Response.write("pas d'erreur")
                      	end if
                      


                      Par contre, moi j'utilise ça pour des requête de type SELECT; j'ignore si ça fonctionne pour des INSERT.
                      Pour des INSERT, je n'utilise pas de Recordset:
                      strSQL = "PARAMETERS lgIdDA Long; INSERT INTO Commandes ( CommandesID ) SELECT [lgCommandeID] AS Expr1;"
                      Set qdf = CurrentDb.CreateQueryDef("", strSQL)
                      qdf.Parameters("lgCommandeID") = 32
                      qdf.Execute
                      qdf.Close
                      



                      Et comme tu le vois, pour les variables, je passe par des requêtes paramétrées.

                      PS/ j'ai demandé le déplacement du sujet car là on est sur des problèmes VB et non plus SQL
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 mars 2011 à 9:48:37

                        Bonjour, merci pour cette aide, j'ai testé et le problème persiste.
                        Est-il possible tester la connexion par un booléen? voir si l'objet de la connexion a bien été instancié etc? Car apparemment un programmeur ma dit qu'il est possible que le problème vient de là?
                        à savoir :
                        Set objConn = Server.CreateObject("ADODB.Connection")
                        

                        cette ligne.
                        Qu'en pensez vous?
                        effectivement le problème relate plus du vb et non pas du SQL, merci d'avoir pris l'initative de cette demande :)

                        Là je suis completement perdu étant donné que je suis encore assez néophyte avec ce langage si je pouvais faire fonctionner ce bout de code ce serait une réel victoire pour moi lol!



                        EDIT :
                        pardon, dans la rapidité je n'ai pas vue ce que tu avais écrit Galip,
                        j'ai donc testé et il semblerait que le "AS" ne soit pas accepté :
                        Erreur de compilation Microsoft VBScript erreur '800a0401'

                        Fin d'instruction attendue

                        /test newslatter/asp tests/devisProcess.asp, ligne 55

                        Dim objConn as OleDbConnection
                        -------------^
                        voilà l'erreur.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        MYSQL ET ASP? Comment ça marche ?

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown