11
Okay, anbei der komplette Code:
Array-Definition
Generierung von $array_alles (funktioniert!)
Generierung der Ausstattungs-Arrays (funktioniert!)
Wenn Ausstattungsmerkmale über das Suchformular ankommen dann...
Ausgabe:
In echt sind es 7 Ausstattungsmerkmale-Arrays. Ich habe es jetzt auf 4 reduziert da die alle nach dem selben Prinzip generiert werden. Sämtliche Arrays werden auch korrekt generiert und mit korrekten IDs befüllt. Ist evtl. so etwas schwierig nachvollziehbar. Es handelt sich bei allen Arays um eindimensionale Arrays. Am Ende soll ein Array entstehen welches nur noch Einträge beinhaltet die in allen Arrays vorkommen. Das $array_alles kann nie leer sein. Eines oder mehrere der Ausstattungs-Arrays allerdings schon.
Array-Definition
$array_ausstattung1 = array();
$array_ausstattung2 = array();
$array_ausstattung3 = array();
Generierung von $array_alles (funktioniert!)
$sql = mysql_connect($host,$user,$pword);
mysql_select_db($db,$sql);
$query = "
SELECT DISTINCTROW
domizile.ID DomizilID,
domizile.Region,
objekte.ID ObjektID,
objekte.Personen1,
objekte.Typ
FROM objekte
LEFT JOIN domizile ON objekte.DomizilID = domizile.ID
WHERE objekte.Astagionepreis > 0 && objekte.Mstagionepreis > 0 && objekte.Bstagionepreis > 0 && objekte.Offline != 'x'
GROUP BY objekte.ID";
$result = @mysql_query($query) or die("8".mysql_error());
while($val = mysql_fetch_array($result))
{
$Domizil_ID = $val[0];
$Domizil_Region = $val[1];
$Objekt_ID = $val[2];
$Objekt_Personen1 = $val[3];
$Objekt_Typ = $val[4];
if(isset($_REQUEST['regionen']))
{
foreach($_REQUEST['regionen'] as $v)
{
if($v == $Domizil_Region)
{
if(isset($_REQUEST['objekttyp']))
{
foreach($_REQUEST['objekttyp'] as $v)
{
if($v == $Objekt_Typ)
{
if($_REQUEST['personenanzahl'] < 1 || $_REQUEST['personenanzahl'] == $Objekt_Personen1)
$array_alles[] = $Objekt_ID;
}
}
}
else
$array_alles[] = "";
}
}
}
else
$array_alles[] = "";
Generierung der Ausstattungs-Arrays (funktioniert!)
if($_REQUEST['ausstattung'][0] !="")
{
$sql1 = mysql_connect($host,$user,$pword);
mysql_select_db($db,$sql1);
$query1 = "SELECT AttributID FROM objektattribute_allgemein WHERE ObjektID = ".$Objekt_ID;
$result1 = @mysql_query($query1) or die("9".mysql_error());
while($val1 = mysql_fetch_array($result1))
{
if(in_array($val1[0],$_REQUEST['ausstattung']))
$array_ausstattung1[] = $Objekt_ID;
}
$sql2 = mysql_connect($host,$user,$pword);
mysql_select_db($db,$sql2);
$query2 = "SELECT AttributID FROM objektattribute_badezimmer WHERE ObjektID = ".$Objekt_ID;
$result2 = @mysql_query($query2) or die("10".mysql_error());
while($val2 = mysql_fetch_array($result2))
{
if(in_array($val2[0],$_REQUEST['ausstattung']))
$array_ausstattung2[] = $Objekt_ID;
}
$sql3 = mysql_connect($host,$user,$pword);
mysql_select_db($db,$sql3);
$query3 = "SELECT AttributID FROM objektattribute_kueche WHERE ObjektID = ".$Objekt_ID;
$result3 = @mysql_query($query3) or die("11".mysql_error());
while($val3 = mysql_fetch_array($result3))
{
if(in_array($val3[0],$_REQUEST['ausstattung']))
$array_ausstattung3[] = $Objekt_ID;
}
}
}
Wenn Ausstattungsmerkmale über das Suchformular ankommen dann...
if($_REQUEST['ausstattung'][0] !="")
{
$kb = array('array_alles','array_ausstattung1','array_ausstattung2','array_ausstattung3');
$array_suchergebnisIDs = $array_alles;
foreach($kb as $k)
{
if(!empty(${$k}))
$array_suchergebnisIDs = array_intersect($array_suchergebnisIDs,${$k});
}
}
else
$array_suchergebnisIDs = $array_alles;
Ausgabe:
return $array_suchergebnisIDs;
In echt sind es 7 Ausstattungsmerkmale-Arrays. Ich habe es jetzt auf 4 reduziert da die alle nach dem selben Prinzip generiert werden. Sämtliche Arrays werden auch korrekt generiert und mit korrekten IDs befüllt. Ist evtl. so etwas schwierig nachvollziehbar. Es handelt sich bei allen Arays um eindimensionale Arrays. Am Ende soll ein Array entstehen welches nur noch Einträge beinhaltet die in allen Arrays vorkommen. Das $array_alles kann nie leer sein. Eines oder mehrere der Ausstattungs-Arrays allerdings schon.