Wil de juiste optie naar voren komen?

Status
Niet open voor verdere reacties.

darkmouse

Gebruiker
Lid geworden
12 apr 2009
Berichten
15
Stel voor een input type=""SELECT"
De options voor deze select zijn variabel en afhankelijk van een aantal gezette parameters.
Bijvoorbeeld:
Gezette parameters: kort, dik, man.

OPTION - PARAMETERS

JAN - MAN
JAN - KORT
JAN - DUN

KEES - MAN
KEES - KORT
KEES - DIK

WIM - MAN
WIM - LANG
WIM - DIK

HANS - MAN
HANS - LANG
HANS - DUN

TRUUS - VROUW
TRUUS - KORT
TRUUS - DUN

De option moet aan alle gezette parameters voldoen.
Met een WHERE IN() clause kom ik er niet (dan komen alle mannen er door).
Ik heb ook een XOR geprobeerd in de mysql_query.
een array_diff() is ook niet waterdicht.

Iemand een idee?
 
Laatst bewerkt:
De vraag is dus:

Toon de options die voldoen aan ALLE gezette PARAMETERS: kort, dik, man.
 
Dat pakt ook niet goed uit, dan komt er helemaal niets meer terug. Want geen enkel record kan aan meerdere eigenscappen voldoen.

PHP:
// -------------------------------------------------------------------------------------------------------------------------
// OPTIE STAP 1: welke parents vallen onder huidig $tabnr
// -------------------------------------------------------------------------------------------------------------------------	
		$haalParentsTab = ' SELECT * FROM  conf_SysOptParent WHERE Tab_ID = '.$tabnr.' ORDER BY Par_Order ASC ';		// 
		$resultHaalParentsTab = mysql_query($haalParentsTab) or die (mysql_error());
// -------------------------------------------------------------------------------------------------------------------------
// OPTIE STAP 2: haal PARENT FILTER attributen
// -------------------------------------------------------------------------------------------------------------------------		
		while ( $ParentsTab = mysql_fetch_array($resultHaalParentsTab, MYSQL_BOTH))
		{   // print 'TabParent: '.$ParentsTab['Par_ID'].'<br />';
			$haalParFilOptAtt = "SELECT DISTINCT Att_ID
										FROM conf_Par_FilterAtt
										WHERE  conf_Par_FilterAtt.Par_ID = ".$ParentsTab['Par_ID']."
										";//
			$resultHaalParFilOptAtt = mysql_query($haalParFilOptAtt) or die (mysql_error());
			$pfoa_list = ''; // $pfoa_array = array();
			while ( $pfoaRow = mysql_fetch_array($resultHaalParFilOptAtt, MYSQL_BOTH)){  
						// stop de opties in een lijst
						$pfoa_list .= $pfoaRow['Att_ID'].',';
						
						//array_push($pfoa_list,(($pfoaRow['Att_ID'])) );
			}  if($pfoa_list){print '$pfoa_list: '.$pfoa_list.'<br />';}	
			$vlag = 0;
			$pfoa_list = substr($pfoa_list, 0, -1); //	print '$pfoa_list: '.$pfoa_list.'<br />';
			if ($pfoa_list){ // array_count_values($pfoa_list)>= 1 // isset($pfoa_list[0]) 
			 print 'ParentheeftFilterAtt: '.$ParentsTab['Par_ID'].'<br />';
				$c_list = '';
				$cc_list ='';	
					// Current Attributes ----------------------------------------------------------------------------------------
					$haalCurrentAtt = "SELECT	DISTINCT CurAtt_ID
												FROM conf_Sys_CurrentAtt 
												WHERE Systems_Sys_ID = ".$MrkID." 
												AND CurAtt_ID IN (".$pfoa_list.") ";
					$resultHaalCurrentAtt = mysql_query($haalCurrentAtt) or die (mysql_error());
					while ( $curRow = mysql_fetch_array($resultHaalCurrentAtt, MYSQL_BOTH)){  
						// stop de attributen in een lijst
						$c_list .= "conf_SysOpt_HasAtt.SysOpt_Attributes_Att_ID = ".$curRow['CurAtt_ID']." AND ";
						$cc_list .= $curRow['CurAtt_ID'].",";
					}  	
				$c_list = substr($c_list, 0, -4);	print 'c_list: '.$c_list.'<br />';
				$cc_list = substr($cc_list, 0, -1);	print 'cc_list: '.$cc_list.'<br />';
				print '<br />---------------------------<br />';
				// -------------------------------------------------------------------------------------------------------------------------
				// OPTIE STAP 3: welke opties vallen onder de parents
				// -------------------------------------------------------------------------------------------------------------------------
				if ($c_list){$vlag = 1;}
			} // end if ($pfoa_list[0] != 0)
			if ($vlag){
				$haalOptions = "SELECT	DISTINCT 	conf_SysOptions.Opt_ID, Parent_ID, Opt_Value
										FROM		conf_SysOptions
										INNER JOIN	conf_SysOpt_HasAtt
										ON			conf_SysOptions.Opt_ID = conf_SysOpt_HasAtt.SysOptions_Opt_ID 
										WHERE		".$c_list." AND Parent_ID = ".$ParentsTab['Par_ID']."
																	
										";	//	AND			SysOptions_Opt_ID NOT IN(".$bad.")		// 	(SysOpt_Attributes_Att_ID = ".$c_list.")
			}
			else{  // dus als er geen Par_Filter is // print 'geen Par_Filter
				$haalOptions = "SELECT 	DISTINCT 	
										Opt_ID, Parent_ID, Opt_Value 
										FROM conf_SysOptions
										WHERE Parent_ID = ".$ParentsTab['Par_ID']." 
										"; 
			} // end else // dus als er NIET een Par_Filter is
			$resultHaalOptions = mysql_query($haalOptions) or die (mysql_error());
			echo "<tr><th scope=\"row\" > <div id=\"pardiv\">".$ParentsTab['Par_Name'].":</div></th>\n";
			
			// ----------------------------------------------------------------------------------------------------------------------------------
			// ----------------------------------------------------------------------------------------------------------------------------------
			// OPTIE STAP 4: print de OPTIES
			// ----------------------------------------------------------------------------------------------------------------------------------
			// ----------------------------------------------------------------------------------------------------------------------------------
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan