Ik heb op internet een voorbeeld gevonden van een chained select.
Deze werkt bijna zoals ik het zou willen hebben.

Ik heb 3 velden in mijn database (categorie, keuze2, prijsklasse).
Stel ik heb de volgende gegevens in mijn database staan (id even daarbuiten gelaten)
Categorie keuze2 prijsklasse
keuken klassiek 5000
keuken klassiek 15000
sanitair modern 1000
sanitair klassiek 1000

Nu kies ik in de chained select voor keuken, klassiek en krijg ik vervolgens in de laatste pull-down de prijsklasse terug.
Helaas geeft deze ook 1000 weer, omdat ik in de 2e pull-down box gekozen heb voor klassiek.
Eigenlijk wil ik dus dat er wordt gekeken naar de combinatie categorie + keuze2 en dat dan de prijsklasse getoond wordt.
Ik wil dus in de laatste pull-down de volgende waardes zien: 5000 en 15000

Wat moet ik aanpassen aan onderstaande code zodat dit gaat werken ?

Oh ja, de code zal vast beter kunnen, maar dit was het beste wat ik kon vinden op internet wat een beetje werkte.

<?php
//**************************************
// Page load dropdown results //
//**************************************
function getCategorie()
{
$result = mysql_query("SELECT DISTINCT categorie FROM showroom")
or die(mysql_error());

while($tier = mysql_fetch_array( $result ))

{
echo '<option value="'.$tier['categorie'].'">'.$tier['categorie'].'</option>';
}

}

//**************************************
// First selection results //
//**************************************
if (isset($_GET['func'])&& $_GET['func'] == "drop_1" ) {
drop_1($_GET['drop_var']);
$_SESSION['drop_1'] = $_GET['drop_var'];
}
//if($_GET['func'] == "drop_1" && isset($_GET['func'])) {
// drop_1($_GET['drop_var']);
//}

function drop_1($drop_var)
{
include_once('db.php');
$result = mysql_query("SELECT DISTINCT keuze2 FROM showroom WHERE categorie='$drop_var'")
or die(mysql_error());

echo '<select name="drop_2" id="drop_2">
<option value=" " disabled="disabled" selected="selected">Kies uw type</option>';

while($drop_2 = mysql_fetch_array( $result ))
{
echo '<option value="'.$drop_2['keuze2'].'">'.$drop_2['keuze2'].'</option>';
}

echo '</select>';
echo "<script type=\"text/javascript\">
$('#wait_2').hide();
$('#drop_2').change(function(){
$('#wait_2').show();
$('#result_2').hide();
$.get(\"func.php\", {
func: \"drop_2\",
drop_var: $('#drop_2').val()
}, function(response){
$('#result_2').fadeOut();
setTimeout(\"finishAjax_prijsklasse('result_2', '\"+escape(response)+\"')\", 400);
});
return false;
});
</script>";
}


//**************************************
// Second selection results //
//**************************************
if (isset($_GET['func'])&& $_GET['func'] == "drop_2" ) {
drop_2($_GET['drop_var']);
$_SESSION['drop_2'] = $_GET['drop_var'];
}
//if($_GET['func'] == "drop_2" && isset($_GET['func'])) {
// drop_2($_GET['drop_var']);
//}

function drop_2($drop_var)
{
include_once('db.php');
$result = mysql_query("SELECT DISTINCT prijsklasse FROM showroom WHERE keuze2='$drop_var' ORDER BY prijsklasse ASC")
or die(mysql_error());

echo '<select name="drop_3" id="drop_3">
<option value=" " disabled="disabled" selected="selected">Kies uw prijsklasse</option>';

while($drop_3 = mysql_fetch_array( $result ))
{
echo '<option value="'.$drop_3['prijsklasse'].'">'.$drop_3['prijsklasse'].'</option>';
}

echo '</select> ';
echo '<input type="submit" name="submit" value="Submit" />';
}
?>


Volgens mij moet ik iets doen met de sessie, maar ik kom er niet uit.

Als ik het volgende gebruik, dan werkt het nog niet en krijg ik een fout over undefiend session.
<?php $result = mysql_query("SELECT DISTINCT prijsklasse FROM showroom WHERE keuze2='$drop_var' AND categorie='". $_SESSION['drop_1']."' ORDER BY prijsklasse ASC")
?>
Wie kan me helpen ?
Je zult in je 2e query de WHERE moeten uitbreiden met AND, zodat je 2 criteria hebt in je query.
Ik heb al wat zitten proberen, maar krijg telkens een foutmelding terug in de vorm van Undefined variable: _SESSION .....

Waar zou ik welke code moeten toevoegen om dit toch voor elkaar te krijgen ?
Dat ligt eraan wat je huidige code is.
Mijn exacte code is de volgende:

<?php
//**************************************
// Page load dropdown results //
//**************************************
function getCategorie()
{
$result = mysql_query("SELECT DISTINCT categorie FROM showroom")
or die(mysql_error());

while($tier = mysql_fetch_array( $result ))

{
echo '<option value="'.$tier['categorie'].'">'.$tier['categorie'].'</option>';
}

}

//**************************************
// First selection results //
//**************************************
if (isset($_GET['func'])&& $_GET['func'] == "drop_1" ) {
drop_1($_GET['drop_var']);
$_SESSION['drop_1'] = $_GET['drop_var'];
}
//if($_GET['func'] == "drop_1" && isset($_GET['func'])) {
// drop_1($_GET['drop_var']);
//}

function drop_1($drop_var)
{
include_once('db.php');
$result = mysql_query("SELECT DISTINCT keuze2 FROM showroom WHERE categorie='$drop_var'")
or die(mysql_error());

echo '<select name="drop_2" id="drop_2">
<option value=" " disabled="disabled" selected="selected">Kies uw type</option>';

while($drop_2 = mysql_fetch_array( $result ))
{
echo '<option value="'.$drop_2['keuze2'].'">'.$drop_2['keuze2'].'</option>';
}

echo '</select>';
echo "<script type=\"text/javascript\">
$('#wait_2').hide();
$('#drop_2').change(function(){
$('#wait_2').show();
$('#result_2').hide();
$.get(\"func.php\", {
func: \"drop_2\",
drop_var: $('#drop_2').val()
}, function(response){
$('#result_2').fadeOut();
setTimeout(\"finishAjax_prijsklasse('result_2', '\"+escape(response)+\"')\", 400);
});
return false;
});
</script>";
}


//**************************************
// Second selection results //
//**************************************
if (isset($_GET['func'])&& $_GET['func'] == "drop_2" ) {
drop_2($_GET['drop_var']);
$_SESSION['drop_2'] = $_GET['drop_var'];
}
//if($_GET['func'] == "drop_2" && isset($_GET['func'])) {
// drop_2($_GET['drop_var']);
//}

function drop_2($drop_var)
{
include_once('db.php');
$result = mysql_query("SELECT DISTINCT prijsklasse FROM showroom WHERE keuze2='$drop_var' AND categorie='". $_SESSION['drop_1']."' ORDER BY prijsklasse ASC") or die(mysql_error());

echo '<select name="drop_3" id="drop_3">
<option value=" " disabled="disabled" selected="selected">Kies uw prijsklasse</option>';

while($drop_3 = mysql_fetch_array( $result ))
{
echo '<option value="'.$drop_3['prijsklasse'].'">'.$drop_3['prijsklasse'].'</option>';
}

echo '</select> ';
echo '<input type="submit" name="submit" value="Submit" />';
}
?>

Ik heb nu $_SESSION['drop_1'] toegevoegd en mijn dropdown lijsten 1 en 2 werken, maar bij het tonen van de 3e krijg ik de volgende foutmelding:
Notice: Undefined variable: _SESSION in func.php on line 79 (dat is dus met die sessie)
Waar gaat het nu mis ?
Obelix en Idefix,

Heel raar, want ik had sie session_start() al eens bovenaan de pagina gezet.
Dit gaf exact hetzelfde resultaat, dus heb ik die weer weggehaald.
Nu zet ik deze er weer bij en werkt het. Geen idee wat ik dan hiervoor fout deed, maar nu werkt het wel.

Reageren