Avatar billede smith Nybegynder
29. oktober 2001 - 08:51 Der er 67 kommentarer og
1 løsning

Dropdown boxe

Hejsa
Jeg programmere normal kun i asp (jeg har ik sat mig ind i java script ENDNU :) men jeg har fået en opgave hvor jeg tror at jeger nød til at bruge java script.

opgaven går ud på følgende:

Der skal lavet et pc konfigurator system.
Den skal hente alle data fra en ms acess db.
der er 6-7 dropdown boxe .
den første dropdown boxe er motherboard, den skal så hente alle data omkring motherboard fra en ms access db (det kan jeg sagtens selv lave da det er asp :) men nu kommer problemet!
nu skal alle de andre dropdown boxe på siden opdater!
så de kun viser de forskellige ting der er i kategori med dette motherboard. såsom ram osv osv. :)

Nogen der har en id´e til hvordan dette kan løses ???
Hvis der er brug for flere oplysninger så sig til :)
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 08:52 #1
er der nogle krav til hvilke browsere/os det skal understøtte ?
Avatar billede NanoQ Nybegynder
29. oktober 2001 - 08:53 #2
http://www.eksperten.dk/spm/126889

Du må kun oprette samme spørgsmål én gang! - luk det ene...

NanoQ
Avatar billede agony Nybegynder
29. oktober 2001 - 08:55 #3
du laver en onChange på din dropdownbox som genloader din side.
Avatar billede smith Nybegynder
29. oktober 2001 - 09:03 #4
skal nok lukke det :)

Avatar billede smith Nybegynder
29. oktober 2001 - 09:04 #5
agony.... kan du give mig et eksempel!
jeg aner ik hvor det skal indsættes!
har ALDRIG brugt java script
Avatar billede smith Nybegynder
29. oktober 2001 - 09:07 #6
tknudsen >> nej der er ingen krav
Avatar billede smith Nybegynder
29. oktober 2001 - 09:08 #7
men jeg vil gerne hvis jeg kan få et eksempel (hvor aspen og det hele er )
Avatar billede agony Nybegynder
29. oktober 2001 - 09:19 #8
<form>
<select name=menu onChange=\"location.href = dinfil.asp\">
  <option value=1>Bundkort 1
  <option value=2>Bundkort 2
  <option value=3>Bundkort 3
  <option value=4>Bundkort 4
</select>
</form>


Når siden så genloader så fanger du den værdi som dropdown menu er sat til og ændre den næste dropdown menu derefter

:-)


Avatar billede agony Nybegynder
29. oktober 2001 - 09:25 #9
if request.form(\"menu\") = 1 THEN
    lav menu
if request.form(\"menu\") = 2 THEN
    lav menu
if request.form(\"menu\") = 3 THEN
    lav menu
if request.form(\"menu\") = 4 THEN
    lav menu
END IF
END IF
END IF
END IF
Avatar billede smith Nybegynder
29. oktober 2001 - 10:12 #10
how ???
kan ik rigtig gennemskue hvordan det skal kædes sammen med asp / db´en
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 10:14 #11
Man kunne jo også forestille sig noget rds-lignende, hvor alt data er tilgængelig når siden er loadet første gang, så slipper man for mange reloads for at få fyldt div comboboxe op.

Men siden det skal være kompatibelt på alle os og alle browsere kan ms-rds jo ikke bruges, da det er baseret på ActiveX.

Istedet kan der laves et array, som indeholder en struct med div motherboard oplysninger.

(laver lige et eksempel...)
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 10:18 #12
Jeg skal bare lige vide...

Skal de resterende comboboxe udfyldes med forskellige parametre for det valgte motherboard, eller er det fatlagt i db\'en, så eet mb har een mængde ram osv ?
Avatar billede smith Nybegynder
29. oktober 2001 - 10:23 #13
tknudsen >> hvis man vælger et motherboard der er med i kategori 1 så skal den kun vise ram lydkort osv der er med i kate gori 1 :)
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 10:24 #14
hvordan ser db\'en ud ? altså tabel designet
Avatar billede smith Nybegynder
29. oktober 2001 - 10:28 #15
der er 2 tabeller.
der er en tabel der hedder vare og en der hedder kategori
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 10:32 #16
og hvilke felter har du i de 2 tabeller ?
Avatar billede smith Nybegynder
29. oktober 2001 - 10:33 #17
har du ik en mail adr. så sender jeg den lige :)
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 10:34 #18
tkk@oaf.dk
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 11:03 #19
ok - så for lige at forstå det 100%...

Alle varer, inkl motherboards, ligger i \"vare\" tabellem. De tilhøre alle en katagori, som er angivet i \"kategori\" tabellen.

I motherboard dropdown-boxen skal alle varer af Varetypen motherboard listes og ved valg af motherboard i dropdown-boxen skal alle andre vare vises i andre dropdown-boxe.

Er dette korrekt ?

I så fald skal du angive hvilke varetyper, der skal listes i hvilke dropdown-boxe - eller skal jeg bare lige lave eksemplet - så du selv kan gøre det færdigt ?
Avatar billede smith Nybegynder
29. oktober 2001 - 11:05 #20
helt rigtig :)

der skal være følgende i denne her rækkefølge:
Motherboard
ram
Lydkort
Grafikkort
Harddisk
Kabinet
Skærm
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 11:05 #21
ok - vare-feltet i vare-tabellen svarer til dropdown-boxen ?
Avatar billede smith Nybegynder
29. oktober 2001 - 11:12 #22
yepsen :)
ja med mindre at man skal lave en omstruktur så hver vare har deres egen tabel og så hver dropdown box går ind og tjekker i den pågældende tabel!
Avatar billede smith Nybegynder
29. oktober 2001 - 11:12 #23
men gør sådan som du vil!
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 11:54 #24
ok - her er hvad jeg er nået frem til:

jeg har indført et felt i din vare-tabel, som angiver hvilken type vare det er - så een record kommer til at se således ud:

id - varetype - vare - pris - kategori

...

<HTML>
<HEAD>
<script language=\"javascript\">

function itemType()
{   
    this.catagory = 0;
    this.type = \'\';
    this.description = \'\';
    this.price = 0.0;
}

function itemHandler()
{
    this.item = new Array();
    this.count = 0;
   
    this.add = add;
}

function add(catagory,type,description,price)
{
    this.item[this.count] = new itemType();
    this.item[this.count].catagory = catagory;
    this.item[this.count].type = type;
    this.item[this.count].description = description;
    this.item[this.count++].price = price;
}

var items = new itemHandler();

//skal udfyldes af asp

items.add(0,\'MOTHERBOARD\',\'AOpen 6bx\',650.0);
items.add(1,\'MOTHERBOARD\',\'Asus 2\',740.0);
items.add(0,\'RAM\',\'Kingston 128mb\',239.95);
items.add(0,\'RAM\',\'IPX 128mb\',199.95);
items.add(0,\'SOUNDCARD\',\'SB Live\',595.95);
items.add(1,\'SOUNDCARD\',\'SB Live\',595.95);
items.add(1,\'SOUNDCARD\',\'SB Orch\',1595.95);

//*****************

function fillItem(catId,catDesc)
{
    var i,j=0;
    var objCb = document.getElementById(catDesc);

    objCb.options.length = 0;    //    remove all items

    objCb.options[j++] = new Option(catDesc,-1.0);

    for(i=0;i<items.count;i++)
    {
        if(items.item[i].type==catDesc && items.item[i].catagory==catId)
            objCb.options[j++] = new Option(items.item[i].description,items.item[i].price);
    }
}


// udfylder dropdown-boxe med katagori 0 ved start
function init()
{
    fillItem(0,\'RAM\');
    fillItem(0,\'SOUNDCARD\');
}

</script>

</HEAD>
<BODY onLoad=\"init()\">

<select id=\"motherboard\" onChange=\"fillItem(this.value,\'RAM\');fillItem(this.value,\'SOUNDCARD\');\">
<!-- skal udfyldes i asp -->
    <option value=\"0\">AOpen 6bx</option>
    <option value=\"1\">Asus 2</option>
</select>

<select id=\"RAM\">
<!-- bliver udfyldt af javascript -->
</select>

<select id=\"SOUNDCARD\">
<!-- bliver udfyldt af javascript -->
</select>

</BODY>
</HTML>
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 11:58 #25
Hele humlen i ovenstående ligger i de hardkodede items.add()-linier der er. Disse skal naturligvis fjernes og erstattes med noget asp:

<%
  while not objRs.Eof
    response.write \"items.add(\"+CStr(objRs(\"kategori\"))+\",\'\"+objRs(\"varetype\")+\"\',\'\"+objRs(\"vare\")+\"\',\"+CStr(objRs(\"pris\"))+\");\"
    objRs.MoveNext
  wend
%>
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 12:00 #26
et simpelt browser check til fillItem() funktionen:


var isNC = (document.layers) ? true : false;
var isIE = (document.all) ? true : false;
var dom = (document.getElementById) ? true : false;

var objCb = (isNC)? document.layers[this.divId] : ( (isIE)? document.all[this.divId] : document.getElementById(this.divId) );
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 12:03 #27
ehh - og så skal this.divId lige erstattes med catDesc


Desuden skal du være opmærskom på at id\'erne til de forskellige dropdown-boxe skal komme fra vare-tabellens varetype. Dvs dropdown-boxen til ram skal have id=\"RAM\" hvis du bruger \"RAM\" i vare-tabellen til at angive varetype ram
Avatar billede smith Nybegynder
29. oktober 2001 - 12:07 #28
kan du ik lige maile det til mig :)
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 12:08 #29
nårh jow - eksperten er komplet umulig at kopiere fra...
Avatar billede tknudsen Nybegynder
29. oktober 2001 - 12:48 #30
fik du filen ?
Avatar billede smith Nybegynder
30. oktober 2001 - 08:37 #31
ja men kan ik rigtig få asp´en til at arbejde sammen med det !
Jeg sætter 100 point mere på hvis du lige kan hjælpe mig helt færdig :)
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 08:51 #32
hvordan henter du data fra db\'en ?
Avatar billede smith Nybegynder
30. oktober 2001 - 08:54 #33
jeg skal lige have en ting af vide først... jeg skal jo lave noget asp programmering midt i java scriptet, hvad skal man skrive før man begynder ??
jeg mener skal der ik være noget med scriptlanguage=vbscript oder E??
Avatar billede smith Nybegynder
30. oktober 2001 - 08:56 #34
¨TKNUDSEN>> kan du ik lige sende mig siden hvor du har lavet asp´en til en eks db.
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 08:58 #35
Nej - navnet på din side skal slutte med .asp (eller noget der af din webserver bliver fortolket af asp). Derefter kan du indsætte asp kode hvor du vil ved at angive det med <% og %>

jeg indsætter lige asp koden i resten...
Avatar billede smith Nybegynder
30. oktober 2001 - 09:13 #36
har du sendt filen ?
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 09:39 #37
nej - var lige til møde
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 09:43 #38
så er den sendt
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 09:53 #39
hvordan går det ellers i Sønderborg ? (På skolen)
Avatar billede smith Nybegynder
30. oktober 2001 - 09:58 #40
min connection string er det
DSN = DSN & \"DBQ=\" & Server.MapPath (\"db.mdb\")

????
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 10:01 #41
ja - det er det
Avatar billede smith Nybegynder
30. oktober 2001 - 10:12 #42
er det så sådan her:
objConn.Open \"DSN & \"DBQ=\" & Server.MapPath (\"db.mdb\")
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 10:25 #43
Et trick jeg plejer at bruge når jeg skal lave en connection streng er at oprette en .udl fil.

Feks dbconn.udl. Window kender .udl filer og åbner du filen (dobbeltklik) starter en connection wizard. Og med den har jeg lavet følgende connection streng:

\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"+ServerMappath(\"db.mdb\")+\";Persist Security Info=False\"

Som du kan se er det via Jet - hvilket betyder at du ikke behøver at oprette et dsn.
Avatar billede smith Nybegynder
30. oktober 2001 - 10:29 #44
smart...og hvad skriver du så ved denne linje i asp scriptet ?
objConn.Open
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 10:32 #45
objConn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"+ServerMappath(\"db.mdb\")+\";Persist Security Info=False\"
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 10:33 #46
objConn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"+Server.Mappath(\"db.mdb\")+\";Persist Security Info=False\"
Avatar billede smith Nybegynder
30. oktober 2001 - 10:34 #47
jeg kan ik rigtig for det til og virke jeg får denne fejl
Error Type:
Microsoft VBScript runtime (0x800A01F4)
Variable is undefined: \'ServerMappath\'
/drop/drop.asp, line 10

sender dig lige scriptet
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 10:38 #48
der skal et \'.\' ind imellem Server og MapPath:

Server.Mappath

(se evt kommentar 30/10 2001 10:33:23 :-)
Avatar billede smith Nybegynder
30. oktober 2001 - 10:42 #49
yep...lige en sidste ting (så accepter jeg lige dit svar :) jeg skal jo have nogle flere boxe op såsom kabinet skærm osv osv... hvordan gør jeg det ? er det styret fra db´en eller asp´en ?
Avatar billede smith Nybegynder
30. oktober 2001 - 11:10 #50
nu har jeg fundet ud af at oprette nye dropdownboxe hvor javaen skriver i dem!
men hvordan gør du så at den siger at hvis der er blevet valgt noget i kategori 0 så skal den kun vise det !
Avatar billede smith Nybegynder
30. oktober 2001 - 11:12 #51
function init()
{
    fillItem(0,\'RAM\');
    fillItem(0,\'SOUNDCARD\');
    fillItem(0,\'TEST\');
}
Avatar billede smith Nybegynder
30. oktober 2001 - 11:12 #52
det jeg mener er, den sortering du har lavet på ram motherboard og lydkort, hvordan får jeg den til at forsætte på min test ?
Avatar billede smith Nybegynder
30. oktober 2001 - 11:12 #53
<select id=\"TEST\">
<!-- bliver udfyldt af javascript -->
</select>
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 11:18 #54
monitor:

<select id=\"MONITOR\">
</select>

kabinet:

<select id=\"CABINET\">
</select>


og så skal varetypen i tabellen bare være den samme - så hvis du har en skærm skal varetypen være MONITOR
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 11:26 #55
Den dropdpwn der indeholder de forskellige motherboards har en event der hedder onChange. Den event kalder, som det er nu, fillItem() 2 gange. fillItem() ændrer indholdet af den valgte gruppe (RAM,SOUNDCARD,MONITOR osv.).

feks opdaterer fillItem(1,\'RAM\') ram-dropdown-boxen med varer i katagori 1
Avatar billede smith Nybegynder
30. oktober 2001 - 11:36 #56
det der er i det. er at jeg gerne vil have test boxen til at skifte ligesom ram boxene efter hvilken kategori der er valgt
Avatar billede smith Nybegynder
30. oktober 2001 - 11:37 #57
jeg har også prøvet
<select id=\"motherboard\" onChange=\"fillItem(this.value,\'RAM\');fillItem(this.value,\'SOUNDCARD\');fillItem(this.value,\'TEST\');\">

men den opdater ik test... den viser bare det samme konstant
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 11:41 #58
ja - men har du nogle varer i vare-tabellen med varetypen TEST ?
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 11:48 #59
linien  objCb.options[j++] = new Option(catDesc,-1.0); indsætter en linie i den valgte dropdown box med varetypen som tekst. Den kan du jo slette hvis ikke du vil ha den der...
Avatar billede smith Nybegynder
30. oktober 2001 - 12:08 #60
mange tak for hjælpen...har bare et lille bitte spørgsmål mere :)

Avatar billede tknudsen Nybegynder
30. oktober 2001 - 12:08 #61
shoot
Avatar billede smith Nybegynder
30. oktober 2001 - 12:12 #62
jeg vil gerne have dem til at stå neden under i hianden istedet for ved siden af hianden.
Og så vil gerne have det til at stå på denne måde:
Motherboard: (dropdownbox)
Ram: (dropdownbox)
osv
osv
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 12:13 #63
hvor længe har du været i lære som dm\'er ?
Avatar billede smith Nybegynder
30. oktober 2001 - 12:14 #64
2 år....har OVERHOVEDET ik makket med web programmering! kun c++
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 12:16 #65
siden jeg stort set har kodet det hele og ideen med eksperten (efter min mening) er at lære at gøre det selv, tillader jeg mig at referere til følgende:

\"Kommentar fra smith 
30/10 2001 08:37:50:

ja men kan ik rigtig få asp´en til at arbejde sammen med det !
Jeg sætter 100 point mere på hvis du lige kan hjælpe mig helt færdig :)\"

...

Motherboard: <select...>...</select><br>
Ram: <select...>...</select><br>
Kabinet: <select...>...</select>
Avatar billede smith Nybegynder
30. oktober 2001 - 12:18 #66
og.... hvor vil du hen med det ?
Avatar billede tknudsen Nybegynder
30. oktober 2001 - 12:22 #67
hvis du mener jeg har hjulpet dig \"helt færdig\" kan du oprette et spørgsmål til 100 point og give dem til mig...
Avatar billede smith Nybegynder
30. oktober 2001 - 12:42 #68
uhhh sorry det havde jeg ik \"set\" / glemt!
gør det lige med 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
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