?
Onbekende gebruiker
29-07-2015 09:29
Verbeterde / leesbaardere code met radio buttons;
<?php if ($current_merk):?>
<div class="label">Merk</div>
<div class="clear"><?= $current_merk; ?><input type="hidden" name="merk" id="merk_x" value="<?= $current_merk; ?>"/>
<input type="submit" value="" onclick="document.getElementById(\'merk_x\').value = \'\';" class="remove-filter"/>
</div>
<?php endif; ?>
<?php if (false == $current_merk): ?>
<div class="label">Merk</div>
<div class="filter-box merk">
<?php
$result = $wpdb->get_col("SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = 'autodata_merk' GROUP BY meta_value ORDER BY meta_value ASC");
$imerk = 0;
foreach ($result as $item):?>
<label for="merk_<?= $imerk; ?>">
<input type="radio" name="merk" id="merk_<?=$imerk; ?>"
value="<?= $item; ?>" onchange="this.form.submit()" />
<?= $item; ?>
</label>
<?php $imerk++; endforeach; ?>
</div>
<?php endif; ?>
Code voor dropdown;
<?php if ($current_merk):?>
<div class="label">Merk</div>
<div class="clear"><?= $current_merk; ?><input type="hidden" name="merk" id="merk_x" value="<?= $current_merk; ?>"/>
<input type="submit" value="" onclick="document.getElementById(\'merk_x\').value = \'\';" class="remove-filter"/>
</div>
<?php endif; ?>
<?php if (false == $current_merk): ?>
<div class="label">Merk</div>
<div class="filter-box merk">
<?php
$result = $wpdb->get_col("SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = 'autodata_merk' GROUP BY meta_value ORDER BY meta_value ASC");
$imerk = 0;?>
<select name="merk">
<?php foreach ($result as $item):?>
<option value="<?= $item; ?>" onchange="this.form.submit()" id="merk_<?=$imerk; ?>"><?= $item; ?></option>
<?php $imerk++; endforeach; ?>
</select>
</div>
<?php endif; ?>
Link gekopieerd
F
Fedde Ekart
29-07-2015 09:48
gewijzigd op 29-07-2015 09:51
Dag Rickert,
Bedankt voor je snelle reactie. Helaas als ik bovenstaande code invoer dan botst het met de rest van de codes. Misschien is het wat duidelijker als je de rest van de php file ziet.
<?php
/**
* Template Name: Occasions
*
* Displays the Contact Page Template of the theme.
*
* @package ThemeGrill
* @subpackage Ample Pro
* @since Ample 1.0
*/
?>
<?php get_header(); ?>
<?php putRevSlider( "home" ) ?>
<div class="red-stripe"></div>
<div id="main" class="container">
<div class="wrapper wrapper-border">
<div id="content">
<div id="occasion-result-container">
<div class="occasion-filter">
<span class="occasionstitel"><h2>Occasions</h2></span>
<form method="get" action="/occasions/">
<?php
$current_merk = (isset($_GET['merk'])?$_GET['merk']:false);
$current_model = (isset($_GET['model'])?$_GET['model']:false);
$current_brandstof = (isset($_GET['brandstof'])?$_GET['brandstof']:false);
$current_transmissie = (isset($_GET['transmissie'])?$_GET['transmissie']:false);
$current_carrosseriesoort = (isset($_GET['carrosseriesoort'])?$_GET['carrosseriesoort']:false);
$current_prijs = (isset($_GET['prijs'])?$_GET['prijs']:false);
$current_kilometerstand = (isset($_GET['kilometerstand'])?$_GET['kilometerstand']:false);
$current_kleur = (isset($_GET['kleur'])?$_GET['kleur']:false);
$current_bouwjaar = (isset($_GET['bouwjaar'])?$_GET['bouwjaar']:false);
if($current_merk){
echo '<div class="label">Merk</div>';
echo '<div class="clear">'.$current_merk.'<input type="hidden" name="merk" id="merk_x" value="'.$current_merk.'" /><input type="submit" value="" onclick="document.getElementById(\'merk_x\').value = \'\';" class="remove-filter" /></div>';
}
if($current_model){
echo '<div class="label">Model</div>';
echo '<div class="clear">'.$current_model.'<input type="hidden" name="model" id="model_x" value="'.$current_model.'" /><input type="submit" value="" onclick="document.getElementById(\'model_x\').value = \'\';" class="remove-filter" /></div>';
}
if($current_brandstof){
switch($current_brandstof){
case 'B' : $current_brandstof_name = 'Benzine'; break;
case 'D' : $current_brandstof_name = 'Diesel'; break;
case '3' : $current_brandstof_name = 'LPG-G3'; break;
default : $current_brandstof_name = 'Anders'; break;
}
echo '<div class="label">Brandstof</div>';
echo '<div class="clear">'.$current_brandstof_name.'<input type="hidden" name="brandstof" id="brandstof_x" value="'.$current_brandstof.'" /><input type="submit" value="" onclick="document.getElementById(\'brandstof_x\').value = \'\';" class="remove-filter" /></div>';
}
if($current_transmissie){
switch($current_transmissie){
case 'A' : $current_transmissie_name = 'Automaat'; break;
case 'H' : $current_transmissie_name = 'Handgeschakeld'; break;
default : $current_transmissie_name = 'Anders'; break;
}
echo '<div class="label">Transmissie</div>';
echo '<div class="clear">'.$current_transmissie_name.'<input type="hidden" name="transmissie" id="transmissie_x" value="'.$current_transmissie.'" /><input type="submit" value="" onclick="document.getElementById(\'transmissie_x\').value = \'\';" class="remove-filter" /></div>';
}
if($current_carrosseriesoort){
echo '<div class="label">Carrosseriesoort</div>';
echo '<div class="clear">'.$current_carrosseriesoort.'<input type="hidden" name="carrosseriesoort" id="carrosseriesoort_x" value="'.$current_carrosseriesoort.'" /><input type="submit" value="" onclick="document.getElementById(\'carrosseriesoort_x\').value = \'\';" class="remove-filter" /></div>';
}
if($current_prijs){
switch($current_prijs){
case '0-5000' : $current_prijs_name = '0 - 5.000'; break;
case '5000-10000' : $current_prijs_name = '5.000 - 10.000'; break;
case '10000-15000' : $current_prijs_name = '10.000 - 15.000'; break;
case '15000-20000' : $current_prijs_name = '15.000 - 20.000'; break;
case '20000-25000' : $current_prijs_name = '20.000 - 25.000'; break;
case '25000-30000' : $current_prijs_name = '25.000 - 30.000'; break;
case '30000-35000' : $current_prijs_name = '30.000 - 35.000'; break;
case '35000-40000' : $current_prijs_name = '35.000 - 40.000'; break;
case '40000-1000000' : $current_prijs_name = '40.000 en meer'; break;
}
echo '<div class="label">Prijs</div>';
echo '<div class="clear">€ '.$current_prijs_name.'<input type="hidden" name="prijs" id="prijs_x" value="'.$current_prijs.'" /><input type="submit" value="" onclick="document.getElementById(\'prijs_x\').value = \'\';" class="remove-filter" /></div>';
}
if($current_kilometerstand){
switch($current_kilometerstand){
case '0-25000' : $current_kilometerstand_name = '0 - 25.000'; break;
case '25000-50000' : $current_kilometerstand_name = '25.000 - 50.000'; break;
case '50000-75000' : $current_kilometerstand_name = '50.000 - 75.000'; break;
case '75000-100000' : $current_kilometerstand_name = '75.000 - 100.000'; break;
case '100000-150000' : $current_kilometerstand_name = '100.000 - 150.000'; break;
case '150000-1000000' : $current_kilometerstand_name = '150.000 en meer'; break;
}
echo '<div class="label">Kilometerstand</div>';
echo '<div class="clear">'.$current_kilometerstand_name.'<input type="hidden" name="kilometerstand" id="kilometerstand_x" value="'.$current_kilometerstand.'" /><input type="submit" value="" onclick="document.getElementById(\'kilometerstand_x\').value = \'\';" class="remove-filter" /></div>';
}
if($current_kleur){
echo '<div class="label">Kleur</div>';
echo '<div class="clear">'.ucfirst($current_kleur).'<input type="hidden" name="kleur" id="kleur_x" value="'.$current_kleur.'" /><input type="submit" value="" onclick="document.getElementById(\'kleur_x\').value = \'\';" class="remove-filter" /></div>';
}
if($current_bouwjaar){
echo '<div class="label">Bouwjaar</div>';
echo '<div class="clear">'.$current_bouwjaar.'<input type="hidden" name="bouwjaar" id="bouwjaar_x" value="'.$current_bouwjaar.'" /><input type="submit" value="" onclick="document.getElementById(\'bouwjaar_x\').value = \'\';" class="remove-filter" /></div>';
}
echo '<div class="clear border"></div>';
if(false == $current_merk){
echo '<div class="label">Merk</div><div class="filter-box merk">';
$result = $wpdb->get_col("SELECT meta_value FROM ".$wpdb->postmeta." WHERE meta_key = 'autodata_merk' GROUP BY meta_value ORDER BY meta_value ASC");
$imerk = 0;
foreach($result as $item){
echo '<label for="merk_'.$imerk.'"><input type="radio" name="merk" id="merk_'.$imerk.'" value="'.$item.'" onchange="this.form.submit()" />'.$item.'</label>';
$imerk++;
}
echo '</div>';
}
if($current_merk && false == $current_model){
echo '<div class="label">Model</div><div class="filter-box model">';
$posts = $wpdb->get_col("SELECT post_id FROM ".$wpdb->postmeta." WHERE meta_key = 'autodata_merk' AND meta_value = '".$current_merk."'");
$posts = implode(',',$posts);
$result = $wpdb->get_col("SELECT meta_value FROM ".$wpdb->postmeta." WHERE meta_key = 'autodata_model' AND post_id IN (".$posts.") GROUP BY meta_value ORDER BY meta_value ASC");
$imodel = 0;
foreach($result as $item){
echo '<label for="model_'.$imodel.'"><input type="radio" name="model" id="model_'.$imodel.'" value="'.$item.'" onchange="this.form.submit()" />'.$item.'</label>';
$imodel++;
}
echo '</div>';
}
if(false == $current_brandstof){
echo '<div class="label">Brandstof</div><div class="filter-box brandstof">';
$result = $wpdb->get_col("SELECT meta_value FROM ".$wpdb->postmeta." WHERE meta_key = 'autodata_brandstof' GROUP BY meta_value ORDER BY meta_value DESC");
$ibrandstof = 0;
foreach($result as $item){
switch($item){
case 'B' : $name = 'Benzine'; break;
case 'D' : $name = 'Diesel'; break;
case '3' : $name = 'LPG-G3'; break;
default : $name = 'Anders'; break;
}
echo '<label for="brandstof_'.$ibrandstof.'"><input type="radio" name="brandstof" id="brandstof_'.$ibrandstof.'" value="'.$item.'" onchange="this.form.submit()" />'.$name.'</label>';
$ibrandstof++;
}
echo '</div>';
}
if(false == $current_transmissie){
echo '<div class="label">Transmissie</div><div class="filter-box transmissie">';
$result = $wpdb->get_col("SELECT meta_value FROM ".$wpdb->postmeta." WHERE meta_key = 'autodata_transmissie' GROUP BY meta_value ORDER BY meta_value DESC");
$itransmissie = 0;
foreach($result as $item){
switch($item){
case 'A' : $name = 'Automaat'; break;
case 'H' : $name = 'Handgeschakeld'; break;
default : $name = 'Anders'; break;
}
echo '<label for="transmissie_'.$itransmissie.'"><input type="radio" name="transmissie" id="transmissie_'.$itransmissie.'" value="'.$item.'" onchange="this.form.submit()" />'.$name.'</label>';
$itransmissie++;
}
echo '</div>';
}
if(false == $current_carrosseriesoort){
echo '<div class="label">Carrosseriesoort</div><div class="filter-box carrosserie">';
$result = $wpdb->get_col("SELECT meta_value FROM ".$wpdb->postmeta." WHERE meta_key = 'autodata_carrosserie' GROUP BY meta_value ORDER BY meta_value ASC");
$icarrosseriesoort = 0;
foreach($result as $item){
echo '<label for="carrosseriesoort_'.$icarrosseriesoort.'"><input type="radio" name="carrosseriesoort" id="carrosseriesoort_'.$icarrosseriesoort.'" value="'.$item.'" onchange="this.form.submit()" />'.$item.'</label>';
$icarrosseriesoort++;
}
echo '</div>';
}
if(false == $current_prijs){
echo '<div class="label">Prijs</div><div class="filter-box prijs">';
echo '<label for="prijs_0"><input type="radio" name="prijs" id="prijs_0" value="0-5000" onchange="this.form.submit()" />€ 0 - 5.000</label>';
echo '<label for="prijs_1"><input type="radio" name="prijs" id="prijs_1" value="5000-10000" onchange="this.form.submit()" />€ 5.000 - 10.000</label>';
echo '<label for="prijs_2"><input type="radio" name="prijs" id="prijs_2" value="10000-15000" onchange="this.form.submit()" />€ 10.000 - 15.000</label>';
echo '<label for="prijs_3"><input type="radio" name="prijs" id="prijs_3" value="15000-20000" onchange="this.form.submit()" />€ 15.000 - 20.000</label>';
echo '<label for="prijs_4" style="display:none"><input type="radio" name="prijs" id="prijs_4" value="20000-25000" onchange="this.form.submit()" />€ 20.000 - 25.000</label>';
echo '<label for="prijs_5" style="display:none"><input type="radio" name="prijs" id="prijs_5" value="25000-30000" onchange="this.form.submit()" />€ 25.000 - 30.000</label>';
echo '<label for="prijs_6" style="display:none"><input type="radio" name="prijs" id="prijs_6" value="30000-35000" onchange="this.form.submit()" />€ 30.000 - 35.000</label>';
echo '<label for="prijs_7" style="display:none"><input type="radio" name="prijs" id="prijs_7" value="35000-40000" onchange="this.form.submit()" />€ 35.000 - 40.000</label>';
echo '<label for="prijs_8" style="display:none"><input type="radio" name="prijs" id="prijs_8" value="40000-1000000" onchange="this.form.submit()" />€ 40.000 en meer</label>';
echo '<label class="more" onclick="javascript:return showAll(\'prijs\');">+ meer...</label>';
echo '</div>';
}
if(false == $current_kilometerstand){
echo '<div class="label">Kilometerstand</div><div class="filter-box kilometerstand">';
echo '<label for="kilometerstand_0"><input type="radio" name="kilometerstand" id="kilometerstand_0" value="0-25000" onchange="this.form.submit()" />0 - 25.000</label>';
echo '<label for="kilometerstand_1"><input type="radio" name="kilometerstand" id="kilometerstand_1" value="25000-50000" onchange="this.form.submit()" />25.000 - 50.000</label>';
echo '<label for="kilometerstand_2"><input type="radio" name="kilometerstand" id="kilometerstand_2" value="50000-75000" onchange="this.form.submit()" />50.000 - 75.000</label>';
echo '<label for="kilometerstand_3"><input type="radio" name="kilometerstand" id="kilometerstand_3" value="75000-100000" onchange="this.form.submit()" />75.000 - 100.000</label>';
echo '<label for="kilometerstand_4" style="display:none"><input type="radio" name="kilometerstand" id="kilometerstand_4" value="100000-150000" onchange="this.form.submit()" />100.000 - 150.000</label>';
echo '<label for="kilometerstand_5" style="display:none"><input type="radio" name="kilometerstand" id="kilometerstand_5" value="150000-1000000" onchange="this.form.submit()" />150.000 en meer</label>';
echo '<label class="more" onclick="javascript:return showAll(\'kilometerstand\');">+ meer...</label>';
echo '</div>';
}
if(false == $current_kleur){
echo '<div class="label">Kleur</div><div class="filter-box kleur">';
$result = $wpdb->get_col("SELECT meta_value FROM ".$wpdb->postmeta." WHERE meta_key = 'autodata_basiskleur' GROUP BY meta_value ORDER BY meta_value ASC");
$ikleur = 0;
foreach($result as $item){
$display = '';
if($ikleur > 3){
$display = ' style="display:none;"';
}
echo '<label for="kleur_'.$ikleur.'"'.$display.'><input type="radio" name="kleur" id="kleur_'.$ikleur.'" value="'.$item.'" onchange="this.form.submit()" />'.ucfirst($item).'</label>';
$ikleur++;
}
echo '<label class="more" onclick="javascript:return showAll(\'kleur\');">+ meer...</label>';
echo '</div>';
}
if(false == $current_bouwjaar){
echo '<div class="label">Bouwjaar</div><div class="filter-box bouwjaar">';
$result = $wpdb->get_col("SELECT meta_value FROM ".$wpdb->postmeta." WHERE meta_key = 'autodata_bouwjaar' GROUP BY meta_value ORDER BY meta_value DESC");
$ibouwjaar = 0;
foreach($result as $item){
$display = '';
if($ibouwjaar > 3){
$display = ' style="display:none;"';
}
echo '<label for="bouwjaar_'.$ibouwjaar.'"'.$display.'><input type="radio" name="bouwjaar" id="bouwjaar_'.$ibouwjaar.'" value="'.$item.'" onchange="this.form.submit()" />'.$item.'</label>';
$ibouwjaar++;
}
echo '<label class="more" onclick="javascript:return showAll(\'bouwjaar\');">+ meer...</label>';
echo '</div>';
}
?>
<script type="text/javascript">
$= jQuery;
function showAll(type) {
var more = $('.filter-box.'+type+' .more');
var items = $('.filter-box.'+type+' label');
var show = more.html() == "+ meer..." ? true : false;
for(var i = (show ? 0 : 4); i < items.length-1; i++){
items[i].style.display = show ? "block" : "none";
}
more.html(show ? "- minder..." : "+ meer...");
return false;
}
</script>
<br />
</form>
<a class="home-block-link" href="/occasions/">Wissen</a>
<br />
<div class="clear"></div>
</div>
<?php
// occasion filters
$meta_query = array();
if(isset($_GET['merk'])&&''!=$_GET['merk']){
$meta_query_data = array(
'key' => 'autodata_merk',
'value' => $_GET['merk'],
'compare' => 'LIKE'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
if(isset($_GET['model'])&&''!=$_GET['model']){
$meta_query_data = array(
'key' => 'autodata_model',
'value' => $_GET['model'],
'compare' => 'LIKE'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
if(isset($_GET['brandstof'])&&''!=$_GET['brandstof']){
$meta_query_data = array(
'key' => 'autodata_brandstof',
'value' => $_GET['brandstof'],
'compare' => 'LIKE'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
if(isset($_GET['transmissie'])&&''!=$_GET['transmissie']){
$meta_query_data = array(
'key' => 'autodata_transmissie',
'value' => $_GET['transmissie'],
'compare' => 'LIKE'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
if(isset($_GET['carrosseriesoort'])&&''!=$_GET['carrosseriesoort']){
$meta_query_data = array(
'key' => 'autodata_carrosserie',
'value' => $_GET['carrosseriesoort'],
'compare' => 'LIKE'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
if(isset($_GET['prijs'])&&''!=$_GET['prijs']){
$price = explode('-',$_GET['prijs']);
$meta_query_data = array(
'key' => 'autodata_verkoopprijs_particulier',
'value' => array($price[0],$price[1]),
'type' => 'numeric',
'compare' => 'BETWEEN'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
if(isset($_GET['kilometerstand'])&&''!=$_GET['kilometerstand']){
$kmstand = explode('-',$_GET['kilometerstand']);
$meta_query_data = array(
'key' => 'autodata_tellerstand',
'value' => array($kmstand[0],$kmstand[1]),
'type' => 'numeric',
'compare' => 'BETWEEN'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
if(isset($_GET['kleur'])&&''!=$_GET['kleur']){
$meta_query_data = array(
'key' => 'autodata_basiskleur',
'value' => $_GET['kleur'],
'compare' => 'LIKE'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
if(isset($_GET['bouwjaar'])&&''!=$_GET['bouwjaar']){
$meta_query_data = array(
'key' => 'autodata_bouwjaar',
'value' => $_GET['bouwjaar'],
'compare' => 'LIKE'
);
$meta_query = array_merge($meta_query,array($meta_query_data));
}
$i = 0;
$paged = (get_query_var('paged')?get_query_var('paged'):1);
$the_query = new WP_Query(array('post_type'=>'occasions','posts_per_page'=>10000,'orderby' => 'title', 'order' => 'ASC','meta_query'=>$meta_query,'paged'=>$paged));
while($the_query->have_posts()) : $the_query->the_post();
$post_meta = get_post_meta($post->ID);
$container_class = '';
if( $i == 2 ){
$container_class = ' last';
$i = -1;
}
echo '<div class="occasion-container' . $container_class . '">
<div class="img"><a href="'.get_permalink().'"><img src="'.autodata_thumbnail().'" /></a></div>
<div class="content">
<a href="'.get_permalink().'"><h2>'.get_the_title().'</h2></a>
<div class="details">
<span class="type">'.$post_meta['autodata_type'][0].'</span>
<div class="kmbjwrap"><span class="kmstand">'.number_format($post_meta['autodata_tellerstand'][0],0," ",".").' KM</span> | <span class="bouwjaar">Bouwjaar: '.$post_meta['autodata_bouwjaar'][0].'</span></div>
<span class="price">€ '.number_format($post_meta['autodata_verkoopprijs_particulier'][0],0," ",".").',-</span>
</div>
</div>
</div>';
$i++;
endwhile;
?>
</div>
</div>
<div class="clear"> </div>
</div>
</div>
<?php get_footer(); ?>
Link gekopieerd
?
Onbekende gebruiker
29-07-2015 11:12
Je code is erg erg erg groot.
Misschien kan je hier iets aan doen? Want dit is wel erg groot.
Probeer het sowieso te verkleinen door includes te gebruiken of iets..
Link gekopieerd