Avatar billede jkn83 Praktikant
27. april 2010 - 20:16 Der er 7 kommentarer og
1 løsning

Dynamisk 3-delt dropdown liste

Har fundet nogle guides på nettet og arbejdet lidt med dem som er nået frem til dette... Kan ikke mindes om de er blandet sammen eller hvordan, men koden her fungerer som 2 dropdown lister...

Problemmet er jeg skal bruge 3, som bestemmes alt efter den første...

Eks... Liste 1 vælger man imellem frugt eller drikkelse. Hvis du vælger frugt, bliver den nye dropdown liste populated efter valget i den første, som så passer der til. Eksempelvis æbler, pærer, bananaer... Når man så vælger eksempelvis æbler, skal en 3 menu komme som så kan være grønne eller røde æbler, osv...

skal bruge 4 af den slags. 3 kan gå, men det bliver lidt trængt :D

Så kommer den del jeg har ledt efter et stykke tid. Vil gerne have at man så kan sende sit valg til en mail. Altså så teksten kommer i mailen med eksempelvis: frugt, æble, grønt.

Nogen der har mulighed for at hjælpe her?

Koden:

<SCRIPT language=JavaScript>
function reload(form)
{
// Setting the variable with the value of selected country's ID
var val=populate.countryList.options[populate.countryList.options.selectedIndex].value;

// Sending the country id in the query string to retrieve the city list
self.location='dynamic-menu.php?countryId=' + val ;
}
</script>

<?php

/*
- Function to return the Country list as an array
- The array can be generated from a database resultset
*/
function getCountryList()
{
  // Country List array
  $countryList    = array (
                          '1' => 'Bangladesh',
                          '2' => 'USA',
                          '3' => 'UK'
                          );
 
  return $countryList;
}

/*
- Function to return the City list as an array
- Country ID is used to generate the city list
*/
function getCityList($countryId)
{
  // City list array
  // First key of the array is the Country ID, which holds an array of City list
  $cityList      = array (
                          '1' => array ('Dhaka', 'Chittagong', 'What else'),
                          '3' => array ('London', 'Cannot Remember'),
                          '2' => array ('Washington', 'N.Y.', 'etc')
                          );
 
  return $cityList[$countryId];
}
?>

<form action="dynamic-menu.php" name="populate">

<?
// Retrieving the country list
$countryList  = getCountryList();

// Setting the variable if the country is selected for its city list
@$countryId  = $_GET['countryId'];

// Retrieving the city list if a country is selected
$cityList  = ($countryId) ? getCityList($countryId) : null;

if (!empty($countryList))
{
  // Generating the country drop down menu
  echo "<select onChange='reload(this.form)' name='countryList'>";
  foreach ($countryList as $key => $value)
  {
    echo "<option value='$key'";
   
    if ($countryId == $key)
      echo "selected";
   
    echo ">$value</option>";
  }
  echo "</select>";
}

if (!empty($cityList))
{
  // Generating the city drop down menu if a country is selected
  echo "<select name='cityList'>";
  foreach ($cityList as $key => $value)
  {
    echo "<option value='$key'>$value</option>";
  }
  echo "</select>";
}

?>
</form>
Avatar billede zips Juniormester
27. april 2010 - 21:38 #1
Jeg kan ikke rette det du har, men jeg bruges selv dette script
http://javascript.about.com/library/bl3drop1.htm til at lave de 3 dropdown
Avatar billede jarner Nybegynder
28. april 2010 - 14:10 #2
Følgende eksempel viser hvordan du fx. kan gøre det ved bare at ændre synligheden af hver boks, hvis du altså når siden loades ind på forhånd har defineret valgmulighederne i hver boks.  Det kan være det virker nemmere for dig. Ellers skal du reloade siden når du skifter indholdet eller lave noget AJAX. Og der kan man jo lege med alle de variable man vil.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test drop down</title>
<script type="text/javascript" language="javascript">
function showstuff(boxid){
  document.getElementById(boxid).style.visibility="visible";
}

function hidestuff(boxid){
  document.getElementById(boxid).style.visibility="hidden";
}
</script>
</head>
<body>
<select name="list1" onchange="if(this.options[this.selectedIndex].id >0){showstuff('boks'+this.options[this.selectedIndex].id)}else{hidestuff('boks'+this.options[this.selectedIndex].id)};">
        <option id ="0">-</option>
        <option id ="1">vis 1</option>
        <option id ="2">vis 2</option>
    </select>
<div id="boks1" style="visibility:hidden;">
    <select name="list1" onchange="if(this.options[this.selectedIndex].id >0){showstuff('boks'+this.options[this.selectedIndex].id)}else{hidestuff('boks'+this.options[this.selectedIndex].id)};">
        <option id ="0">-</option>
        <option id ="3">vis 3</option>
        <option id ="2">vis 2</option>
    </select>
</div>
<div id="boks2" style="visibility:hidden;">
    <select name="list1" onchange="if(this.options[this.selectedIndex].id >0){showstuff('boks'+this.options[this.selectedIndex].id)}else{hidestuff('boks'+this.options[this.selectedIndex].id)};">
        <option id ="0">-</option>
        <option id ="3">vis 3</option>
        <option id ="2">vis 2</option>
    </select>
</div>
<div id="boks3" style="visibility:hidden;">
test3
</div>
</body>
</html>
Avatar billede jkn83 Praktikant
28. april 2010 - 17:17 #3
sidder og leger lidt med dit forslag jarner, men mangler jo så stadig en måde at få de valgte ting samlet, og sendt til en given mail ved at trykke på en send knap...

muligt?
Avatar billede jarner Nybegynder
28. april 2010 - 17:27 #4
Ja, meget.
Se fx. http://www.w3schools.com/PHP/php_mail.asp

Den valgte værdi fra en selectboks får du ud fra navnet, jf. link på formen $_REQUEST['list1'] osv eller med POST eller GET hvis du sætter en type på formen.
Avatar billede jkn83 Praktikant
28. april 2010 - 17:34 #5
Forsøger lige med det og vender tilbage
Avatar billede jkn83 Praktikant
04. maj 2010 - 18:41 #6
Hoppede til en helt tredje løsning som ikke lige ligger i denne kategori, men fik din løsning til at virke jarner, så smid du bare et svar.
Avatar billede jarner Nybegynder
04. maj 2010 - 18:57 #7
svar
Del gerne løsningen med os alle hvis den egner sig til det :)
Avatar billede jkn83 Praktikant
04. maj 2010 - 19:20 #8
Det var ikke en dynamisk dropdown jeg valgte at bruge, hvilket er grunden til at koden ikke kommer op... Kan være misvisende :)
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