echo $field foreach

Hi everyone,

Im looking for some php help and thought id ask on here … what im trying to do is echo a select input box for each $field but its coming out wrong. I want each field to be in a dropdown (select box) but currently there coming out below one another see here (left side under ‘product filter’) http://essex-laptops.co.uk and i cant understand why. All i can think is im using the foreach command wrong ?

Heres the snippet of the code im working on

					echo '<tr><td style="padding:0"><form action="'.$baseurl.'category_id='.$category_id.'&product_type_'.$product_type_id.'_'.$parameter_name.'_comp=in&';
					echo 'product_type_'.$product_type_id.'_'.$parameter_name.'[]='.$field.'" method="post" id="postfilter'.$i.'">';
					echo '<input type="hidden" name="url_before_filter" value="'.$current_url.'" /> ';
					echo '<select name="'.$parameter_name.'"> ';
                                        foreach($fields as $field) { 
					echo '<option name="verstuur '.$i.'" value="'.$parameter_value.' '.$parameter_unit.' ('.count($db3->record).')" >'.$parameter_value.'</option>';
                                        }
					echo '</select> ';
					echo '<input type="submit" class="parameter" name="verstuur" />';
					echo '</form></td></tr>';

and the entire code

<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
* Product Filter Module
*
* @copyright (C) 2009 Martijn de Bier
*
* www.virtuemart.net
*/

global $mosConfig_absolute_path, $sess, $VM_LANG;
// Load the virtuemart main parse code
if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
	require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
} else {
	require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}
$text_before			= $params->get( 'text_before', '');
$show_linklist			= $params->get( 'show_linklist', 1);

$choosen_filters		= $params->get( 'choosen_filters', 'Filter(s):');
$remove_filter			= $params->get( 'remove_filter', ' x');
$show_total				= $params->get( 'show_total', 1);
$withcategories			= $params->get( 'withcategories', 0);
$show_child_products	= $params->get( 'show_child_products', 1);
$totalproductsbottom 	= $params->get( 'totalproductsbottom', 'Total:');
$uniqueproductsbottom	= $params->get( 'uniqueproductsbottom', 'unique products');

$css_parameter							= $params->get( 'css_parameter', '');
$css_parameter_hover					= $params->get( 'css_parameter_hover', '');
$css_parameter_label					= $params->get( 'css_parameter_label', '');
$css_legend_selected_parameter_header	= $params->get( 'css_legend_selected_parameter_header', '');
$css_fieldset_selected_parameter		= $params->get( 'css_fieldset_selected_parameter', '');
$css_selected_parameter_text			= $params->get( 'css_selected_parameter_text', '');

$category_id 			= vmGet( $_REQUEST, 'category_id', '' );
$product_type_id  		= $params->get( 'product_type_id', 1);
$max_filters  			= $params->get( 'max_filters', 10);

$results_from_url	 	= vmGet( $_REQUEST, 'no', '' );									// Determines number of search results is in URL (only when there are 3 filters)

$got_filters_from_url	= explode("[]=",vmGet( $_SERVER, 'REQUEST_URI', null ));  		// Are there any current filters in URL?
$got_filters 			= $got_filters_from_url[1];										// Are there any current filters in URL?

$current_url			= vmGet( $_SERVER, 'REQUEST_URI', '' );

$sess = new ps_session;
?>
<style type="text/css">
<!--
.parameter {<?php echo $css_parameter ?>}
.parameter_hover {<?php echo $css_parameter_hover ?>}
.parameter_label {<?php echo $css_parameter_label ?>}
.legend_selected_parameter_header {<?php echo $css_legend_selected_parameter_header ?>}
.fieldset_selected_parameter {<?php echo $css_fieldset_selected_parameter ?>}
.selected_parameter_text {<?php echo $css_selected_parameter_text ?>}
-->
</style>

<table width="170" cellpadding="0" cellspacing="0" border="0" id="table_product_filters">
<?php


if (!empty($text_before)) { echo '<tr><td>'.$text_before.'</td></tr>';}

for ($i = 1; $i <= 10; $i++) 	{
	${'db_v'.$i} = new ps_DB;
	${'db_v'.$i}->query( "SELECT * FROM #__{vm}_product_type_parameter WHERE product_type_id=$product_type_id AND parameter_list_order=".$i);
	${'filter'.$i.'_urlpart'} = 'product_type_'.${'db_v'.$i}->f("product_type_id").'_'.${'db_v'.$i}->f("parameter_name");
	${'filter'.$i.'_array'} = vmGet( $_REQUEST, ${'filter'.$i.'_urlpart'}, '' );
	${'filter'.$i} = ${'filter'.$i.'_array'}[0];
	
	// Show 'Choosen filters' only when filters in URL
		if (!empty($got_filters) && $i==1) { echo '<p class="selected_parameter_text">'.$choosen_filters.' </p>';
		}
		
		// Show every filter plus a remove filter button
		if (!empty(${'filter'.$i})) { 
			
			echo '<tr><td style="padding:0"><fieldset class="fieldset_selected_parameter"><legend class="legend_selected_parameter_header">&nbsp;';
			echo ${'db_v'.$i}->f("parameter_label").'&nbsp;</legend>';
			echo '<form action="'.$mosConfig_live_site;
			if (count($got_filters_from_url) == 2) { echo $_POST["url_before_filter"]; }
			if (count($got_filters_from_url) != 2) { echo str_replace('&'.${'filter'.$i.'_urlpart'}.'[]='.${'filter'.$i}, NULL, str_replace('%20', ' ', $current_url)); }
			echo '" method="post" id="postfilter'.$i.'">';
			echo '<p class="selected_parameter_text">'.${'filter'.$i}.' '.${'db_v'.$i}->f("parameter_unit").'';
			echo '<input type="hidden" name="url_before_filter" value="'.$_POST["url_before_filter"].'" /> ';	
			echo '<input style="width: 30px;" type="submit" class="parameter" onmouseover="this.className=\'parameter_hover\'" onmouseout="this.className=\'parameter\'" name="verstuur';
			echo $i.'" value=" '.$remove_filter.'"/></p></form></fieldset></td></tr>';	
		}
} 

$query  = "	SELECT * FROM #__{vm}_product_type_parameter 
			WHERE product_type_id=$product_type_id
			ORDER BY parameter_list_order";
$db = new ps_DB;
$db->query( $query );
$res = $db->record;

foreach( $res as $key1 => $product_parameter_line) {
					
	// Only show parameter label above choosable paramaters when parameter is not selected				
	for ($i = 1; $i <= $max_filters; $i++) 	{
		if (empty(${'filter'.$i}) && $product_parameter_line->parameter_label==${'db_v'.$i}->f("parameter_label") && count($got_filters_from_url)<4 ) {
		echo '<tr><td class="td_parameter_label"><p class="parameter_label">'.$product_parameter_line->parameter_label.'</p></td></tr>';				
		} 
	}

	// Putting the parameters in an array

	$current_parameter_list_order = $product_parameter_line->parameter_list_order;
	$db2 = new ps_DB;
	$db2->query( "	SELECT * FROM #__{vm}_product_type_parameter 
					WHERE product_type_id=$product_type_id
					AND parameter_list_order=$current_parameter_list_order");
	
	$fields=explode(";",$db2->f("parameter_values"));      
	foreach($fields as $field) {
		$baseurl = 'index.php?option=com_virtuemart&page=shop.browse&product_type_id='.$product_type_id.'&';
		
		for ($i = 1; $i <= $max_filters; $i++){
		$variable_parameter_name	= ${'db_v'.$i}->f("parameter_name");
		$variable_parameter_value	= ${'filter'.$i};		
		
		$parameter_name = $product_parameter_line->parameter_name;
		$parameter_unit = $product_parameter_line->parameter_unit;
		$parameter_value = $field;
		
		if($show_child_products == 0 ) { $child_or_parent = 'if(b.product_parent_id=0, b.product_id, b.product_parent_id)'; }
		if($show_child_products == 1 ) { $child_or_parent = 'b.product_id'; }
		
			if($category_id !=0 && $withcategories == 0) { // Show all within the selected category IF crossfilter with categories is selected from the module settings	

				$query_filters  = "	SELECT DISTINCT a.product_id FROM #__{vm}_product_type_$product_type_id a, #__{vm}_product b, #__{vm}_product_category_xref c
									WHERE b.product_publish = 'Y'  AND a.product_id = b.product_id AND c.product_id = $child_or_parent AND c.category_id = ".$category_id." ";
			} else {				 					  // Show of all categories if none is selected
				$query_filters  = " SELECT DISTINCT a.product_id FROM #__{vm}_product_type_$product_type_id a, #__{vm}_product b, #__{vm}_product_category_xref c
									WHERE b.product_publish = 'Y'  AND a.product_id = b.product_id AND c.product_id = $child_or_parent";
			}


		if(	$product_parameter_line->parameter_list_order<=$max_filters    && count($got_filters_from_url)<3){
			
//All filters empty		
			if (empty($got_filters) && $product_parameter_line->parameter_name==${'db_v'.$i}->f("parameter_name")  )  {  
							$db3 = new ps_DB;		
							$db3->query("$query_filters AND $variable_parameter_name='$parameter_value'" );	
							$dbtotal = new ps_DB;
							$dbtotal->query(" $query_filters" );	

				if (count($db3->record)!=0) {
					echo '<tr><td style="padding:0"><form action="'.$baseurl.'category_id='.$category_id.'&product_type_'.$product_type_id.'_'.$parameter_name.'_comp=in&';
					echo 'product_type_'.$product_type_id.'_'.$parameter_name.'[]='.$field.'" method="post" id="postfilter'.$i.'">';
					echo '<input type="hidden" name="url_before_filter" value="'.$current_url.'" /> ';
					echo '<select name="'.$parameter_name.'"> ';
                                        foreach($fields as $field) { 
					echo '<option name="verstuur '.$i.'" value="'.$parameter_value.' '.$parameter_unit.' ('.count($db3->record).')" >'.$parameter_value.'</option>';
                                        }
					echo '</select> ';
					echo '<input type="submit" class="parameter" name="verstuur" />';
					echo '</form></td></tr>';	
				}	
				break;
			}
// One filter selected, parameters 1 and 2
				if ($i != $db2->f("parameter_list_order") && $product_parameter_line->parameter_list_order==${'db_v'.$db2->f("parameter_list_order")}->f("parameter_list_order")) {
					if (!empty(${'filter'.$i}) && empty(${'filter'.$i+1}) && count($got_filters_from_url)<4 ) {

								$db3 = new ps_DB;
								$db3->query( "$query_filters AND $variable_parameter_name='$variable_parameter_value' AND $parameter_name='$parameter_value'");
								$dbtotal = new ps_DB;
								$dbtotal->query( "$query_filters AND $variable_parameter_name='$variable_parameter_value'");
											
							if (count($db3->record)!=0) {	
								echo '<tr><td style="padding:0"><form action="'.$baseurl.'category_id='.$category_id.'&'.${'filter'.$db2->f("parameter_list_order").'_urlpart'}.'_comp=in&';
								echo ${'filter'.$db2->f("parameter_list_order").'_urlpart'}.'[]='.$field;	
								echo '&'.${'filter'.$i.'_urlpart'}.'_comp=in&'.${'filter'.$i.'_urlpart'}.'[]='.${'filter'.$i}.'" method="post" id="postfilter'.$i.'">';
								echo '<input type="hidden" name="url_before_filter" value="'.$_POST["url_before_filter"].'" /> ';	
								echo '<input type="submit" class="parameter" onmouseover="this.className=\'parameter_hover\'" onmouseout="this.className=\'parameter\'" name="verstuur';
								echo $i.'" value="'.$parameter_value.' '.$parameter_unit.' ('.count($db3->record).')" /></form></td><tr>';						
							} 	
							break;
					}
				}
				if ($i != $db2->f("parameter_list_order") && $product_parameter_line->parameter_list_order==${'db_v'.$db2->f("parameter_list_order")}->f("parameter_list_order")) {
					if (empty(${'filter'.$i}) && !empty(${'filter'.$i+1}) && count($got_filters_from_url)<4 ) {

								$db3 = new ps_DB;
								$db3->query( "$query_filters AND $variable_parameter_name='$variable_parameter_value' AND $parameter_name='$parameter_value'");
								$dbtotal = new ps_DB;
								$dbtotal->query( "$query_filters AND $variable_parameter_name='$variable_parameter_value'");
											
							if (count($db3->record)!=0) {	
								echo '<tr><td style="padding:0"><form action="'.$baseurl.'category_id='.$category_id.'&'.${'filter'.$db2->f("parameter_list_order").'_urlpart'}.'_comp=in&';
								echo ${'filter'.$db2->f("parameter_list_order").'_urlpart'}.'[]='.$field;	
								echo '&'.${'filter'.$i.'_urlpart'}.'_comp=in&'.${'filter'.$i.'_urlpart'}.'[]='.${'filter'.$i}.'" method="post" id="postfilter'.$i.'">';
								echo '<input type="hidden" name="url_before_filter" value="'.$_POST["url_before_filter"].'" /> ';	
								echo '<input type="submit" class="parameter" onmouseover="this.className=\'parameter_hover\'" onmouseout="this.className=\'parameter\'" name="verstuur';
								echo $i.'" value="'.$parameter_value.' '.$parameter_unit.' ('.count($db3->record).')" /></form></td><tr>';						
							} 	
							break;
					}
				}				

				
// One filter selected, parameters 1 tot 10
/////////////////////////////////////////////////////////////////////
////////////////////////                     ////////////////////////
//////////////////////// NOT IN THIS VERSION ////////////////////////
////////////////////////                     ////////////////////////
/////////////////////////////////////////////////////////////////////
			
// Two filters selected		

/////////////////////////////////////////////////////////////////////
////////////////////////                     ////////////////////////
//////////////////////// NOT IN THIS VERSION ////////////////////////
////////////////////////                     ////////////////////////
/////////////////////////////////////////////////////////////////////

			}//END OF if(	$product_parameter_line->parameter_list_order<=$max_filters		

		} // END OF for ($i = 1; $i <= $max_filters; $i++){ LOOP						
			
	}//END OF foreach($fields as $field) LOOP	
	
	
}//END OF foreach( $res as $key1 => $product_parameter_line) LOOP



if ($show_total == 1) {	
	echo '<tr><td style="padding:0"><br>'.$totalproductsbottom.' ';
		if (count($dbtotal->record) != 0 ) { echo count($dbtotal->record);} else {echo $results_from_url;}
	echo ' '.$uniqueproductsbottom.'<br></td></tr>';
} 
	echo '<tr><td style="padding:0">&nbsp;</td></tr>';
	
	if (!empty($got_filters))  { 
		echo "<tr><td style=\"padding:3px\"><form action=\"index.php?option=com_virtuemart&Itemid=29	\" method=\"post\" name=\"reset\">\n";
		echo "<input type=\"submit\" class=\"button\" name=\"reset\" value=\"";
		echo $VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_RESET_FORM') ."\">\n</form></td></tr>";
	} 
?>	
</table>

Id really appreciate if someone could have a quick look at the above and just point me where im going wrong.

Thanks

Sponsor our Newsletter | Privacy Policy | Terms of Service