29. juli 2002 - 11:25Der er
44 kommentarer og 2 løsninger
auto oprettelse af side med billeder
Hej... Jeg leder efter følgende.
Et link (billede af et camera) som på en eksisterende asp-side oprettes hvis der findes en folder/bibliotek med samme ID som emnet. Herudover en asp-side som henter billederne ind fra den pågældende folder. Navn og antal af billeder kendes ikke på forhånd. Billedtypen er altid jpg.
Du skal have gang i noget der hedder FileSystemObject. Der kan du specificere hvilken sti der skal søges i efter hvilken folder, og så hente samtlige filer i folderen ind. Men det er lidt svært at forklare, uden at vide noget om hvordan dit bibliotek er lavet. Her er der en der laver lidt af det samme, præv at klippe klistre lidt af det, så kan du nok stille nogle mere specifikke spørgsmål. http://www.eksperten.dk/spm/237083
ezolu > dit bud ser unægteligt meget spændende ud. Er der nogen som kan være lidt mere behjælpelig ? - Helst i form af noget kode, da jeg ikke lige kan gennemskue hvordan.
Jeg kan godt lave det du vil have, men jeg er nød til at have flere oplysninger før jeg kan hjælpe dig, derfor min forrige kommentar. Du siger du har et ID på en folder/bibliotek. Er det et navn på en folder? Hvor ligger den folder i forhold til din asp side? Ligger alle disse foldere/biblioteker i samme nivea, eller er de spredt over serveren?
Denne side laver f.eks en liste af alle foldere og filer i mappen billeder, som ligger i samme niveau som asp siden der indeholder koden. Er det noget af den stil du skal bruge?
ups <% sti = Server.Mappath("billeder") Set fso = Server.CreateObject("Scripting.FileSystemObject") set folder = fso.Getfolder(sti) for each mappe in folder.subfolders response.write mappe.name & "<br>" for each fil in mappe.files response.write " " & fil.name & "<br>" next next %>
Jeg skal forsøge at beskrive det hele lidt nærmere.
Jeg har en eksisterende asp-side (oversigt.asp) som lister nogle emner op med et link til en anden asp-side (detalje.asp) hvori emnet vises med udførlige oplysninger. Hvert emne har et ID (primærnøgle) i en Access-database. Billeder har jeg normalt liggende i et bibliotek "Foto". Nu vil jeg gerne i biblioteket "Foto" kunne oprette underbiblioteker med diverse ID som navn. Inde fra min detalje.asp vil jeg gerne have der fremkommer et link hvis der eksisterer et underbibliotek med samme navn som det valge emnes ID. Dette link skal bringe os over på en asp-side ( lad os blot kalde den billed.asp), hvor de billeder som der ligger i det pågældende valgte emnes bibliotek, indlæses og vises.
Øh ? - fik du fat i bare lidt af det ? Det gik vist hen og blev mere forvirrende end forklarende.
Nejnej, jeg er helt med. Først skal du tjekke om der er en underfolder i Foto, som har samme navn som rs("id"), jeg går udfra at du har lavet et udtræk af din database og lagt det i et recordset der hedder rs, og at ID'et ligger i en kolonne som har feltnavnet "id". Altså: sti = Server.Mappath("Foto") Set fso = Server.CreateObject("Scripting.FileSystemObject") Do while not rs.eof if FolderExists(sti & rs("id")) then response.write "<a href='billed.asp?folder=" & rs("id") & "'>link</a> else response.write "der er ingen floder der hedder " & rs("id") end if loop
Derefter skal du have lavet din billed.asp sti = Server.Mappath(request.querystring("folder") & "Foto") Set fso = Server.CreateObject("Scripting.FileSystemObject") set folder = fso.Getfolder(sti) for each fil in folder.files reponse.write "<img src='Foto/" & request.querystring("folder") & "/" & fil.name & "'> next
Hej ras2000... Det ser rigtig spændende ud det som du har lavet der. Jeg vil prøve om jeg kan få det til at virke. Er lidt usikker med hensyn til begyndelsen sti = Server.Mappath("Foto")? Destinationen på folderen Foto er: F:\website\Foto Er du herinde og kigge i weekenden ?
Nej, kun hverdage. Hvis man i en asp-side skriver Response.write Server.MapPath("Foto") og der vel at mærke er en folder der hedder Foto i samme niveau som asp-siden, så vil den skrive den hårde sti til mappen Foto, altså F:\inetPub\wwwroot\foldernavn\Foto, eller hvad det nu er. Du skal bruge den hårde sti (frem for den relative) i getFolder/File kommandoerne.
Gider du kigge om jeg har fattet det rigtigt. Jeg vil nemlig utroligt gerne have det op at køre hurtigst muligt.
tien til folderen Foto er som bekendt F:\Website\Foto
detalje.asp
<% sti = "F:\Website\Foto" Set fso = Server.CreateObject("Scripting.FileSystemObject") Do while not oversigt.eof if FolderExists(sti & oversigt("ID")) then response.write "<a href='billed.asp?folder=" & oversigt("ID") & "'>Flere fotos</a> else response.write "der er ingen fotos af emnet nr. " & oversigt("ID") end if loop %>
Nedenstående er jeg imidlertid meget i tvivl om Du skrev at jeg skulle bruge den direkte sti til folderen men hvorhenne
billed.asp
<% sti = Server.Mappath(request.querystring("folder") & "Fotos") Set fso = Server.CreateObject("Scripting.FileSystemObject") set folder = fso.Getfolder(sti) for each fil in folder.files reponse.write "<img src='Foto/" & request.querystring("folder") & "/" & fil.name & "'> next %>
Jeg har lavet siderne nu men jeg får fejlen Unterminated string constant i linien: response.write "<a href='billed.asp?folder=" & oversigt("ID") & "'>Flere fotos</a>
Synes godt om
Slettet bruger
02. august 2002 - 15:43#15
Prøv at rette =" & oversigt("ID") & "' til '" & oversigt("ID") & "'
Synes godt om
Slettet bruger
02. august 2002 - 15:46#16
Undskyld - hvis det er et tal, så ret det til = " & oversigt("ID") & ">Flere...
nu har jeg prøvet Response.Write "<a href='billed.asp?folder=" & oversigt("ID") & ">Klik her for flere billeder</a> men får stadig fejlen Unterminated string constant. :-(
Åh pyh tak skal du have ras2000. Jeg var lige ved at tro i havde opgivet mig.
Jeg har rettet linien, men når jeg forsøger at køre min detalje.asp munder den efter lang tids venten ud i en timeout fejl. Hvad skyldes det ? Kan den ikke finde folderen ? ( jeg afprøver ellers med en folder som eksisterer ).
Do while not oversigt.eof if FolderExists(sti & oversigt("ID")) then response.write "<a href='billed.asp?folder=" & oversigt("ID") & "'>Flere fotos</a> else response.write "der er ingen fotos af emnet nr. " & oversigt("ID") end if loop
Der skal der stå:
Do while not oversigt.eof if FolderExists(sti & oversigt("ID")) then response.write "<a href='billed.asp?folder=" & oversigt("ID") & "'>Flere fotos</a> else response.write "der er ingen fotos af emnet nr. " & oversigt("ID") end if oversigt.movenext loop
Så skal du have en oversigt.movefirst efter ovenstående kode. Det kan være den så kommer med en helt ny fejl, der er noget med at recordsettet skal åbnes på en speciel måde, hvis du vil bevæge dig frit op og ned i en tabel. Hvis du får en ny fejl, så læg lige den kode du benytter til at åbne tabellen ind, så må vi se om jeg kan rette den til.
Jeg har kopieret div kode ind nedenfor. Kort fortalt er det ønsket at kunne trække div. oplysninger ud af databasen - herefter køre vor lille fotokode link - og igen forsætte med at trække nogle oplysninger ud af databasen.
DIM Conn, MySQL, oversigt 'Open The Connection To the DataBase Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=F:\Website\data\Emne.mdb" Conn.Open DSN
MySQL = "SELECT * FROM Emner WHERE [LNr] ='" & Request.Querystring("ID") &"'" SET oversigt = Conn.Execute(MySQL)
sti = "F:\Website\Fotos" Set fso = Server.CreateObject("Scripting.FileSystemObject") Do while not oversigt.eof if fso.FolderExists(sti & oversigt("ID")) then Response.Write "<a href='billed.asp?folder=" & oversigt("ID") & ">Klik her for flere billeder</a>" else Response.Write "Der er ingen fotos af emnet nr. " & oversigt("ID") end if oversigt.movefirst loop
Prøv denne her: DIM Conn, MySQL, oversigt Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=F:\Website\data\Emne.mdb" Conn.Open DSN set oversigt = Server.CreateObject("ADODB.Recordset")
MySQL = "SELECT * FROM Emner WHERE [LNr] ='" & Request.Querystring("ID") &"'" oversigt.Open sql, Conn, 3, 3
I stedet for denne her: DIM Conn, MySQL, oversigt 'Open The Connection To the DataBase Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=F:\Website\data\Emne.mdb" Conn.Open DSN
MySQL = "SELECT * FROM Emner WHERE [LNr] ='" & Request.Querystring("ID") &"'" SET oversigt = Conn.Execute(MySQL)
Så skulle du have mulighed for at bevæge dig begge veje i recordsettet.
ras2000>Jeg har nu indsat dit forslag til at åbne databasen med. Det afstedkommer flg. fejlmelding:
Error Type: ADODB.Recordset (0x800A0BB9) Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. /detalje.asp, line 18
Jamen så må der jo være noget andet galt. Det er lidt svært at gætte hvad det er der sker uden at have det selv. Der er et felt der hedder "beskrivelse"?
Hej, Jeg har prøvet at udkommentere vores foto-kode og så læses siden altså fint ind. Den nye Databaseforbindelse er altså ok... Men... -det ser altså stadig ud til at den ikke kan lide at jeg henter nogle felter fra databasen efter vores fotokode. Heriblandt oversigt("beskrivelse") Vi det være en hjælp om jeg lister koden som bruges op en gang til ?
Nej den står her jo allerede. Men du siger at nogle af felterne er den ikke så glade for. Du ved vel at det er case sensitive? Prøv evt med oversigt(n) hvor n er kolonne-tallet, 0 er første kolonne, 1 er anden kolonne osv. Det skal stå uden pinger (""''). Ellers kan det være at du behandler en streng som et tal, el. lign.
Øh - jamen siden læser skam fint nok alle felter ind. Den har iøvrigt fungeret fint i omkring et par år. Den virker bare ikke når vi forsøger at afvikle foto-koden som "vi" har lavet sammen. Jeg har en fornemmelse af at det er løkken vi kører i fotokoden der er årsag til at jeg ikke kan få lov til at hente flere databasefelter ind på siden bagefter. Kan det ikke godt tænkes at være der fejlen ligger.
Det skulle det ikke have. Men du kan jo prøve at hive to recordsets ind, en til foto halløjet, og en til resten. Så skulle de jo ikke kunne genere hinanden. DIM Conn, MySQL, oversigt Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=F:\Website\data\Emne.mdb" Conn.Open DSN set oversigt = Server.CreateObject("ADODB.Recordset")
MySQL = "SELECT * FROM Emner WHERE [LNr] ='" & Request.Querystring("ID") &"'" oversigt.Open MySQL, Conn, 3, 3 foto.Open MySQL, Conn, 3, 3
Hov, følgende skal også ændres DIM Conn, MySQL, oversigt, foto Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=F:\Website\data\Emne.mdb" Conn.Open DSN set oversigt = Server.CreateObject("ADODB.Recordset") set foto = Server.CreateObject("ADODB.Recordset")
Jubiii nu kan siden indlæses inkl. fotokode. Den skriver godt nok linket som tekst istedet for, men det er nok blot et tegn som mangler i linien. Response.Write "<a href='billed.asp?folder=" & foto("LNr") & ">Klik her for flere billeder</a>"
Mht. billed.asp så kommer der en fejl "path not found" i linie 10 : set folder = FSO.Getfolder(sti)
ras2000> Du fortjener s.. snart nogle flere point end de udlovede.
Response.Write "<a href='billed.asp?folder=" & foto("LNr") & ">Klik her for flere billeder</a>" skal rettes til Response.Write "<a href='billed.asp?folder=" & foto("LNr") & "'>Klik her for flere billeder</a>"
Ras2000> Tusind tak for din store indsats. Nu virker det ! Hvad skal jeg skrive således at den kun viser jpg-filer ? Og kan jeg få lavet det således at jeg inde på billed.asp siden kan trække emnets navn m.v. frem som overskrift på siden ? oversigt("ID") osv. Skal jeg oprette et nyt spørgsmål til dig om det, så du kan få nogle flere point ?
ezolu> Du skal skam også, om ikke have mange point, så dog alligevel have nogle for din hjælp også.
Hvis du laver et nyt spørgsmål til det seneste er jeg fuldt ud tilfreds. Jeg kan dog røbe at du kan få den til at skrive jpg filerne med en lille if sætning: If Right(fil.name, 3) = "jpg" or Right(fil.name, 4) = "jpeg" then Response.write "<img ... end if Prøv lige at se om du ikke selv kan få det til at virke, ellers post det som et nyt spørgsmål. Rimeligt simpelt, højst 30 point.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.