dynamisch select veld

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ultimatia
  • Registratie: November 2007
  • Laatst online: 22-06 22:00
Hallo, ik ben bezig met een dynamisch select veld. Aan de hand van de waarde die gekozen wordt in het eerste selectieveld moet het tweede selectie veld gevuld worden.

Nu heb ik het volgende php code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<select name="kasmerk_id">
<?php
$query="select * from kasmerk";
echo $query;
$result = mysql_query($query)or die("Fout!!");
while($rij=mysql_fetch_array($result)){
    ?>
   <option onclick="submit()" value="<?php echo $rij["naam"]; ?>"><?php echo $rij["naam"];?>

    <?php
}
?>
</select>


<select name="kas" onchange="submit()">
<?php
$query="select * from kas WHERE kasmerk_id = ".$_POST["kasmerk_id"];
$result = mysql_query($query)or die('Invalid query: ' . mysql_error());
while($rij=mysql_fetch_array($result)){
echo("<option value=\"".$rij["naam"]."\">".$rij["naam"]."</option>");
}
?>
</select>


De tweede keuzelijst wordt niet ingevuld. Ik denk dat het maar een heel klein dingetje is, maar zelf kom ik er niet helemaal uit.

Mvg,

Acties:
  • 0 Henk 'm!

  • spone
  • Registratie: Mei 2002
  • Niet online
Is het de bedoeling dat wanneer je ergens op klikt, de complete pagina gesubmit wordt (option onclick=submit)?

Dat kan je sowieso beter oplossen door aan de gebruikte select een onChange te hangen, en daar iets te gaan doen.

Nu wordt namelijk nadat je een keuze in de eerste pagina maakt de volledige pagina herladen, en daar gaat je keuze. Misschien is iets als dit handiger (heel basic, maar het gaat om het idee):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$step = $_GET['step'];
if ($step == null) $step = 1;
switch ($step){
   case "1":
      echo "<form method=get action='ditscript.php?step=2'>";
      echo "<select name=kasmerkid onChange='this.form.submit();'">";
      // hier komt code om de kasmerk(?) uit de db te halen en de options te maken, zonder onclick :)
      echo "</select>";
      echo "</form>";
      break;
   case "2":
      $kasmerk = $_GET['kasmerkid'];
      echo "<form method=get action='ditscript.php?step=3'>";
      echo "<select onChange='this.form.submit();'">";
      // hier komt code om de kas(?) uit de db te halen en de options te maken, zonder onclick :)
      echo "</select>";
      echo "</form>";
      break;
   default:
      echo "Ongeldige stap.";
      break;
}

[ Voor 69% gewijzigd door spone op 28-12-2009 13:56 ]

i5-14600K | 32GB DDR5-6000 | RTX 5070 - MacBook Pro M1 Pro 14" 16/512


Acties:
  • 0 Henk 'm!

  • ultimatia
  • Registratie: November 2007
  • Laatst online: 22-06 22:00
Het is de bedoeling dat wanneer de gebruiker in de eerste keuzelijst een keuze heeft gemaakt, de tweede keuzelijst automatisch wordt gevuld met de waarden uit de database die bij deze keuze horen.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik zou een tweedimensionele array maken in php, ongeveer als volgt:
PHP:
1
2
3
4
5
6
$options = array(
 'optie1' => null,
 'optie2' => array('suboptie1', 'suboptie2'),
 'optie3' => array('suboptie3', 'suboptie4', 'suboptie5'),
 'optie4' => null
);
Hiermee (of iets soortgelijks) kan je door de bovenste array lopen en (in php) je eerste select populeren adhv de gegevens. Je encode het geheel als JSON en met javascript doe je clientside die verandering (veel efficienter en gebruiksvriendelijker).

Uiteraard na een submit even controleren of $suboptie ook echt in $optie voorkomt :)

[ Voor 5% gewijzigd door mithras op 28-12-2009 13:53 ]


Acties:
  • 0 Henk 'm!

  • ultimatia
  • Registratie: November 2007
  • Laatst online: 22-06 22:00
Hartelijk bedankt, ik heb het mijn script in het script van spone geplaats tot het volgende:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    <?php 
$step = $_GET['step']; 
if ($step == null) $step = 1; 
switch ($step){ 
   case "1": 
      echo "<form method=get action='form.php?step=2'>"; 
      echo "<select name=kasmerkid onChange='this.form.submit();'>"; 
      
      // hier komt code om de kasmerk(?) uit de db te halen en de options te maken, zonder onclick :) 
      $query="select * from kasmerk";
echo $query;
$result = mysql_query($query)or die("Fout!!");
while($rij=mysql_fetch_array($result)){
    ?>
   <option value="<?php echo $rij["naam"]; ?>"><?php echo $rij["naam"];?>

    <?php
}
         
      echo "</select>"; 
      echo "</form>"; 
      break; 
   case "2": 
      $kasmerk = $_GET['kasmerkid']; 
      echo "<form method=get action='form.php?step=3'>"; 
      echo "<select onChange='this.form.submit();'>"; 
      
      
      // hier komt code om de kas(?) uit de db te halen en de options te maken, zonder onclick :) 
      $query="select * from kas WHERE kasmerk_id =$kasmerk"; 
$result = mysql_query($query)or die('Invalid query: ' . mysql_error());
while($rij=mysql_fetch_array($result)){
echo("<option value=\"".$rij["naam"]."\">".$rij["naam"]."</option>");
}     
      echo "</select>"; 
      echo "</form>"; 
      break; 
   default: 
      echo "Ongeldige stap."; 
      break; 
} 
?>


Alleen er gebeurt nog niet zo veel. Ik krijg nu alleen het eerste invoervak te zien.