Avatar billede roenving Novice
09. august 2003 - 15:44 Der er 5 kommentarer og
1 løsning

asp til javascript-database

Hej asp'ere ...

Jeg har lavet en 'Working Demo' hvor jeg viser et eksempel på en fuldt skalerbar model for online afhængige selects.

Den baserer sig 'selvfølgelig' på en javascript-'database' som jo kun er mulig at vedligeholde på fornuftig vis fra en rigtig database.

Derfor vil jeg godt have et asp/vbscript, jeg kan vise de besøgende, som godt vil benytte modellen med asp.

Scenariet jeg forestiller mig er:

Een tabel med 5 felter: ID, produkt-gruppe, produkt-titel, colli-størrelse og colli-pris.

Udtrækket skal resultere i en fuldt sorteret javascript-database med værdierne fra kolonne 2, 3 og 4, som ser sådan ud :

var arr = [
  ['Valg 1',[
    ['2. valg 1 (1)',
      ['3. valg 1 (1-1)','3. valg 2 (1-1)','3. valg 3 (1-1)','3. valg 4 (1-1)']],
    ['2. valg 2 (1)',
      ['3. valg 1 (1-2)','3. valg 2 (1-2)','3. valg 3 (1-2)']],
    ['2. valg 3 (1)',
      ['3. valg 1 (1-3)','3. valg 2 (1-3)','3. valg 3 (1-3)','3. valg 4 (1-3)']]]],
  ['Valg 2',[
    ['2. valg 1 (2)',
      ['3. valg 1 (2-1)','3. valg 2 (2-1)','3. valg 3 (2-1)','3. valg 4 (2-1)']],
    ['2. valg 2 (2)',
      ['3. valg 1 (2-2)','3. valg 2 (2-2)']],
    ['2. valg 3 (2)',
      ['3. valg 1 (2-3)','3. valg 2 (2-3)','3. valg 3 (2-3)','3. valg 4 (2-3)','3. valg 5 (2-3)','3. valg 6 (2-3)']],
    ['2. valg 4 (2)',
      ['3. valg 1 (2-4)','3. valg 2 (2-4)','3. valg 3 (2-4)','3. valg 4 (2-4)']]]],
  ['Valg 3',[
    ['2. valg 1 (3)',
      ['3. valg 1 (3-1)','3. valg 2 (3-1)','3. valg 3 (3-1)']],
    ['2. valg 2 (3)',
      ['3. valg 1 (3-2)','3. valg 2 (3-2)','3. valg 3 (3-2)']],
    ['2. valg 3 (3)',
      ['3. valg 1 (3-3)','3. valg 2 (3-3)','3. valg 3 (3-3)']],
    ['2. valg 4 (3)',
      ['3. valg 1 (3-4)','3. valg 2 (3-4)','3. valg 3 (3-4)']],
    ['2. valg 5 (3)',
      ['3. valg 1 (3-5)','3. valg 2 (3-5)','3. valg 3 (3-5)']]]]
];

Bemærk specielt de forekomster af dobbelte [[, som kommer ved _start_ af værdier i de to første kolonner ...

Connection mv. behøver i ikke at medtage, så hvilken database i bruger skal i bare nævne, så inkompatibiliteter er 'åbenlyse'. Der er dog bonus, hvis sql-sætningen kan bruges på flere databaser uden ændring !o]

Hvis det er nødvendigt at lave flere forespørgsler i tabellen er det acceptabelt, men der er bonus for at producere en sql-forespørgsel, som leverer data klar til brug.

(Mine working demo's er ment som hjælp til selvhjælp, så jo nemmere de er at gå til, jo bedre)

Jeg har selv forsøgt mig med et vb-script til en asp'er, som havde brug for noget af den samme funktionalitet, så det kan måske bruges som inspiration til logikken, men der er kun to selects, her skal der være 3 !-)

http://www.eksperten.dk/spm/385210 -- kommentar 09/08-2003 11:34:44 og 14:57:19

Hvis I vil se, hvordan en fungerende ser ud, kan I gå ind på:

http://roenving.users.whitehat.dk/WD4Selects-beta.html

mvh
jes

PS. Jeg regner med at komme af med 200 points, så start-posen er bare for ikke at love for meget til den enkelte -- flere kan få fuldt udbytte ...

-- og der er bonus til en smuk løsning !o]
Avatar billede eagleeye Praktikant
09. august 2003 - 17:09 #1
Som jeg læser det skal koden være i stil med dette:



<html>
<head>

<%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db9.mdb")

SQL = "SELECT [produkt-gruppe], [produkt-titel], [colli-størrelse] FROM tabelnavn ORDER BY [produkt-gruppe], [produkt-titel], [colli-størrelse]"

Set rs = Conn.Execute(SQL)

rsArr = rs.GetRows()
'Så er [produkt-gruppe] i rsArr(0,i), [produkt-titel] er i rsArr(1,i), [colli-størrelse] er i rsArr(2,i)

Conn.Close
%>

<script language="javascript" type="text/javascript">
var arr = [
<%
oldValg1 = ""
oldValg2 = ""
for i = 0 to ubound(rsArr,2)
  if oldValg1 <> rsArr(0,i) then
    Response.write "['" & rsArr(0,i) & "', [" & vbCrLf
    oldValg1 = rsArr(0,i)
  end if

  if oldValg2 <> rsArr(1,i) then
    Response.write "['" & rsArr(1,i) & "'"
    oldValg2 = rsArr(1,i)
    newValg2 = true
  end if
  if newValg2 then
    Response.write "," & vbCrLf & "["
    newValg2 = false
  end if
 
  Response.write "'" & rsArr(2,i) & "'"
 
  t = i+1
  if t <= ubound(rsArr,2) then
    endValg = false
    if oldValg2 <> rsArr(1,t) then
      Response.write "]]"
      endValg = true
    end if
    if oldValg1 <> rsArr(0,t) then
      Response.write "]]"
      endValg = true
    end if
    Response.write ","
    if endValg = true then response.write vbCrLf
  else
    Response.write "]]]]"
  end if

next
%>
];
</script>



Bemærk dette script kun laver arr  arrayet og ikke har nogle select-boxe, eller noget andet.

P.S: Jeg er på vej af døren til grill-mad aften og er først tilbage enten sent i aften eller morgen, men jeg håber du kan komme vidre med det.
Avatar billede roenving Novice
09. august 2003 - 17:31 #2
Ser umiddelbart rigtig godt ud, eagleeye !-)
Avatar billede roenving Novice
09. august 2003 - 17:58 #3
>>eagleeye

Jeg har kun et spørgsmål:

Ved du om din sql-sætning virker på andet Access, som jeg går ud fra er din kilde med den conn.Open-streng ?-)

(eks. på sql-server el.)
Avatar billede eagleeye Praktikant
10. august 2003 - 10:54 #4
Ja det rigtigt, jeg har brugt Access.

Den SQL sætning skulle meget gerne kunne bruges til SQL-server og mySQL da den SQL sætning ikke bruger nogle database specefikke SQL ting som (TOP, LIMIT, ##, mf.). Det er bare en helt almendelig SELECT SQL sætning.
Avatar billede roenving Novice
14. december 2003 - 19:23 #5
-- og nu kan jeg vel ikke trække point-givningen mere ...

-- jeg havde tænkt mig at lave et javascript til at opbygge databasen, da det er åbenlyst besværligt at benytte denne fremgangsmåde, men endnu er jeg ikke kommet igang !o]

-- så foreløbig tak for hjælpen, så vender jeg tilbage, når jeg har en kode, du lige kan bekræfte (måske rette !-)
Avatar billede moejensen Nybegynder
24. februar 2006 - 08:59 #6
eagleeye har du tid til at kigge på den her: http://www.eksperten.dk/spm/690313

Den handler om det samme
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
Kurser inden for grundlæggende programmering

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