asp database conn.

Status
Niet open voor verdere reacties.

funkyhotspot

Gebruiker
Lid geworden
20 mei 2004
Berichten
14
Ik probeer een gegevens in een database in te voeren met asp, iemand enig idee waar de fout(en) zitten?


<%
dim strConn
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\bla\bla\db\funky.mdb"


dim adoCn
dim strSQL

if Request.QueryString("action") = "save" then

dim voornaam
dim achternaam

voornaam = Request.Form("voornaam")
achternaam = Request.Form("achternaam")


set adoCn = Server.CreateObject("ADODB.Connection")
adoCn.Open strConn

strSQL = "Insert Into tbl_klanten (voornaam,achternaam) Values ('','')"
adoCn.Execute strSQL


adoCn.Close
set adoCn = nothing

Response.Redirect "bedankt.htm"
end if
%>
<html>

<head>
<title>Vul alle velden volledig en correct</title>


</head>
<form name="funkprob.asp" method="post" action="funkprob.asp">

<input type="hidden" name="SECTION" value="user">

<h1>
<font face="Century Gothic" size="5" color="#FF0065">......</font></h1>

<h2>
<b><font face="Century Gothic" size="4">.......</font></b></h1>

<table class="regular" width="750" height="63"><tr>
<td class="field-description" height="22" width="245" background="filters/rfilter.gif">
<b><font face="Century Gothic">Voornaam</font></b></td>
<td height="22" width="495" background="filters/redfilter.gif">
<font face="Century Gothic"><b><input size="40" type="text" name="voornaam" maxlength="40" value="" ></b></font></td></tr>

<tr>
<td class="field-description" height="22" width="245">
<b><font face="Century Gothic">Achternaam</font></b></td>
<td height="22" width="495">
<font face="Century Gothic"><b><input size="40" type="text" name="achternaam" value="" ></b></font></td></tr>

<input type="submit" value="verstuur" action="save" >
</body>

</html>
 
Laatst bewerkt:
Ik zou sowieso eerst de invoer controleren. Dus controleren op lege waarden/html etc. Die moet je er eerst allemaal uitfilteren.

Verder moet natuurlijk je SQL-query iets zijn als:
"INSERT INTO tbl_klanten (voornaam,achternaam) VALUES ('"& voornaam &"','"& achternaam &"')"

Ook zou ik voor de duidelijkheid alle variabelen bovenaan declareren, maar dat hoeft natuurlijk niet.

Dat waren de algemene opmerkingen :D

Kun je duidelijk aangeven welke foutmelding je krijgt? Bijvoorbeeld error-codes o.i.d
 
Heel raar maar ik krijg geen error meldingen ofzo, de pagina wordt gewoon opniew geladen als ik de gegevens verstuur.
 
maar kun je je probleem dan duidelijk omschrijven? Wat gebeurt er wel, wat gebeurt er niet, wat zou er moeten gebeuren? Anders is het echt heel vaag.

Iig is je code correct (anders zou je een foutmelding krijgen), maar mss niet voor wat je wilt:D
 
Ik wil eigelijk alleen dat die gegevens(voornaam,achternaam) in de access database worden gezet. En als dat lukt dan breid ik het formulier uit
:). Anders wordt het zo onoverzichtelijk.
 
heb je je SQL-query al aangepast naar dat wat ik je de eerste post had gegeven? Dan zou er toch wel wat in moeten komen te staan :rolleyes:
 
jah ik heb hem aangepast. Zou het misschien kunnen liggen aan m'n webhost. Ik host bij brinkster.com, en hoorde dat nogal anders zijn dan normale asp webhosts.
 
Ik heb nu de volgende code voor je bedacht :D

-------------------------------------------------------------------------
PHP:
<%
Function Main()
'
' Dit is de hoofdfunctie. Deze schrijft de waarden weg naar de database en produceert een bevestiging hiervan (returnwaarde true). 
'Er wordt een foutmelding gegeven wanneer het niet is gelukt (returnwaarde false én een bericht voor de gebruiker (in laatste if-statament))
' Retourneert true wanneer het gelukt is, anders false (standaard)
'
  On Error Resume Next
  Main = False
  
  Dim strConn       'string met de gegevens om verbinding te maken met db
  Dim adoCn         'representeer de verbinding met de db
  Dim strSQL        'string met de SQL-query
  Dim strVoornaam   'string met de voornaam die opgeslagen moet worden
  Dim strAchternaam 'String met de achternaam die opgeslagen moet worden

  '
  ' Verlaat de functie waneer het niet gepland is om nu de waarden in de database bij te werken
  '
  If (Not Request.QueryString("action") = "save") Then Exit Function
  
  strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\bla\bla\db\funky.mdb"
  strVoornaam = Request.Form("voornaam")
  strAchternaam = Request.Form("achternaam")

  strVoornaam = Replace(strVoornaam,"<","&60;")
  strVoornaam = Replace(strVoornaam,">","&62;")
  strAchternaam = Replace(strAchternaam,"<","&60;")
  strAchternaam = Replace(strAchternaam,">","&62;")

  If (Not (stringIsEmpty(strVoornaam) Or stringIsEmpty(strAchternaam))) Then
    set adoCn = Server.CreateObject("ADODB.Connection")
    adoCn.Open strConn

      strSQL = "INSERT INTO tbl_klanten (voornaam,achternaam) VALUES ('"& voornaam &"','"& achternaam &"')" 
      adoCn.Execute strSQL

    adoCn.Close
    set adoCn = nothing

    Main = True
  End If
  
  If (Main And Err.Number = 0) Then
    Response.Redirect "bedankt.htm"
  Else
    Main = False
    Response.Write "Fout bij het invoeren van de gegevens in de database"
  End If

End Function

Function stringIsEmpty(string)
'
' Controleert of de doorgegeven string niet leeg is. Retourneert true wanneer de string wel leeg is, anders false
' Standaard retourwaarde is false
'
  stringIsEmpty = False

  If (isNull(string) Or isEmpty(string) Or Len(string) < 1) Then stringIsEmpty = True
End Function
%>

<html>
  <head>
    <title>Vul alle velden volledig en correct in</title>
  </head>

  <body>
    <%
      '
      'Roep de hoofdfunctie aan. Deze schrijft de waarden in de database (indien nodig) en geeft een  melding indien er een fout is opgetreden
      '
      main()
    %>
    <form name="frmClientDetails" method="post" action="<%= Request.Servervariables("SCRIPT_NAME")%>?action=save">
      <input type="hidden" name="SECTION" value="user">

      <h1><font face="Century Gothic" size="5" color="#FF0065">......</font></h1>
      <h2><b><font face="Century Gothic" size="4">.......</font></b></h1>

      <table class="regular" width="750" height="63">
        <tr>
          <td class="field-description" height="22" width="245" background="filters/rfilter.gif">
            <b><font face="Century Gothic">Voornaam</font></b>
          </td>
          <td height="22" width="495" background="filters/redfilter.gif">
            <font face="Century Gothic">
            <b><input size="40" type="text" name="voornaam" maxlength="40" value="" ></b></font>
          </td>
        </tr>
        <tr>
          <td class="field-description" height="22" width="245">
            <b><font face="Century Gothic">Achternaam</font></b>
          </td>
          <td height="22" width="495">
            <font face="Century Gothic"><b><input size="40" type="text" name="achternaam" value="" ></b></font>
          </td>
        </tr>
      </table>
      <input type="submit" value="verstuur">
    </form>
  </body>
</html>
-------------------------------------------------------------------------
Afgezien van enkele fouten in je HTML, vind ik dat je erg inconsistent bent. Zo gebruik je wel css-classes voor je cellen binnen de tabel, maar gebruik je tevens de zeer verouderde <font>-tag om tekst op te maken. Dit kun je veel beter ook middels een css-class of css-id o.i.d. doen.
Ook de breedtes van je tabel en cellen kun je middels CSS perfect regelen.

Verder zat je fout hierin:
je zocht in je VBscript naar een querystring-variabele "action". Maar die bestond helemaal niet. Zelfs niet in een POST-variant. Je had gewoon aan je action van je form die querystring moeten hangen, dus zo: action="funkprob.asp?action=save". Mijn variant van de het action-attribuut is zo, dat een wijziging in de pagina-naam automatisch wordt meegenomen. M.a.w., als je het geen funkprob.asp, maar waahaa.asp noemt, werkt het nog steeds, in tegenstelling tot een hard-gecodeerde bestandsnaam. :)

Of je mijn code-suggestie overneemt moet je zelf weten, maar voor het geval je het doet: ik heb het net zo uit mn hoofd getypt en geen tijd genomen om het uit te testen. Er kunnen dus een paar (kleine) foutjes in zitten. Ik hoop dat je die er dan zelf uit kunt halen.
 
Laatst bewerkt:
sorry, ik was vergeten om de aangepast SQL-query in te voegen + nog wat kleine dingetjes. Ik heb de code geupdate ;)
 
Laatst bewerkt:
Hij doet het Bijna...:) :) .

Ik heb alleen nog 1 probleempje, de waarden worden niet helemaal goed ingevoert in de database, de autonummering telt wel als er gegevens ingevoert worden maar de tabel blijft blanco.
 
Sorry, heel dom van mij:evil: :evil:

Ik had de naam van een aantal variabelen aangepast, maar niet goed opgelet en het niet in de SQL-query doorgevoerd. Deze query is wel goed:

"INSERT INTO tbl_klanten (strVoornaam,strAchternaam) VALUES ('"& voornaam &"','"& achternaam &"')"

Excuses.
 
Maakt niet uit, had het zelf ook niet gezien.

Hij doet het nu alleen niet meer.
Hij geeft nu de foutmelding weer.:8-0:
 
Geplaatst door funkyhotspot
Maakt niet uit, had het zelf ook niet gezien.

Hij doet het nu alleen niet meer.
Hij geeft nu de foutmelding weer.
Ik was even niet bij de les :evil: :evil:
Ik veranderde de kolomnamen van de tabel, i.p.v. variabelen.
Dit zou hem wel moeten zijn ;) :

"INSERT INTO tbl_klanten (voornaam,achternaam) VALUES ('"& strVoornaam &"','"& strAchternaam &"')"

Duizendmaal sorry :D
 
LOL, Ik had het zelf al geprobeert maar was vergete dat ik heel ff de tabelnaam verandert had :o. Maar iig harstikke bedankt :thumb: Hij doet ut nu. Nu maar ff kijken of ik hem zelf uit kan breiden :) .
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan