TrollMedlem sedan dec. 2003229 inlägg Hejsan, jag skulle behöva lite tips och hälp med att skapa ett script. Det jag vill göra är att från en .asp sida kunna välja en mapp, låt oss säga mappen 'Olof' samt en annan mapp som heter 'Thmb' som ligger i mappen 'Olof'
Sen med hjälp av ett formulär så ska jag kunna fylla i följande info:
Kategori [Där fyller jag i mappnamet som kommer vara samma namn som kategorin, Olof]
Mapparna kommer att innehålla bilder av typen .jpg.
Sen när jag trycker på submit knappen så skulle jag vilja att sidan man kommer till så ska scriptet utföra detta, det är här problemet kommer :/
1. Leta igenom mappen 'Olof' samt undermappen 'Thmbs'
2. Lägga in bildernas filnamn i databasen. Där en tabell som heter tblBilder finns, i denna tabell finns ett fält som heter 'picFile' där filnamnet på bilderna i mappen 'Olof' ska hamna, ett fält som heter 'picThmb' där filnamnet på bilderna i undermappen 'Thmbs' ska hamna och ett sista fält som heter 'picCat' där kategorin läggs till, 'Olof'.
Är det någon som har en bra lösning på problemet så skulle jag verkligen vara överlycklig om jag kunde få hjälp med detta för jag har ingen aning om har jag ska gå till väga för att detta ska fungera, tacksam för all hjälp jag kan få.
//Troll
TrollMedlem sedan dec. 2003229 inlägg Kanske ska tillägga att jag använder en Access databas.
MogMedlem sedan nov. 2003266 inlägg Postade nyss ett script som loopar genom mappar, kanske kan vara till lite hjälp.
http://www.webforum.nu/showthread.php?s=&postid=765890#post765890
TrollMedlem sedan dec. 2003229 inlägg Aaaah, tackar, ska kolla det! :)
Några andra som har mer tips/förslag? Vill ha så många synpunkter på detta som möjligt så jag får en bredare uppfattning på hur jag kan lösa detta.
TrollMedlem sedan dec. 2003229 inlägg Kollade igenom scriptet och det verkar ju vara precis det jag är ute efter för att kolla igenom mappen, men hur ska jag göra för att lägga till filnamnen under rätt fält i tabellen?
Altså, jag vill att alla filenamnen ska hamna i fältet 'picFile' i tabellen tblBilder. Plus lägga till Kategori namnet i fältet 'picCat' som kommer vara samma namn som mappen jag söker igenom.
MogMedlem sedan nov. 2003266 inlägg Har du nån kod för databaskoppling?
TrollMedlem sedan dec. 2003229 inlägg Eftersom jag inte vet hur jag ska gå tillväga med att lägga in bilderna så vet jag inte heller hur jag ska bygga databaskopplingen men jag skulle väll tippa på att det ska se ut något i denna stil på sidan, tex spara.asp:
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("data/bilder.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM tblBilder"
RecSet.Open Addera, Connect, 3, 3
RecSet.Addnew
RecSet("PicFile")= Vad ska jag requesta här så att sökvägen till bilderna hämnar där?
RecSet("PicThmb")= Samma fråga som ovan :)
RecSet("picCat")= Request.Form("Kategori")
RecSet.Update
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
response.redirect("någon_vettig_adress.asp")
%>
Eller är jag helt fel ute nu?
Låt oss säga att detta nu skulle stämma, hur ska jag göra så att alla filnamn till bilderna hamnar i fältet 'picFile' som det ser ut nu så kommer den ju bara lägga till en men jag vill ju att alla bilder i mappen ska hamna i tabellen 'tblBilder' på samma gång....
Hmm, nu blev jag lite fundersam, var det ens detta som du undrade över? Börjar bli rörigt i hjärnan nu :)
MogMedlem sedan nov. 2003266 inlägg
Troll skrev:
Börjar bli rörigt i hjärnan nu :)
Håller med :h
Ska kolla lite på det.
TrollMedlem sedan dec. 2003229 inlägg Ok, tackar, om du kanske skulle komma på ett smidigare sätt att göra det så vore ju det mycket mycket uppskattat :) Tack så otroligt mycket för att du tar dig tid att hjälpa till :)
MogMedlem sedan nov. 2003266 inlägg Klockan börjar bli mycket, jag börjar bli fyrkantig :OO
Du kan ju testa detta, kopiera och modifiera, har inte testkört själv så jag lämnar inga garantier.
<%
Response.Write(ReadDir(Server.MapPath("/bilder")))
Function ReadDir(FolderName)
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
''Kontrollera att mappen finns
If Not objFSO.FolderExists(FolderName) Then
ReadDir = "Mappen <B>" & FolderName & "</B> finns inte !"
Exit Function
End If
''Skapa objekt för aktuell mapp
Dim objFolder
Set objFolder = objFSO.GetFolder(FolderName)
Dim objFile
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("data/bilder.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM tblBilder"
RecSet.Open Addera, Connect, 3, 3
''Loopa igenom alla filer i mappen
For Each objFile In objFolder.Files
'Response.Write(objFile.Path & "<BR>") 'Skriver ut sökvägen till filen
RecSet.Addnew
''RecSet("PicFile")= Vad ska jag requesta här så att sökvägen till bilderna hämnar där?
RecSet("PicFile")= objFile.Path
''Nästa får jag inte till (just nu iaf) bör bli en loop till här som fixar undermappen
''Du kan ju kopiera hela funktionen och anropa den här (om du har fasta namn på undermapparna)
''RecSet("PicThmb")= Samma fråga som ovan
RecSet("picCat")= Request.Form("Kategori") ''Lite osäker på denna, kanske ska vara utanför loopen
RecSet.Update
Next
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
Set objFolder = Nothing
Set objFile = Nothing
Set objFSO = Nothing
End Function
%>
TrollMedlem sedan dec. 2003229 inlägg Tackar, tackar! Jag ska testa det och se hur det går, men jag tror att jag försöker få ordning på det imorn så jag hör av mig imorn och meddelar hur det gick eller inte gick ;) Men jag kom att tänka på en grej, om man ger bilderna i mappen 'Thmb' samma namn som bilderna i mappen 'Olof' så borde det ju bli bra mycket lättare och så slipper man ju loopa ännu en gång och bara sätta in samma värde i fältet 'picThmb'. Hmmm, ska klura lite på detta.
ha det så fint och tack för all hjälp!
solbulleMedlem sedan mars 20015 287 inlägg Om det är minibilder i mappen thumbs av de riktiga bilderna och dessa ska höra ihop måste du ju ta hänsyn till detta.
Antingen har de samma typ namn, eller ja..
Annars om det är två separata mappar/bildinnehåll kan du väl låta subben/funktionen snurra två gånger, först ett varv med mappen Request.Form("Kategori") och sen ett varv med mappen:
Request.Form("Kategori") & "/" & Request.Form("undermapp")
(Alt. om det var ett fast namn på undermappen.)
Bryt ut den del där man anger mappnamnen ur funktionen och lägg in dom som argument i stället när du kallar på den.
TrollMedlem sedan dec. 2003229 inlägg solbulle:
Hmmm, tack för tankarna :) Ska testa mig fram och se hur det går
solbulleMedlem sedan mars 20015 287 inlägg Du skrev lite samma sak medans jag höll på o skriva. :)
Om du alltid har en thumb behöver du ju inte ens bemöda dig med att lägga in dom namnen i db, det löser du ju när du skriver ut datat. Egentligen behöver du inte spara kategori/namn heller för den delen om du spar det i sökvägen... (Det sista var väl lite långsökt kanske)
TrollMedlem sedan dec. 2003229 inlägg Haha, så det kan gå :) Men det är sant som du säger, det kanske inte skulle behövas men just nu är jag allt för sliten i hjärnan för att kunna tänka klart, det har vart ett hårt pass framför datorerna idag ;)
TrollMedlem sedan dec. 2003229 inlägg Ok, nu har jag testkört det och scriptet funkar som det ska, nästan ;) Jag får detta felmedelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
Errors occurred
add_imgs.asp, line 31
Kollade upp det och fick fram denna info:
DB_E_DATAFIELD_OVERFLOW
80040E21 OLE DB Specific:
The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.
Koden kommer nedan och rad 31 är markerad med fet text:
<%
Response.Write(ReadDir(Server.MapPath("img/Ego")))
Function ReadDir(FolderName)
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(FolderName) Then
ReadDir = "Mappen <B>" & FolderName & "</B> finns inte !"
Exit Function
End If
Dim objFolder
Set objFolder = objFSO.GetFolder(FolderName)
Dim objFile
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("data/bilder.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM tblBilder"
RecSet.Open Addera, Connect, 3, 3
For Each objFile In objFolder.Files
'Response.Write(objFile.Path & "<BR>")
RecSet.Addnew
[B]RecSet("picFile")= objFile.Path[/B]
RecSet("picName")= Request.Form("Title")
RecSet("picCat")= Request.Form("Kategori")
RecSet("Date") = date
RecSet.Update
Next
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
Set objFolder = Nothing
Set objFile = Nothing
Set objFSO = Nothing
End Function
%>
Fältet 'picFile' vill inte. När man bara kör scriptet i dess orginalform utan att lägga till info i databasen så listar den ju alla bilder i mappen som man har valt. Jag vill ju att varje bild får ett unikt ID, restrerande fält blir ifyllda med ett unikt ID men det altså bara picFile som felar.. knepigt, förstår inte vad jag ska göra :/ Felmedelandet pekar ju på att den försöker lägga in all data i samma fält och under samma ID men jag vill ju ha separata som sagt och om jag lägger in endast en bild i taget så kommer jag ju garanterat slippa felet. Men hur? :)
Jag testade även att tabort rad 31 och bara lägga till den andra infon och det funkade helt perfekt så det är på rätt väg :)
Sen så märkte jag även att detta script tar med hela sökvägen, inte bara den som anges i första raden utan den tar och skriver ut tex: C:\mapp\mapp\img\Ego\Filnamn.jpg. Hur ska jag göra för att bara skriva ut filnamnet.jpg i vald mapp och inte hela sökvägen?
Så, det som jag behöver hjälp med nu är altså att först och främst få någon info att hamna i fältet ''picFile' och seda lösa hur jag ska få filnamnet.jpg enbart att hamna där, inte hela sökvägen. hoppas någon mer än jag är vaken nu och har för lite att göra ;)
MogMedlem sedan nov. 2003266 inlägg Hjälper detta ?
Dim tmpArr 'Bör nog placeras utanför loopen
'Ersätt rad 31 med dessa två
tmpArr = Split(objFile.Path, "\")
RecSet("PicFile")= tmpArr(Ubound(tmpArr))
TrollMedlem sedan dec. 2003229 inlägg Hmm, det ska jag undersöka sen när jag har möjlighet, tack för tipset :)
TrollMedlem sedan dec. 2003229 inlägg Oh yes! Det löste det! Tackar så otroligt mycket till er alla som har hjälp mig! :)