Avatar billede webbe Nybegynder
11. januar 2002 - 13:02 Der er 21 kommentarer og
2 løsninger

Overføre værdi fra select-box

Hejsa

Jeg er ved at lave et site hvor man skal kunne uploade billeder m.m.

Billederne skal placeres i en mappe alt efter hvilken værdi man har valgt i en select-box.

Jeg vil gerne have den valgt værdi over i en Session.
Det skal ikke ske når man trykker på \"Gem\" men lige efter man har valgt værdien.

Håber der er nogen der kan hjælpe!
Avatar billede tknudsen Nybegynder
11. januar 2002 - 13:17 #1
For at få data ind i en session på din server skal du submite en-eller-anden form*.

Du kunne feks lave en hidden iframe so indeholder en form du submiter på onChange på select boxen:

<head>
<script>

function setDiriectory(obj)
{
  document.frmSetDir.document.forms[0].directory.value = obj.value;
  document.frmSetDir.document.forms[0].submit();
}

</script>

</head>
<body>
<select onchange=\"setDirectory(this)\">
...options...
</select>


<iframe name=\"frmSetDir\" src=\"setdir.htm\" style=\"visibility:hidden\">
</iframe>
</body>


-setdir.htm:

<body>
<form action=\"setDirectory.php\">

<input name=\"directory\">

</form>

</body>
Avatar billede tknudsen Nybegynder
11. januar 2002 - 13:19 #2
i setDirectory.php (eller hvilket serverside sprogr du nu bruger) kan du så putte $directory over i en session variabel.
Avatar billede webbe Nybegynder
11. januar 2002 - 13:43 #3
Kan jeg angive en value i mit felt i setdir.htm???
Avatar billede webbe Nybegynder
11. januar 2002 - 13:44 #4
Jeg vil nemlig gerne teste om værdien også kommer over i setdir.asp!
Avatar billede tknudsen Nybegynder
11. januar 2002 - 14:20 #5
jada - du kan hardcode en value:

<input name=\"directory\" value=\"default\">

og du kan osse putte en submit knap på siden:

<input type=\"submit\" value=\"Test\">

så det bliver:

<body>
<form action=\"setDirectory.php\">

<input name=\"directory\" value=\"default\">
<input type=\"submit\" value=\"Test\">

</form>

</body>

og så kan du teste løs. Desuden kan du bare lade submit knappen side - iframen hvor setdir.asp er loadet i er jo usynlig.
Avatar billede webbe Nybegynder
11. januar 2002 - 14:21 #6
Og default vil vise den vlgte værdi?
Avatar billede tknudsen Nybegynder
11. januar 2002 - 14:23 #7
nej - default er selve værdien - du kan osse skrive \"testvalue\" el \"dimser er seje\"

(og jeg vil give dig ret i at \"default\" kunne være et-eller-andet html specifikt, men i ovenstående kommentar er det bare en tekst streng)
Avatar billede webbe Nybegynder
11. januar 2002 - 14:23 #8
Kan overhovedet ikke få den til at gøre noget af det den skal! ;0(
Avatar billede webbe Nybegynder
11. januar 2002 - 14:24 #9
Skulle den ikke hente værdien fra det jeg vælger???
Avatar billede tknudsen Nybegynder
11. januar 2002 - 14:24 #10
jo - men du ville jo gerne kunne teste setdir.htm siden - ikke ?
Avatar billede webbe Nybegynder
11. januar 2002 - 14:25 #11
Øøøøh - ja .... teste om den fik værdien af det jeg valgte!
Avatar billede tknudsen Nybegynder
11. januar 2002 - 14:28 #12
nå - ok

du kan udskrive directory variablen på asp siden:

response.write request(\"directory\")
response.end

Avatar billede tknudsen Nybegynder
11. januar 2002 - 14:31 #13
ohh - nu tror jeg at jeg ved hvad du mener :-)


du kan gøre følgende for at teste at det er det rigtige der kommer i setdir.htm filen:

<head>
<script>

function setDiriectory(obj)
{
  document.frmSetDir.document.forms[0].directory.value = obj.value;
//  document.frmSetDir.document.forms[0].submit();
}

</script>

</head>
<body>
<select onchange=\"setDirectory(this)\">
...options...
</select>


<iframe name=\"frmSetDir\" src=\"setdir.htm\" style=\"visibility:visible\">
</iframe>
</body>
Avatar billede webbe Nybegynder
11. januar 2002 - 14:40 #14
Okay - det hjalp!

Hvordan får jeg så lagt den værdi i min Session, som jeg skal bruge i følgende script:

Case \"save\"

Set Connect = Server.CreateObject(\"ADODB.Connection\")
Connect.Open \"personale\"

Session(\"dir\") = Request(\"direcory\")
Response.Write Session(\"dir\")
Response.End

If Session(\"dir\") = \"1\" Then
    foto_mappe = \"Scanbox Creative\"
End if
If Session(\"dir\") = \"2\" Then
    foto_mappe = \"Scanbox Entertainment AS\"
End if
If Session(\"dir\") = \"3\" Then
    foto_mappe = \"Scanbox Entertainment AS Kbh\"
End if
If Session(\"dir\") = \"10\" Then
    foto_mappe = \"Scanbox Entertainment sweden ab\"
End if
If Session(\"dir\") = \"11\" Then
    foto_mappe = \"Scanbox Entertainment norge as\"
End if
If Session(\"dir\") = \"12\" Then
    foto_mappe = \"IT-afdelingen\"
End if
If Session(\"dir\") = \"13\" Then
    foto_mappe = \"Scanbox Entertainment Finland\"
End if

Set Upload = Server.CreateObject(\"Persits.Upload.1\")
Upload.OverWriteFiles = False
Upload.Save Server.MapPath(\"./../images/personalebilleder/\"&foto_mappe&\"\") & \"\\\"

Avatar billede tknudsen Nybegynder
11. januar 2002 - 14:44 #15
...


Case \"save\"

Set Connect = Server.CreateObject(\"ADODB.Connection\")
Connect.Open \"personale\"

Session(\"dir\") = Request(\"direcory\") \'<-- du gør det selv her !!!!
Response.Write Session(\"dir\")
Response.End


...
Avatar billede webbe Nybegynder
11. januar 2002 - 14:47 #16
Problemet er bare at når jeg udskriver den er den tom!!!!
Avatar billede webbe Nybegynder
11. januar 2002 - 14:49 #17
Min form (som jeg submitter) indeholder jo en enctype=\"multipart/form-data\", så egentlig burde det vel være Upload(\"directory\"), men det kan jeg først når jeg har defineret min Upload!
Avatar billede tknudsen Nybegynder
11. januar 2002 - 14:55 #18
hvorfor vil du ha en enctype på den form - det er ikke nødvendigt


hvis

Session(\"dir\") = Request(\"direcory\") \'<-- du gør det selv her !!!!
Response.Write Session(\"dir\")
Response.End

ikke udskriver noget, skyldes det at der ikke kommer noget over i request(\"directory\")


Prøv at åbne setdir.htm siden. indtaste noget i text feltet og tryk på submit knappen. Dette skulle gerne medføre at det du skrev i text feltet bliver udskrevet af asp siden. Hvis ikke bliver set Directory.asp ikke kaldt rigtigt.
Avatar billede webbe Nybegynder
11. januar 2002 - 14:58 #19
Jo - jeg skal have en enctype, da jeg skal uploade et billede samtidig!

Er jo der er hele finden i det!
Avatar billede tknudsen Nybegynder
11. januar 2002 - 14:59 #20
ja - det er rigtigt, men kan du stadig ikke få udskrevet request(\"directory\") ?
Avatar billede webbe Nybegynder
11. januar 2002 - 14:59 #21
Nej - og det undrer mig!
Avatar billede webbe Nybegynder
11. januar 2002 - 15:00 #22
Jeg kan sende de filer der er tale om i en mail hvis det kan hjælpe dig!

Flere point er i vente!
Avatar billede webbe Nybegynder
14. januar 2002 - 09:26 #23
tknudsen:

Fandt selv en ASP-løsning på problemet der virker perfekt....uden brug af i-frames osv.

Løsningen er her:

Case \"save\"

Set Connect = Server.CreateObject(\"ADODB.Connection\")
Connect.Open \"personale\"

Set Upload = Server.CreateObject(\"Persits.Upload.1\")
Upload.OverWriteFiles = False
\'fotosti = Server.MapPath(\"./../images/personalebilleder/\"&foto_mappe&\"\") & \"\\\"
Upload.Save fotosti

Session(\"foto\") = Upload.Form(\"afdeling\")
If Session(\"foto\") = \"1\" Then
    fotosti = Server.MapPath(\"./../images/personalebilleder/Scanbox Creative/\") & \"\\\"
End if
If Session(\"foto\") = \"2\" Then
    fotosti = Server.MapPath(\"./../images/personalebilleder/Scanbox Entertainment AS/\") & \"\\\"
End if
If Session(\"foto\") = \"3\" Then
    fotosti = Server.MapPath(\"./../images/personalebilleder/Scanbox Entertainment AS Kbh/\") & \"\\\"
End if
If Session(\"foto\") = \"10\" Then
    fotosti = Server.MapPath(\"./../images/personalebilleder/Scanbox Entertainment Sweden AB/\") & \"\\\"
End if
If Session(\"foto\") = \"11\" Then
    fotosti = Server.MapPath(\"./../images/personalebilleder/Scanbox Entertainment Norge AS/\") & \"\\\"
End if
If Session(\"foto\") = \"12\" Then
    fotosti = Server.MapPath(\"./../images/personalebilleder/IT-afdelingen/\") & \"\\\"
End if
If Session(\"foto\") = \"13\" Then
    fotosti = Server.MapPath(\"./../images/personalebilleder/Scanbox Entertainment Finland/\") & \"\\\"
End if

Navn = Upload.Form(\"navn\")
Stillingsbeskrivelse = Upload.Form(\"stillingsbeskrivelse\")
Omraade = Upload.Form(\"omraade\")
Afdeling = Upload.Form(\"afdeling\")
Direkte_nr = Upload.Form(\"direkte\")
Mobil_nr = Upload.Form(\"mobil\")
Privat_nr = Upload.Form(\"privat\")
E_mail = Upload.Form(\"mail\")
Foto = Upload.Form(\"foto\")

Set Foto = Upload.Files(\"foto\")
    If Foto is nothing Then
        Foto1 = \"\"
    Else
        Foto1 = Foto.ExtractFileName
    End if

sql = \"SELECT TOP 1 * FROM Navn ORDER BY Id DESC\"
Set rs = Connect.Execute(sql)

If (rs.BOF OR rs.EOF) Then
    old_id = \"0\"
Else
    old_id = rs(\"Id\")
End if

new_id = old_id + 1

sql1 = \"INSERT INTO Navn (Id,Navn,Omraade,Afdeling) VALUES (\"&\"\"&new_id&\", \'\"&Navn&\"\', \'\"&Omraade&\"\', \"&Afdeling&\")\"
Connect.Execute(sql1)

sql2 = \"INSERT INTO Stillingsbeskrivelse (Id,Stillingsbeskrivelse) VALUES (\"&\"\"&new_id&\", \'\"&Stillingsbeskrivelse&\"\')\"
Connect.Execute(sql2)

sql3 = \"INSERT INTO Privat_nr (Id,Privat_nr) VALUES (\"&\"\"&new_id&\", \'\"&Privat_nr&\"\')\"
Connect.Execute(sql3)

sql4 = \"INSERT INTO Direkte_nr (Id,Direkte_nr) VALUES (\"&\"\"&new_id&\", \'\"&Direkte_nr&\"\')\"
Connect.Execute(sql4)

sql5 = \"INSERT INTO Mobil_nr (Id,Mobil_nr) VALUES (\"&\"\"&new_id&\", \'\"&Mobil_nr&\"\')\"
Connect.Execute(sql5)

sql6 = \"INSERT INTO E_mail (Id,E_mail) VALUES (\"&\"\"&new_id&\", \'\"&E_mail&\"\')\"
Connect.Execute(sql6)

sql7 = \"INSERT INTO Foto (Id,Foto) VALUES (\"&\"\"&new_id&\", \'\"&Foto1&\"\')\"
Connect.Execute(sql7)

Response.Redirect(\"../show_pers.asp?id=\"&new_id&\"\")

--------------

Jeg har testet at den sender den rigtige værdi videre osv.

Men du får dog point for din indsats.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester