hallöchen,
ich habe ein mehr oder weniger großes problem. um dieses zu verstehen, muss ich einige erläuterungen dazu geben:
also, ich habe eine mysql-datenbank mit fertigem layout bekommen, daran kann, will und soll ich nix ändern (leider). und zwar gibt es dort eine tabelle userdaten, in welcher diese gespeichert werden. die einzelnen felder sind häufig als varchar(255) deklariert. über das eingabeformular können user ihre daten eingeben. dabei ist zu beachten, dass sie bei manchen einträgen auch mehrfachauswahlen nutzen können. diese werden zunächst über ein array gehandelt. beim eintragen in die datenbank wird dieses array mit implode(","array) in einen string umgewandelt, der dann in das entsprechende feld in die datenbank gespeichert wir. also steht dann in der db z.b. daten1,daten2,... dabei handelt es sich meistens um id aus einer auflösungstabelle.
nun zu meinem eigentlichen problem.
es gibt ein suchformular, wo user nach anderen usern suchen können. in diesem formular gibt es wieder diese mehrfachauswahlfelder. um etwas näher ins detail zu gehen nehmen wir mal an, ich habe eine tabelle bundesländer in meiner db. diese haben jeweils eine betsimmte id! in der selectbox (mehrfachauswahl) stehen die namen der bundesländer, im hintergrund werden die ids übergeben. ich wähle nun zum beispiel sachsen und thüringen aus (id 1 bzw 2). diese werden wieder in ein array übergeben. nun soll eine select-abfrage auf die datenbank ausgeführt werden, wo ich herausfinden will, ob ein eintrag in der db entweder die id1, oder die id2 enthält. hat der user nur ein bundesland beim eintragen ausgewählt, funktioniert die abfrage bereits. wenn aber mehrehre bundesländer in der db stehen, also 1,2,3,4... dann geht das ganze nicht mehr, da 1 <> 1,2,3,4... usw. ich brauche also einen algorythmus, welcher das array aus der suchanfrage mit den einzelnen ids aus dem string der db vergleich!
also ist 1(erste auswahl aus array) ==1 oder 1==2... oder 2(zweite auswahl aus array) = 1 oder 2 ==2...
so ungefähr.
hier mal noch ein auszug aus meinem quellcode:
wie gesagt, das geht eben aber nur, wenn beim eintragen des user in die db nur ein bundesland gewählt wurde.
ich hoffe, ihr habt die problematik verstanden und könnt mir bei der lösung helfen!?? falls was unklar ist, einfach noch mal nachfragen
danke für eure bemühungen
mfg
x_ray
ich habe ein mehr oder weniger großes problem. um dieses zu verstehen, muss ich einige erläuterungen dazu geben:
also, ich habe eine mysql-datenbank mit fertigem layout bekommen, daran kann, will und soll ich nix ändern (leider). und zwar gibt es dort eine tabelle userdaten, in welcher diese gespeichert werden. die einzelnen felder sind häufig als varchar(255) deklariert. über das eingabeformular können user ihre daten eingeben. dabei ist zu beachten, dass sie bei manchen einträgen auch mehrfachauswahlen nutzen können. diese werden zunächst über ein array gehandelt. beim eintragen in die datenbank wird dieses array mit implode(","array) in einen string umgewandelt, der dann in das entsprechende feld in die datenbank gespeichert wir. also steht dann in der db z.b. daten1,daten2,... dabei handelt es sich meistens um id aus einer auflösungstabelle.
nun zu meinem eigentlichen problem.
es gibt ein suchformular, wo user nach anderen usern suchen können. in diesem formular gibt es wieder diese mehrfachauswahlfelder. um etwas näher ins detail zu gehen nehmen wir mal an, ich habe eine tabelle bundesländer in meiner db. diese haben jeweils eine betsimmte id! in der selectbox (mehrfachauswahl) stehen die namen der bundesländer, im hintergrund werden die ids übergeben. ich wähle nun zum beispiel sachsen und thüringen aus (id 1 bzw 2). diese werden wieder in ein array übergeben. nun soll eine select-abfrage auf die datenbank ausgeführt werden, wo ich herausfinden will, ob ein eintrag in der db entweder die id1, oder die id2 enthält. hat der user nur ein bundesland beim eintragen ausgewählt, funktioniert die abfrage bereits. wenn aber mehrehre bundesländer in der db stehen, also 1,2,3,4... dann geht das ganze nicht mehr, da 1 <> 1,2,3,4... usw. ich brauche also einen algorythmus, welcher das array aus der suchanfrage mit den einzelnen ids aus dem string der db vergleich!
also ist 1(erste auswahl aus array) ==1 oder 1==2... oder 2(zweite auswahl aus array) = 1 oder 2 ==2...
so ungefähr.
hier mal noch ein auszug aus meinem quellcode:
PHP-Code:
$SQL="SELECT * FROM `job_an`";
$WHERE="";
function add_where( $str ){
global $WHERE;
$temp = trim($WHERE);
if ( !empty($temp) ) $WHERE.=" AND ";
$WHERE.=$str;
}
$temp=array_data("bundesland");
if ( count($temp) > 0 ){
$tmp_str="(";
foreach( $temp as $key=>$val ){
if ( $tmp_str!="(" ) $tmp_str.=" OR ";
$tmp_str.="`bundesland`='${val}'";
}
add_where($tmp_str.")");
}
$SQL .= " WHERE ".$WHERE.";
ich hoffe, ihr habt die problematik verstanden und könnt mir bei der lösung helfen!?? falls was unklar ist, einfach noch mal nachfragen
danke für eure bemühungen
mfg
x_ray
Kommentar