Ik heb hier een script gemaakt waarbij ik informatie kan filteren tussen afdeling en subafdeling. Hij werkt goed, alleen wil er een dependable dropdown inbouwen maar weet niet hoe precies.
heb meerdere voorbeelden op internet gevonden, maar die konden mij niet helpen.
Hieronder mijn database indeling
afdeling
id
naam_afdeling
subafdeling
id
naam_subafdeling
afdeling_id
help_mij_zoeken.php
<?php
require_once('class/zoeken.php'); //haal class op
startDB(); //functie startDB
//sql query voor het zoeken van trainingen
$sql = "SELECT DISTINCT train.id,train.naam_training AS Training, train.beschrijving AS Beschrijving, type_train.type_plaatje AS Plaatje
FROM training train
JOIN training_afdeling train_afd
ON train_afd.training_id = train.id
JOIN afdeling afd
ON afd.id = train_afd.afdeling_id
JOIN training_subafdeling train_subafd
ON train_subafd.training_id = train.id
JOIN subafdeling subafd
ON subafd.id = train_subafd.subafdeling_id
JOIN training_type train_type
ON train_type.training_id = train.id
JOIN type_training type_train
ON type_train.id = train_type.type_id
";
if (isset($_GET['srch_for'])){
$getters = array();
$queries = array();
foreach($_GET as $key => $value) {
$temp = is_array($value) ? $value : trim($value);
if(!empty($temp)){
list($key) = explode("-",$key);
if (!in_array($key, $getters)){
$getters[$key] = $value;
}
}
}
if (!empty($getters)){
foreach($getters as $key => $value){
${$key} = $value;
switch($key){
case 'srch_for':
array_push($queries,"(train.naam_training LIKE '%$srch_for%' || train.beschrijving LIKE '%$srch_for%')"); //als de gezochte term overeenkomt met de waarde uit de database(alles)
break;
case 'zk_afdeling':
array_push($queries, "train_afd.afdeling_id = $zk_afdeling"); //als de gezochte term overeenkomt met de waarde uit de database(afdeling)
break;
case 'zk_subafdeling':
array_push($queries, "train_subafd.afdeling_id = $zk_subafdeling"); //als de gezochte term overeenkomt met de waarde uit de database(subafdeling)
break;
case 'zk_typ':
array_push($queries, "train_type.type_id = $zk_typ"); //als de gezochte term overeenkomt met de waarde uit de database(type)
break;
}
}
}
if (!empty($queries)) {
$sql .= " WHERE ";
$i=1;
foreach($queries as $query){
if ($i < count($queries)){
$sql .= $query." AND ";
} else {
$sql .= $query;
}
$i++;
}
}
$sql .= " ORDER BY train.naam_training ASC"; //einde query
}
$rs = mysql_query($sql) or die(mysql_error());
$rows = mysql_fetch_assoc($rs);
$tot_rows = mysql_num_rows($rs);
?>
<form id="msform" name="search_form" method="get" action="help_mij_zoeken_resultaat.php">
<div>
<table border="0" cellspacing="0" cellpadding="0" class="tbl_search">
<tr>
<td><input type="hidden" name="srch_for" id="srch_for" class="f_fld" value="<?php getSticky(1,'srch_for'); ?>"></td>
<th><label for="zk_afdeling">Afdeling:</table>
<?php getAfdeling(); ?><br>
</div>
<div>
<label for="zk_subafdeling">Subafdeling:</th>
<?php getSubafdeling(); ?>
</div>
<input type="submit" id="btn" class="next action-button2" value="Zoeken" />
</fieldset>
<!-- einde pagina selecteer type training -->
</form>
<?php mysql_free_result($rs); ?>
zoeken.php
<?php
require_once 'class/Singleton.php';
function startDB(){
$connect = Singleton::getconnect();
}
function getAfdeling() {
global $database;
global $conndb;
$sql = "SELECT * FROM afdeling ORDER BY naam_afdeling ASC";
mysql_select_db($database);
$rs = mysql_query($sql) or die(mysql_error());
$rows = mysql_fetch_assoc($rs);
$total_rows = mysql_num_rows($rs);
if($total_rows > 0){
echo "<select name=\"zk_afdeling\" id=\"zk_afdeling\">\n";
echo "<option value=\"\">Elke afdeling…</option>\n";
do {
echo "<option value=\"".$rows['id']."\"";
getSticky(2, 'zk_afdeling',$rows['id']);
echo ">".$rows['naam_afdeling']."</optio>";
} while($rows = mysql_fetch_assoc($rs));
echo "</select>";
}
mysql_free_result($rs);
}
function getSubafdeling() {
global $database;
global $conndb;
$sql = "SELECT * FROM subafdeling ORDER BY naam_subafdeling ASC";
mysql_select_db($database);
$rs = mysql_query($sql) or die(mysql_error());
$rows = mysql_fetch_assoc($rs);
$total_rows = mysql_num_rows($rs);
if($total_rows > 0){
echo "<select name=\"zk_subafdeling\" id=\"zk_subafdeling\">\n";
echo "<option value=\"\">Elke subafdeling…</option>\n";
do {
echo "<option value=\"".$rows['id']."\"";
getSticky(2, 'zk_subafdeling',$rows['id']);
echo ">".$rows['naam_subafdeling']."</optio>";
} while($rows = mysql_fetch_assoc($rs));
echo "</select>";
}
mysql_free_result($rs);
}
function getSticky($case,$par,$value="",$initial=""){
switch($case) {
case 1: //text field
if (isset($_GET[$par]) && $_GET[$par] !=""){
echo stripslashes($_GET[$par]);
}
break;
case 2: //select dropdown menus
if (isset($_GET[$par]) && $_GET[$par] == $value){
echo " selected=\"selected\"";
}
break;
case 3: //checkbox group
if (isset($_GET[$par]) && $_GET[$par] !=""){
echo " checked=\"checked\"";
}
case 4: //radio buttons
if (isset($_GET[$par]) && $_GET[$par] == $value){
echo " checked=\"checked\"";
} else {
if ($initial !=""){
echo " checked=\"checked\"";
}
}
break;
}
}
?>