Toon posts:

[asp] variabele krijgt niet de nieuwe waarde

Pagina: 1
Acties:
  • 57 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoi,

Ik ben een ASP newbie en ik vind het nog niet prettig werken, maar goed.

Het onderstaande script:
code:
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<%@ Language=VBScript %>
<%Option Explicit%>
<!-- #include file="upload.asp" -->
<%
on error resume next
Response.Buffer=True
'NOTE - YOU MUST HAVE VBSCRIPT v5.0 INSTALLED ON YOUR WEB SERVER
'      FOR THIS LIBRARY TO FUNCTION CORRECTLY. YOU CAN OBTAIN IT
'      FREE FROM MICROSOFT WHEN YOU INSTALL INTERNET EXPLORER 5.0
'      OR LATER.

' Create the FileUploader
Dim Uploader, File, savePath
savePath = "E:\Port Folio\Freelance opdrachten\printermanager\uploads\"
Set Uploader = New FileUploader
Uploader.Upload()

dim conn, insQry, updQry, delQry, insResult, selPattern, Icc, Linear, i

Icc     = ""
Linear  = ""

'Open ODBC connection
set conn=Server.CreateObject("ADODB.Connection") 
conn.Open "printermanager"

'******************************************
' Use [FileUploader object].Form to access 
' additional form variables submitted with
' the file upload(s). (used below)
'******************************************
if Uploader.Form("btnAddBase")="add colorbase" then
    ' Next step: add new DotPattern if needed
    if Uploader.Form("newpattern")<>"" and Uploader.Form("newpattern")<>"enter new dot pattern here" then
        insQry = "INSERT INTO `tblDotpatterns`"         &_
                 "(`txtPa_Description`) VALUES "        &_
                 "('" & Uploader.Form("newpattern")     & "')"          
        conn.Execute(insQry)
        set insResult = conn.Execute("SELECT @@IDENTITY")
        selPattern = insResult(0)
        insResult.Close()   
        if err<>0 then
            Response.Write("Could not insert new dot pattern!<br />")
            selPattern = 1
        end if
    elseif Uploader.Form("dotpattern")<>"" then 
        selPattern = Uploader.Form("dotpattern")
    else
        selPattern = 1  
    end if
    
    'Next step: handle file uploads
    'iccprofile and linearfile
    if Uploader.Files.Count = 0 then    
        Icc = ""
        Linear = ""
    else
        if Uploader.Files("iccprofile").FileName<>"" then
            Icc = Uploader.Files("iccprofile").FileName
            Uploader.Files("iccprofile").SaveToDisk savePath
        else
            Icc = ""    
        end if      
        if Uploader.Files("linearfile").FileName<>"" then
            Linear = Uploader.Files("linearfile").FileName
            Uploader.Files("linearfile").SaveToDisk savePath            
        else
            Linear = "" 
        end if      
    end if
    
    'Insert new ColorBase 
    insQry = "INSERT INTO `tblColorbase`" &_
             "(`txtCB_Title`, " &_
             " `lngCB_StatusID`, " &_
             " `lngCB_MediaManufacturerID`, " &_
             " `lngCB_MediaPrintID`, " &_
             " `lngCB_CombiPrinterID`, " &_
             " `lngCB_InkManufacturerID`, " &_
             " `lngCB_InkID`, " &_
             " `lngCB_DotpatternID`, " &_
             " `txtCB_Qualitymode`, " &_
             " `lngCB_DensityC`, " &_
             " `lngCB_DensityM`, " &_
             " `lngCB_DensityY`, " &_
             " `lngCB_DensityK`, " &_                                    
             " `txtCB_IccProfile`, " &_
             " `txtCB_Linear`, " &_
             " `txtCB_Remarks`)" &_
             " VALUES " &_
             "('" & Uploader.Form("title") & "', " &_
             " '" & Uploader.Form("status") & "', " &_
             " '" & Uploader.Form("mediamanufacturer") & "', " &_
             " '" & Uploader.Form("media") & "', " &_
             " '" & Uploader.Form("combi") & "', " &_
             " '" & Uploader.Form("inkmanufacturer") & "', " &_
             " '" & Uploader.Form("ink") & "', " &_
             " '" & selPattern & "', " &_
             " '" & Uploader.Form("qmode") & "', " &_
             " '" & Uploader.Form("densC_part1") & "', " &_
             " '" & Uploader.Form("densM_part1") & "', " &_
             " '" & Uploader.Form("densY_part1") & "', " &_
             " '" & Uploader.Form("densK_part1") & "', " &_                                 
             " '" & Icc & "', " &_
             " '" & Linear & "', " &_
             " '" & Uploader.Form("remarks") & "') "
    conn.Execute(insQry)
    if err<>0 then
        Response.Write("Could not insert new colorbase!<br />") 
        Response.Write("<br />" & insQry)
    else
        set insResult = conn.Execute("SELECT @@IDENTITY")
        cbID = insResult(0)
        insResult.Close()
        ' Add temperatures
        for i=0 to cInt(Uploader.Form("numHeaters"))-1
            insQry = "INSERT INTO `tblHeaterTemps` ( " &_
                     " `lngHT_ColorbaseID`, " &_
                     " `lngHT_HPHeaterID`, " &_
                     " `lngHT_Temperature` " &_
                     ") VALUES ( " &_
                     " '" & cbID & "', " &_
                     " '" & Uploader.Form("heaterID[" & i & "]") & "', " &_
                     " '" & Uploader.Form("heaterTemp[" & i & "]") & "' " &_
                     ")"
            Response.Write insQry & "<br />"         
            conn.Execute(insQry)            
        next
    end if
