Avatar billede peppino Nybegynder
29. juli 2002 - 22:52 Der er 6 kommentarer og
1 løsning

javascript i ASP loop

Hej

Hvordan får jeg en database til at virke i et javascript?
Det skal være med loop.
Den skal kunne virke til den her: http://www.jakoba.dk/eksperten/exp145986.html

/Peppino
Avatar billede peppino Nybegynder
29. juli 2002 - 23:17 #1
Skriv lige hvis det ikke kan lade sig gøre
Avatar billede eagleeye Praktikant
30. juli 2002 - 00:27 #2
Det kan laves men man skal havde tungen lige i munden... Jeg har lavet det eks du linker til. Jeg har være nød til at loop databse igenne to gange fro at først udskrive Amter og dernæst Resutranter.
Det er muligt det kan laves smatere men man skal jo havde bytte de forskellige array op..:


<%
set conn = server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db9.mdb")
%>
<html>
<head><title>Select menu vælger sekundær select menu.</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">

<script language="JavaScript"> <!--

var selbokse = new Array();


selbokse['land'] =
new Array( "- vælg amt -"

<%
strSQL = "SELECT * FROM amter WHERE landeID = 1"
set rs = conn.execute (strSQL)
do while not rs.eof
  Response.Write ", """ & rs("amtNavn") & """"
  rs.movenext
loop
%>
);

//selbokse['land'] =
//    new Array ( "- vælg Amt -",    "København", "Aarhus",      "Odense"    ), // Danmark


// forhvert madsted skal databasen generere en url og et navn

selbokse['madsted'] =
new Array(
<%
strSQL = "SELECT * FROM amter WHERE landeID = 1"
set rs = conn.execute (strSQL)
do while not rs.eof
%>
new Array ( "- vælg madsted -"
<%
  strSQL = "SELECT * FROM restaurant WHERE amtID = " & rs("id")
  set rsMad = conn.execute(strSQL)
  do while not rsMad.eof
    Response.Write ", """ & rsMad("restaurantnavn") & """"
    rsMad.movenext
  loop
  rs.Movenext
%>)<%
if NOT rs.EOF then response.write ","
loop
%>
);


//selbokse['madsted'] =
//    new Array(
//        new Array (    // selbokse['madsted'][0][0]  for Danmark,København.
//            "- vælg Restaurant -",
//            "www.restaurant-cassiopeia.dk/|Cassiopeia",
//            "www.dentatoveredeenke.dk/|Den Tatoverede Enke",
//            "www.egoisten.dk/|Egoisten",
//            "www.restaurant-kanalen.dk/|Kanalen",
//            "www.krogs.dk/|Krogs Fiskerestaurant"
//                  ),
//        new Array (    // selbokse['madsted'][0][1]  for Danmark,Aarhus.
//            "-1|- vælg Restaurant -",
//            "www.rold.dk/|Rold Storkro",
//            "www.spiseguiden.dk/luneborg/|Luneborg Kro",
//            "home10.inet.tele.dk/ihj/|Hotel Plesner Skagen",
//            "www.spiseguiden.dk/glvraaslot/|Gl. Vraa Slot",
//            "www.pandrupkro.dk/index.htm|Pandrup Kro"
//
//                  ),
//        new Array (    // selbokse['madsted'][0][2]  for Danmark,Odense.
//            "-1|- vælg Restaurant -",
//            "www.le-provence.dk/Le Provence",
//            "www.skaerven.dk/|skaerven",
//            "www.majorgaarden.com/|Majorgården"
//                  )
//            );

var offMenu = new Array( " \< - \< - \< - \< - \< -" ); // >

var sel;
var selo;

function setOption( idx, data ) {
  var tmp = data.split("|");
  if ( tmp.length == 1 ) { tmp[1]=tmp[0]; tmp[0]="" };
  if ( selo.length > idx ) {
      selo[idx].text = tmp[1];
      selo[idx].value = tmp[0];
  } else
      selo[idx] = new Option( tmp[1], tmp[0] );
}; //end setOption( number, string, string )

function setupMenu( selobj, menuarray ) {
//alert("menuarray type: " +typeof(menuarray) );
    sel  = selobj.selectedIndex;
    selo = selobj.options;
    for (var i=0; menuarray.length>i; i++ ) setOption( i, menuarray[i] );
    selobj.selectedIndex = 0;
    selobj.disabled = ( menuarray==offMenu )?true:false;
    selo.length = menuarray.length;
}; //end setupMenu( select object, array )

var idxLand = -1;  // intet land valgt

function setMenu ( frm, selNavn ) {
  if ( selNavn == "" ) {
      setupMenu( frm.land, selbokse['land'] );
      setupMenu( frm.madsted, offMenu );
      idxLand = -1;
  } else
  if ( selNavn == 'land' ) {
      idxLand = frm.land.selectedIndex-1;
      if ( idxLand >= 0 )
          setupMenu( frm.madsted, selbokse['madsted'][idxLand] );
      else
          setupMenu( frm.madsted, offMenu );
  } else
  if ( selNavn == 'madsted' && idxLand>=0 ) {
      var helurl = "http://" + frm.madsted.options[frm.madsted.selectedIndex].value;
      window.open( helurl, 'winduesnavn' );
  } else
      alert( "Slem programfejl. du bør aldrig se denne besked." );
}; //end setMenu ( radioKnap element )

// -->  </script>
 
</head>
<body  onload="setMenu( document.sfrm, '' )">

<p><form name="sfrm" action="dest_fil.asp" onsubmit="return pakResultat(this);">
<center><table border=0 cellspacing=10>
  <tr>
    <td valign='top'>
        <select name="land" width="200px" style="width:200px"
          onchange="setMenu(this.form, this.name);">
          <option value=1>- - - - - - - - - - - -</option>
          <option value=2> </option>
          <option value=3> </option> <!-- indsæt toppe options af hensyn til NS4.x -->
          <option value=4> </option>
          <option value=5> </option>
          <option value=6> </option>
          <option value=7> </option>
          <option value=8> </option>
          <option value=9> </option>
          <option value=10> </option>
        </select>
    </td>
    <td valign='top'>
        <select name="madsted" width="200px" style="width:200px"
          onfocus="if (0>idxLand) this.blur();"
          onchange="if (this.selectedIndex>0) setMenu(this.form, this.name);">
          <option value=1>- - - - - - - - - - - -</option>
          <option value=2> </option>
          <option value=3> </option>
          <option value=4> </option>
          <option value=5> </option>
          <option value=6> </option>
          <option value=7> </option>
          <option value=8> </option>
          <option value=9> </option>
          <option value=10> </option>
        </select>
    </td>
  </tr>
</table></center>
</form>
<p>Bemærk at datamængden stiger exponentielt. Her med blot 3 valgmuligheder i hver select skal der loades 3*3 = 9 restaurantlinier. Med 6 valg i hver gruppe bliver tallet 6*6 = 36 restaurantlinier.
<p>Det kan blive så mange linier der skal hentes at det går hurtigere at hente ny data fra serveren for hvert valg.
<p>Især hvis du laver <A HREF="exp145224.html">flere niveauer</A> af selectbokse.</p>

<p align='right'><!-- WebWriter AutoDato -->Opdateret: 3.1.2002<!-- WW -->
</body>
</html>
Avatar billede eagleeye Praktikant
05. august 2002 - 15:51 #3
var det noget?
Avatar billede mvk Nybegynder
09. maj 2003 - 09:26 #4
damn det ser vildt ud eagle...
Avatar billede wolfgang Praktikant
18. februar 2005 - 17:14 #5
Hej EagleEye,
Er det muligt at tilpasse dette kode, så jeg kan skrive mit ID fra databasen med i dropdownen (altså som value til optionen) ?
Avatar billede wolfgang Praktikant
18. februar 2005 - 17:15 #6
Her er min udgave af koden:

<script language="JavaScript">
<!--

var selbokse = new Array();

selbokse['Manufactorer'] =
new Array( "Find Producent"

<%
strSQL = "SELECT * FROM tbl_RManufacturers"
set rs = conn.execute (strSQL)
do while not rs.eof
  Response.Write ", """ & rs("Manufacturer") & """"
  rs.movenext
loop
%>
);

selbokse['Model'] =
new Array(
<%
strSQL = "SELECT * FROM tbl_RManufacturers"
set rs = conn.execute (strSQL)
do while not rs.eof
%>
new Array ("-> Find produkt"
<%
  strSQL = "SELECT * FROM tbl_RModels WHERE ManufactorerID = " & rs("ManufacturerID")
  set rsMad = conn.execute(strSQL)
  do while not rsMad.eof
    Response.Write ", """ & rsMad("Model") & """"
    rsMad.movenext
  loop
  rs.Movenext
%>)<%
if NOT rs.EOF then response.write ","
loop
%>
);


var offMenu = new Array( "Du skal vælge en producent" ); // >

var sel;
var selo;

function setOption( idx, data ) {
  var tmp = data.split("|");
  if ( tmp.length == 1 ) { tmp[1]=tmp[0]; tmp[0]="" };
  if ( selo.length > idx ) {
      selo[idx].text = tmp[1];
      selo[idx].value = tmp[0];
  } else
      selo[idx] = new Option( tmp[1], tmp[0] );
}; //end setOption( number, string, string )

function setupMenu( selobj, menuarray ) {
//alert("menuarray type: " +typeof(menuarray) );
    sel  = selobj.selectedIndex;
    selo = selobj.options;
    for (var i=0; menuarray.length>i; i++ ) setOption( i, menuarray[i] );
    selobj.selectedIndex = 0;
    selobj.disabled = ( menuarray==offMenu )?true:false;
    selo.length = menuarray.length;
}; //end setupMenu( select object, array )

var idxManufactorer = -1;  // intet Manufactorer valgt

function setMenu ( frm, selNavn ) {
  if ( selNavn == "" ) {
      setupMenu( frm.Manufactorer, selbokse['Manufactorer'] );
      setupMenu( frm.Model, offMenu );
      idxManufactorer = -1;
  } else
  if ( selNavn == 'Manufactorer' ) {
      idxManufactorer = frm.Manufactorer.selectedIndex-1;
      if ( idxManufactorer >= 0 )
          setupMenu( frm.Model, selbokse['Model'][idxManufactorer] );
      else
          setupMenu( frm.Model, offMenu );
  } else
  if ( selNavn == 'Model' && idxManufactorer>=0 ) {
      var helurl = "http://" + frm.Model.options[frm.Model.selectedIndex].value;
      window.open( helurl, 'winduesnavn' );
  } else
      alert( "Slem programfejl. du bør aldrig se denne besked." );
}; //end setMenu ( radioKnap element )

// --> 
</script>
Avatar billede wolfgang Praktikant
18. februar 2005 - 17:17 #7
Jeg skal nemlig "fange" de forskellige værdier og gemme dem i min DB Senere.
- Håber du vil hjælpe.

MVH
Wolfgang
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