Avatar billede el_morten Nybegynder
04. december 2003 - 20:03 Der er 1 kommentar og
1 løsning

Dropdown box der opdaterer anden dropdown box

Hej x-perter
Jeg er igang med et system hvor jeg skal vælge noget fra én dropdown, der så skal opdatere en dropdownbox nr. 2.
Jeg bruger det her eksempel:
http://www.efusion.it/exp/302058.php
http://www.efusion.it/exp/302058.phps

fra denne tråd http://www.eksperten.dk/spm/379901

Jeg har en database med to tabeller:

mainsites
    - mainsitesid (primary)
    - mainsitesname


subsites
  - subsitesid (primary)
  - subsitesname
  - mainsitesid
 
Jeg har så skiftet de forskellige steder ud med mine data så dataerne ser således ud:

<?php

mysql_connect("xxxx","xxxx","xxx");
mysql_select_db("xxxx");

$result_amter = mysql_query("SELECT * FROM mainsites ORDER BY mainsitesname");
while ($row_amt = mysql_fetch_array($result_amter)) {
  $print_amt_list .= "<option value=\"" . $row_amt["subsitesid"] . "\">" . $row_amt["mainsiteid"] . "</option>\n";
  $print_js .= "kommuner[" . $row_amt["mainsiteid"]  . "] = new Array (";
  $i = 0;
  $result_kommuner = mysql_query("SELECT * FROM subsites WHERE mainsitesid = " . $row_amt["mainsitesid"] . " ORDER BY subsitesname");
  while ($row_kom = mysql_fetch_array($result_kommuner)) {
    if ($i == 0) {
      $print_js .= "'0#Vælg kommune','" . $row_kom["subsitesid"] . "#" . $row_kom["subsitesname"] . "'";
    } else {
      $print_js .= ",'" . $row_kom["subsitesid"] . "#" . $row_kom["subsitesname"] . "'";
    }
    $i++;
  }
  $print_js .= ")\n";
}
echo $result_amter;
echo $result_kommuner;
echo $$row_amt;

?>

<html>
<head>
<script language"JavaScript">
<!--

var kommuner = new Array()
kommuner[0] = new Array ('0#Vælg først et amt')
<?= $print_js ?>

function getKommuner() {
  var frm = document.formular;
  var amt_id = frm.list_amt.value;
  var i;
  frm.list_kom.options.length = 0;
  for (i = 0; i < kommuner[amt_id].length; i++) {
    arr_split = kommuner[amt_id][i].split("#");
    var no = new Option();
    no.value = arr_split[0];
    no.text = arr_split[1];
    frm.list_kom[i] = no;
  }
}

//-->
</script>
</head>

<body>
<form name="formular">

<select name="list_amt" style="width:150" onchange="getKommuner()">
<option value="0">Vælg amt</option>
<?= $print_amt_list ?>
</select>

<select name="list_kom" style="width:150">
<option>Vælg først et amt</option>
</select>

<input type="button" onclick="alert(document.formular.list_kom.value)" value="Hent value for valgt kommune" />

</form>
</body>
</html>


Mit problem: Den viser dropdownboxene, men uden data i nogen af dem. (og der ER forbindelse til databasen)
Nogen der vil hjælpe med at finde fejlen? :)
Avatar billede el_morten Nybegynder
04. december 2003 - 20:05 #1
....
echo $result_amter;
echo $result_kommuner;
echo $$row_amt;

Var noget jeg satte ind for at se et output. resultat:
Resource id #3Resource id #4
Avatar billede el_morten Nybegynder
05. december 2003 - 10:10 #2
Fandt ud af det:

<?php

include_once("db_connect.php");

$query="SELECT * FROM mainsites";
    $db = new database('mysql');
    $result_mainsites=$db->query($query,"rows");
   
//$result_amter = mysql_query("SELECT * FROM mainsites");

while ($row_main = mysql_fetch_array($result_mainsites, MYSQL_ASSOC)) {
  $print_main_list .= "<option value=\"" . $row_main["mainsitesid"] . "\">" . $row_main["mainsitesname"] . "</option>\n";
  $print_js .= "kommuner[" . $row_main["mainsitesid"]  . "] = new Array (";
  $i = 0;

$query="SELECT * FROM subsites WHERE mainsitesid = " . $row_main["mainsitesid"] . ""; //Der skal være . efter ["mainsiteid"]
    $db = new database('mysql');
    $result_subsites=$db->query($query,"rows");
   
//  $result_kommuner = mysql_query("SELECT * FROM subsites WHERE mainsitesid = " . $row_amt["mainsitesid"] . " ORDER BY subsitesname");

while ($row_sub = mysql_fetch_array($result_subsites, MYSQL_ASSOC)) {
    if ($i == 0) {
      $print_js .= "'0#Vælg underside','" . $row_sub["subsitesid"] . "#" . $row_sub["subsitesname"] . "'";
    } else {
      $print_js .= ",'" . $row_sub["subsitesid"] . "#" . $row_sub["subsitesname"] . "'";
    }
    $i++;
  }
  $print_js .= ")\n";
}

?>

<html>
<head>
<script language"JavaScript">
<!--

var kommuner = new Array()
kommuner[0] = new Array ('0#Vælg først et amt')
<?= $print_js ?>

function getKommuner() {
  var frm = document.formular;
  var amt_id = frm.list_amt.value;
  var i;
  frm.list_kom.options.length = 0;
  for (i = 0; i < kommuner[amt_id].length; i++) {
    arr_split = kommuner[amt_id][i].split("#");
    var no = new Option();
    no.value = arr_split[0];
    no.text = arr_split[1];
    frm.list_kom[i] = no;
  }
}

//-->
</script>
</head>

<body>
<form name="formular">

<select name="list_amt" style="width:200" onchange="getKommuner()">
<option value="0">Vælg hovedside</option>
<?= $print_main_list ?>
</select>

<select name="list_kom" style="width:200">
<option>Vælg først en hovedside</option>
</select>

<input type="button" onclick="alert(document.formular.list_kom.value)" value="Ret i side" />

</form>
</body>
</html>
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