Niko: MySQL: Nach Suche Ausgabe der Spaltenbezeichnung

Hallo,

mittels

$query1 = "
SELECT
    *
FROM
    verzeichnis
WHERE
    verzeichnis.vorname LIKE '$suchbegriff%'
    OR
    verzeichnis.name LIKE '$suchbegriff%'
    OR
    verzeichnis.bez LIKE '%$suchbegriff%'
    OR
    verzeichnis.plz LIKE '$suchbegriff%'
    OR
    verzeichnis.ort LIKE '$suchbegriff%'
GROUP BY
    vorname,name,email,geb
ORDER BY
    name ASC
";

$result = MYSQL_QUERY($query,$conn);
$anz = mysql_num_rows($result);

while ($row = mysql_fetch_array ($result))
{
...
}

durchsuche ich eine MySQL-DB.

Wie kann ich mir die Spaltenbezeichung bei einem Treffer ausgeben lassen. D.h. wenn der Suchbegriff mit einem Wort in der Spalte
'name' übereinstimmt, soll in einer Variabel der Spaltenname 'name' gespeichert werden - entsprechend auch wenn es einen Treffer bei den anderen zu durchsuchenden Spalten gibt.

Wenn es z.B. Treffer in den Spalten 'name', 'bez' und 'ort' gibt, dann soll in meiner Variable stehen $var_spalte="name,bez,ort" (oder das Ganze als Array).

Danke für Eure Hilfe,
Niko

  1. hi Niko,

    Wie kann ich mir die Spaltenbezeichung bei einem Treffer ausgeben lassen. D.h. wenn der Suchbegriff mit einem Wort in der Spalte
    'name' übereinstimmt, soll in einer Variabel der Spaltenname 'name' gespeichert werden - entsprechend auch wenn es einen Treffer bei den anderen zu durchsuchenden Spalten gibt.

    Wenn es z.B. Treffer in den Spalten 'name', 'bez' und 'ort' gibt, dann soll in meiner Variable stehen $var_spalte="name,bez,ort" (oder das Ganze als Array).

    ich bin mir nicht ganz sicher, ob ich deine frage richtig verstanden habe. aber ich würde als erstes ein assoziatives array bilden, das sich aus den spaltennamen der tabelle "verzeichnis" zusammen setzt und die werte alle mit 0 initialisieren, sagen wir:

    $columns=mysql_num_fields($result);
    for ($move=0; $move < $columns; $move++)
        mein_array[mysql_field_name($result, $move)]=0;

    dann würde ich das ergebnis deiner abfrage durchlaufen lassen. für jede ergebnisreihe würde ich spalte für spalte mit den suchbegriff vergleichen und bei einem treffer das entsprechende array um einen treffer erhöhen oder auf eins setzen, falls es dir nicht um die genaue anzahl der trefffer geht.

    Ilja

    1. hi Niko,

      ich bin es nochmal. ich hätte da noch einen anderen vroschlag. die erste version ist ein wenig umständlich. erst suchst du alle datensätze raus, in denen der suchbegriff vorkommt und dann vergleicht du das ergebnis nochmal feld für feld. das sind zwei suchen auf einmal. vielleicht ist es besser, die abfrage aufzuteilen, spriche jede spalte einzeln nach dem vorhandensein abzusuchen. dann sind treffer auch sofort der richtigen spalte zuzuordnen. nachteil ist, das es mehrere abfragen sind.

      Ilja