Toon posts:

[ASP] ASPUpload data wegschrijven naar database

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een Access database en maak gebruik van ASP. Om bestanden te uploaden maak ik gebruik van het ASPUpload component. Het uploaden zelf gaat goed alleen lukt het me niet om alle data goed naar de database weg te schrijven. Het lukt me wel met behulp van een drietal pagina's (1.formulier met afbeelding, 2.formulier met data, 3.records wegschrijven), maar ik wil nu een tweetal pagina's gebruiken. Neem aan dat dit gewoon kan?

De eerste pagina is het formulier waarin alle tekstvelden ingevuld worden en de afbeeldingen geselecteerd worden. De tweede pagina moet gebruikt worden om de bestanden up te loaden naar de webserver en de data weg te schrijven naar de database.

In mijn database wil ik o.a. alle bestandsnamen van de afbeeldingen hebben en de daar bijbehorende afmetingen. Deze gegevens worden door ASPUpload gegenereerd. Dus een kwestie van de gegevens doorsturen. Klink makkelijk maar lijkt voor mij tegen te vallen.
Bij 1 bestand lukt het allemaal nog, maar met meerdere niet. Waarschijnlijk is het niet moeilijk maar ik zie de oplossing niet meer en ik ben niet zo ervaren in ASP.

code:
1
2
3
4
5
6
7
8
9
10
11
12
<%i=1%>
        <%For Each File in Upload.Files%>
            <%If File.ImageType = "GIF" or File.ImageType = "JPG" or File.ImageType = "PNG" Then%>              
                image<%=i%>=<%=File.Filename%> 
                width<%=i%>=<%=File.ImageWidth%> 
                height<%=i%>=<%=File.ImageHeight%>
                    
            <%Else%>
                <B><%=File.Filename%></B></TD>
            <%End If%>
        <%i=i+1%>
    <%Next%>


Het wegschrijven doe ik als volgt. Ik laat alleen een relevant stukje zien.
code:
1
2
3
4
5
6
7
8
9
objRS("image1")= image1
objRS("image2")= image2
...
objRS("height1")= height1
objRS("height2")= height2
...
objRS("width1")= width1
objRS("width2")= width2
...

Ik weet niet of dit goed maar ik heb van alles al geprobeerd en met deze code heb ik geen foutmelding dus hou ik dit nu even als basis. Ik raak nu een beetje het gezonde boerenverstand kwijt. Ik heb al veel gezocht maar kom steeds op oplossingen die het plaatjes in de database zetten en ik wil alleen de bestandsnamen in de database.
Hopelijk kan iemand mij blij maken met de oplossing. Bedankt alvast.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Er klopt in elk geval geen bal van je ASP tags ;)
Je hoeft niet om elke regel <% %> te zetten. Dat is voldoende voor een blok. Je gebruikt ze alleen om "te switchen" tussen HTML en ASP.
Verder escape je de ASP op de verkeerde plaatsen. Ik denk, even uit de losse pols, dat dit al beter klopt:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%i=1
        For Each File in Upload.Files
            If File.ImageType = "GIF" or File.ImageType = "JPG" or File.ImageType = "PNG" Then              
                image(i)=File.Filename
                width(i)=File.ImageWidth
                height(i)=File.ImageHeight
            Else%>
                <B><%=File.Filename%></B>
            <%End If
        i=i+1
    Next%>  

objRS("image1")= imageI(1)
objRS("image2")= image(2)
...
objRS("height1")= height(1)
objRS("height2")= height(2)
...
objRS("width1")= width(1)
objRS("width2")= width(2)
...


Of beter:

ASP:
1
2
3
4
5
For i = 1 to aantal_images
    objRS("image" & i)= image(i)
    objRS("height" & i)= height(i)
    objRS("width" & i)= width(i)
Next

Even aangenomen dat je voor image, width en height arrays gebruikt.
Dit is wél redelijk basic ASP. Als je moeite hebt met wanneer je wel en geen <% %> tags moet gebruiken moet ik je toch even verwijzen naar een tutorialletje ofzo om die kennis even op te frissen c.q. aan te vullen ;)

Los daarvan laat je DB ontwerp ook te wensen over vermoed ik, gezien je image1, image2 etc. gebruikt (naar ik aanneem veldnamen dus). Kijk dan meteen even een tutorial over DB's normaliseren door ;)
Verwijderd schreef op zaterdag 30 september 2006 @ 23:41:

Hopelijk kan iemand mij blij maken met de oplossing. Bedankt alvast.
Nu ben ik in deze reply al aardig gul met het weggeven van "de oplossing", maar in principe doen we niet aan "oplossingen geven". In PRG wordt verwacht dat je zelf je problemen oplost, wij wijzen je alleen in de juiste richting of helpen je bij het zoeken naar een oorzaak. Lees dus ook nog even de Programming Beleid Quickstart door ;)

[ Voor 104% gewijzigd door RobIII op 01-10-2006 04:05 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Het lijkt inderdaad raar die code maar dat komt omdat ik de html zaken er tussenuit gelaten heb om het overzichtelijker te krijgen om het hier te plaatsen. Verder zou het voor de werking niet uit mogen maken maar het ziet er inderdaad niet lekker uit.

Mijn database bestaat uit meerdere tabellen. De tekstvelden worden naar een andere tabel weggeschreven en de eigenschappen van de plaatjes naar een andere. Ik maak ook gebruik van andere tabellen dus ik gooi niet alles in een tabel.

Het leek mij makkelijk om te werken met image1, image2 etc als veldnamen omdat ik de plaatjes afhankelijk van het nummer voor andere doeleinden gebruik. Bovendien waren er maar 6 afbeeldingen maximaal nodig. Door jouw opmerkingen ben ik er opnieuw naar gaan kijken en tot de conclusie gekomen dat het niet noodzakelijk is en eerder omslachtig is. Ik kan de plaatjes ook achterhalen door de combinatie met het imageid veld die uniek is. Omdat ik gebruik maak van een relationele database kan ik makkelijk alle plaatjes laten tonen die tegelijkertijd zijn toegevoegd.

Mijn bedoeling was ook niet om tot een kant en klare oplossing te vragen. Dit kon ook niet omdat ik maar een stukje liet zien en het niet directe relevante wegliet. Ik zocht meer naar een duwtje in de rug wat mij tot de oplossing zou brengen.

Gelukkig werkt het door het aanpassen van de tabel wel omdat ik hierdoor makkelijk de benodigde velden kon wegschrijven. Bedankt voor de kritiek. d:)b Nu kan ik tenminste weer verder. Ik heb er te lang onnodig mee zitten te klooien waardoor ik het overzicht verloren ben.