Fulltext Suche geht nicht!

Hi,
ich habe nun seit mehreren Wochen Probleme mit meiner Suchfunktion. Sie sucht einfach nicht.:mrgreen:

Ihr könnt sie gerne testen. Geht einfach auf Home | little-coder.de und sucht nach if im Header.

Es wird nicht funktionieren.

Das ist der PHP Code
[php]

<?php require_once 'inc/config.inc.php'; function performSearch(mysqli $db, $keywords, $category = 0, $inTitle = true, $inText = true) { /* Parameter validieren */ $keywords = trim($keywords); $category = (int) $category; $inTitle = (bool) $inTitle; $inText = (bool) $inText; $results = array(); /* Abbruchbedingungen */ if ($keywords == '') return array(); /* WHERE-Bedingungen zusammenstellen */ $conditions = array(); $fields = array(); if ($inTitle) $fields[] = 'name'; if ($inText) $fields[] = 'tutorial'; if (count($fields) == 0) $fields = array('name', 'tutorial'); $conditions[] = "MATCH (e.`" . implode("`, e.`", $fields) . "`) " . "AGAINST ('" . $db->real_escape_string($keywords) . "')"; if ($category > 0) { $conditions[] = "`kategorie` = '" . $db->real_escape_string($category) . "'"; } $wherePart = " WHERE " . implode(' AND ', $conditions); /* Query zusammenbauen */ $query = "SELECT e.`id`, e.`name`, e.`nameurl`, k.`id` AS `category_id`, k.`name` AS `category_name`, k.`name_url` AS `category_name_url` FROM `eintraege` e LEFT JOIN `kategorien` k ON e.`kategorie` = k.`id`"; if ($wherePart != '') { $query .= $wherePart; } $result = $db->query($query); while ($row = $result->fetch_assoc()) { $results[] = $row; } /* Rückgabe */ return $results; } $title = $_POST['key'].' - Suche'; include 'inc/header.inc.php'; $_POST['key'] = (isset($_POST['key'])) ? trim($_POST['key']) : ''; $_POST['cat'] = (isset($_POST['cat'])) ? (int) $_POST['cat'] : 0; $_POST['titel'] = (isset($_POST['titel'])) ? (bool) $_POST['titel'] : false; $_POST['text'] = (isset($_POST['text'])) ? (bool) $_POST['text'] : false; $results = performSearch($db, $_POST['key'], $_POST['cat'], $_POST['titel'], $_POST['text']); //$results = performSearch($db, $_POST['key'], 0, true, true); if (count($results) == 0) { echo '

Ihre Suche erzielte leider keinen Treffer

'; } else { echo ""; } include 'inc/footer.inc.php'; ?>

[/php]

Seht ihr einen Fehler?

MfG xXxPeterPanxXx

Sieht ja alles sehr geordnet aus :slight_smile: Schön schön.
Aber mal eine Frage. Hast du schon mal deinen kompletten Query-String mitgeloggt und mal getestet, ob dieser irgend welche Fehler enthält? (zum Beispiel in phpmyadmin als sql einfügen). Solltest du Datensätze zurück bekommen, so liegt der fehler schon einmal nicht an der Datenbank :slight_smile:

Der Query müsste stimmen.

Ich habe bei diesem Code:

SELECT
                    e.`id`,
                    e.`name`,
                    e.`nameurl`,
                    k.`id`   AS `category_id`,
                    k.`name` AS `category_name`,
                    k.`name_url` AS `category_name_url`
                FROM
                    `eintraege` e
                LEFT JOIN
                    `kategorien` k
                    ON
                        e.`kategorie` = k.`id`"

zwei Ergebnisse erhalten.

MfG xXxPeterPanxXx

Und wenn du results (innerhalb der Funktion) ausgeben lässt (var_dump oder print_r) gibt er nichts aus?

Nee gibt keine Ergebnisse zurück.:sad:

Kannst du bitte mal mit dem Query arbeiten, den du ganz am Ende kriegst?
in dieser zeile:
[PHP]
$result = $db->query($query);
[/PHP]

Lass dir in phpmyadmin damit mal die Daten ausgeben.
Wenn du damit was kriegst steckt der fehler in folgenden zeilen
[php]
while ($row = $result->fetch_assoc()) {
$results = $row;
}
[/php]

Und mal ne Frage. ist das $result = „blub“ sowas wie ein array push?
Ich mache das ganze nämlich immer über nen array push :slight_smile:

So der Fehler muss irgentwo im Datenbank Bereich seien, denn diese Query: SELECT e.id, e.name, e.nameurl, k.id AS category_id, k.name AS category_name, k.name_url AS category_name_url FROM eintraege e LEFT JOIN kategorien k ON e.kategorie = k.id WHERE MATCH (e.name, e.tutorial) AGAINST (‚faux‘) liefert kein Ergebniss.

Denn geneuen Grund habe ich nich leider nicht gefunden.

Mfg xXxPeterPanxXx

Tut mir Leid ich habe euch eine vllt wichtige Information geben. Ich arbeite mit mysqli. Ist dass den unter mysqli richtig?

Kann ich irgentwie noch Informationen geben?

MfG xXxPeterPanxXx

Fals es dir hilft, ich verwende meine Suche so:
[PHP] $befehl = „SELECT title, id FROM ".$tbl." WHERE text LIKE ? ORDER BY id DESC“;
$dbsuche = $db->prepare($befehl);
$dbsuche->bind_param(‚s‘, $strsuche);
$strsuche = „%“.$_GET[‚suche‘].„%“;
$dbsuche->execute();
$dbsuche->bind_result($title, $id);[/PHP]
Also nur LIKE %suche% und dann im while fetche ich das Ergebniss.

Mfg