Exakte suche eines Teiles in einem String

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Exakte suche eines Teiles in einem String

    Hallo *,

    nach langer langer abstinenz (Typo3 sei dank) muss ich grad ein altes Programm auf einen neuen Stand bringen. Dazu gehört ne Listenausgabe. Kurz zur Erklärung:
    In einer Eingabe Maske hat man die Mäglichkeit per Popub verschiedene "Kategorien" auszuwählen. In meiner damals geistigen umnachtung, hab ich die Kategorien zum dazugehörigen Datensatz als String gespeichert. Die Daten im Feld sehen also so aus:

    Code:
    MX JMX V GAST SP
    wobei die positionen, falls ein anderer Datensatz die gleichen elemente hat, verschieden sein können. (Wir wollens ja nicht einfach machen).

    Also, ich bekomme per formular in nem Array die Daten übermittelt.
    Nach einigen Prüfungen und zurechtbastelereien fang ich an die WHERE KLausel zu basteln:

    PHP-Code:
     if ($my_sql_string == 1)                {    $my_sql_string 
    "WHERE (first_name LIKE '%%".$_SESSION['vars'][0]."%%' 
    OR second_name LIKE '%%"
    .$_SESSION['vars'][0]."%%')
    AND street LIKE '%%"
    .$_SESSION['vars'][1]."%%'
    AND city LIKE '%%"
    .$_SESSION['vars'][2]."%%'
    AND (plz >= '"
    .$_SESSION['vars'][3]."' 
    AND plz <= '"
    .$_SESSION['vars'][4]."')    
    AND (call_1 LIKE '%%"
    .$_SESSION['vars'][5]."%%' 
    OR call_2 LIKE '%%"
    .$_SESSION['vars'][5]."%%' 
    OR mobile LIKE '%%"
    .$_SESSION['vars'][5]."%%')
    AND email LIKE '%%"
    .$_SESSION['vars'][6]."%%'
    AND (stat_2 LIKE '"
    .$_SESSION['vars'][8]."' 
    OR stat_2 LIKE '%%"
    .$_SESSION['vars'][8]." '
    OR stat_2 LIKE ' "
    .$_SESSION['vars'][8]."%%'
    OR stat_2 LIKE '%% "
    .$_SESSION['vars'][8]." %%'
    OR stat_2 LIKE '"
    .$_SESSION['vars'][8]."%%'
    OR stat_2 LIKE '%%"
    .$_SESSION['vars'][8]."'
    )
    AND (klasse >= '"
    .$_SESSION['vars'][9]."' 
    AND klasse <= '"
    .$_SESSION['vars'][10]."' 
    OR k_klasse >= '"
    .$_SESSION['vars'][9]."' 
    AND k_klasse <= '"
    .$_SESSION['vars'][10]."')
    AND land LIKE '%%"
    .$_SESSION['vars'][13]."%%'    
    AND memo LIKE '%%"
    .$_SESSION['vars'][11]."%%'";
        } 
    Konkret gehts jetzt um die $_SESSION['vars'][8].
    Damit ich nicht alle Programme ändern muss, was wirklich sehr viel arbeit mit sich bringt, die Daten in der Tabelle aber auch so sein bleiben sollten, habe ich mir behelfsmässig versucht mit mehrern OR´s das zurecht zubiegen. Scheint aber nicht so ganz hin zuhauen.
    Bevor das ganze an die WHERE geht, schneide ich noch die Leerzeichen aus dem übermittelten string raus. Hier sei angemerkt das es ausreichen würde, sich auf nur 1 Kategorie pro suche zu beschränken. Die Daten werden in dem Fall nur als csv exportiert.
    Folgende Probleme treten auf:
    JMX und MX sind erlaubte Kategorien, und da happerts schon: Vorne %% und hinten exakt bringt beide.
    Gibts da irgendwelche anderen funktionen die sich da net in die WHERE abfrage einbauen lassen ohne dass sich meine Programme ganz schlimm ändern?

    Danke jedenfalls schonmal für Hilfe!

    Grüßle Manfred
Lädt...
X