end if

' Close connection
conn.Close
%>


Op regel 117 wil ik insQry steeds een nieuwe waarde geven.
Maar hij blijft maar de oude waarde teruggeven uit regel 73!?

Hoe kan dit nou toch!? Ik zie vast iets over het hoofd, maar goed ...
HELP! :)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Debuggen... Komt je code überhaupt wel op die regel?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
geef eerst eens de complete melding die je krijgt... Ik denk namelijk dat er al eerder in het script een en ander fout gaat...

Je kunt overigens beter ff gaan kijken naar parameterized queries, want de manier waarop je nu aan het sleutelen bent is niet echt safe voor je database (denk bijv. aan sql-injection). Daarnaast ben ik eigenlijk nog nooit quotes om tabel-veld-namen tegengekomen... dus die kun je afaik ook gewoon weg laten...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
Ja, het script komt daar wel
adhv Response.Write insQry & "<br />"
wist ik dat de query steeds dezelfde oude query was en dat de nieuwe waarde niet wordt toegekend.

Verwijderd

Topicstarter
ok, het komt dus in ieder geval omdat ik cbID niet eerst had gedimmed.
Ik ben zelf PHP gewend en dat hoeft in php niet.

quotes om de tabelveldnamen doe ik in PHP ook altijd.
Gewoonte en maakt niets uit.

Verwijderd

Topicstarter
--- nutteloze vraag ---

[ Voor 98% gewijzigd door Verwijderd op 15-11-2004 21:44 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Backticks om veldnamen werken in Access/SQL Server toch niet? :?

Verder: omdat dat Dim probleem op te lossen moet je Option Explicit bovenaan je code zetten. Staat ook in de FAQ van dit subforum, misschien is het een goed plan die eens door te nemen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Helaas geen tijd voor want het is een mega haastklus :(
Zal ik daarna zeker gaan doen.

Option Explicit staat trouwens gewoon boven aan ...
Maar goed, dat werkt nu wel ....

Ik heb nu een ander probleem ....
zet ik ff in een nieuw topic

[ Voor 47% gewijzigd door Verwijderd op 15-11-2004 22:22 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Als Option Explicit boven je code staat dan kan je script niet eens runnen als je je variabelen niet dimt. Dus hoe heb je dat klaar gekregen? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
NMe84 schreef op maandag 15 november 2004 @ 22:29:
Als Option Explicit boven je code staat dan kan je script niet eens runnen als je je variabelen niet dimt. Dus hoe heb je dat klaar gekregen? :?
on error resume next :+

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Ow, ja, nou, ehm....das handig. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Tsja, newbie :) ... enfin ....

Iets anders dan ....

Ik heb een formuliertje:

code:
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>

<body>

<form name="form1" id="form1" action="test2.asp" method="post"">
  <table width="400" border="0" cellspacing="0" cellpadding="5">
    <tr>
      <td>veld 1: </td>
      <td><input name="veld" type="text" id="veld" /></td>
    </tr>
    <tr>
      <td>veld 2: </td>
      <td><input name="veld" type="text" id="veld" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Submit" /></td>
    </tr>
  </table>
</form>
</body>
</html>


en het resultaat komt in:
test2.asp
code:
1
2
3
4
5
6
7
8
9
10
<%
dim veld, veldSize, i
veld = Split(Request.Form("veld"),",")
if(IsArray(veld)) then
veldSize = (UBound(veld) - LBound(veld)) + 1
    for i=0 to veldSize-1
        Response.Write veld(i)
    next
end if
%>


Nou dit werkt perfect.
Zo kan ik dus meerdere velden met dezelfde naam meesturen (ik wil namelijk een array gaan sturen, vraag niet waarom, geen zin om dit uit te leggen ...)

Maar in dat eerste formulier wil ik nu ook een bestand mee gaan sturen.
Dus de enctype van het form veranderd.

Het formulier wordt:
code:
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>

<body>

<form name="form1" id="form1" action="test2.asp" method="post" enctype="multipart/form-data">
  <table width="400" border="0" cellspacing="0" cellpadding="5">
    <tr>
      <td>veld 1: </td>
      <td><input name="veld" type="text" id="veld" /></td>
    </tr>
    <tr>
      <td>veld 2: </td>
      <td><input name="veld" type="text" id="veld" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Submit" /></td>
    </tr>
  </table>
</form>
</body>
</html>


Om uploads af te handelen gebruik ik
http://www.asp101.com/articles/jacob/scriptupload.asp

Dus test2.asp wordt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ Language=VBScript %>
<%Option Explicit%>
<!-- #include file="upload.asp" -->
<%
' Create the FileUploader
Dim Uploader, File
Set Uploader = New FileUploader

' This starts the upload process
Uploader.Upload()

dim veld, veldSize, i
veld = Split(Uploader.Form("veld"),",")
if(IsArray(veld)) then
veldSize = (UBound(veld) - LBound(veld)) + 1
    for i=0 to veldSize-1
        Response.Write veld(i)
    next
end if
%>


Maar dit werkt dus niet!!!
Iemand enig idee hoe ik toch dit upload systeem kan gebruiken MET het behoud van de inputvelden met dezelfde naam?!!

Alleen de waarde van het eerste veld wordt nu getoond.
De rest niet ....

[ Voor 22% gewijzigd door Verwijderd op 15-11-2004 22:56 ]


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
gebruik anders even een upload component als aspupload oid...

er klopt overigens weinig van je HTML... Je geeft verschillende objecten dezelfde ID mee en dat is verboden daarnaast kun je je formulier beter niet opmaken met een tabel, maar met

<form /> <fieldset /> <label /> e.d. i.c.m. CSS

via google / in webdesign en graphics is genoeg te vinden over (semantisch) correct opgemaakte formulieren

edit:
Probeer eens dit:

ASP:
1
2
3
4
5
if(IsArray(veld)) then
    for i=0 to UBound(veld)
        Response.Write veld(i)
    next
end if

[ Voor 19% gewijzigd door faabman op 15-11-2004 23:13 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
Oh sorry, ff vergeten de id's aan te passen, boeiend zeg.
dat zal het probleem niet zijn.

en volgens mij worden echt ca. tig miljoen formuliertjes met tables gemaakt ... anywayz ....

Daar gaat het voor de rest ook niet om

Een component kost geld en dat is er dus niet ...

[ Voor 13% gewijzigd door Verwijderd op 15-11-2004 23:15 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:45

gorgi_19

Kruimeltjes zijn weer op :9

Het eerste probleem is een lap code en debugwerk; daar moet je zelf uit kunnen komen. Zie hiervoor ook P&W FAQ - ASP ; on error resume next is zo ongeveer een van de eerste dingen die je er uit moet slopen :X

Je tweede vraag gaat over een specifiek component c.q. een stukje code. Mail de maker hiervoor; we kunnen niet raden wat het component wil uitvoeren en hoe deze werkt :) We geven geen support op andermans scripts / componenten :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.