Inhalt in MySQL durchsuchen

Da ich unsere Linkliste ein wenig auffrische, möchte ich dort gerne eine Suchfunktion einbauen. In etwa soll das ganze so funktionieren, dass es im jeweiligen Link sucht, ob in $data[‚name‘] der Suchbegriff enthalten ist - per Schleife geht es die Links durch und wenn der Suchbegriff nicht existiert sollte eine Meldung erscheinen.

GROSS/klein Schreibung sollte keine Rolle spielen im Suchbegriff und auch sollte sinnvoll gesucht werden, also wenn dies der Suchbegriff ist: wort zahl haus - dann sollte nicht nach der Abfolge „wort zahl haus“ geuscht werden, sondern ob die Wörter wort, zahl und haus enthalten sind. Ich habe jedoch keine Ahnung wie ich das realisiere ausser der Schleife.

Kann mir jemand weiterhelfen?

Vielen Dank schonmal.
MFG

Edit: Achja, vielleicht hilft es wenn sich jemand mit MyBB auskennt, dass ich MyBB verwende - kann man da irgendwie das Plugin hook_finder verwenden? oder ist das nur für die memberlist.php

WHERE (name LIKE ‚%suchbegriff%‘)

Hm… Das sieht mir jedoch nach MySQL aus - ich habe jedoch den Text, der durchsucht werden soll bereits als Variable in PHP.
Auch kann ich mit meinem Bescheidenen Wissen in PHP und vor allem MySQL herzlich wenig damit anfang :frowning: (Will ja net stressen, aber… :slight_smile: )

Aber vielen Dank schonmal.

MFG

Deine Überschrift heißt „Inhalt in MySQL durchsuchen“…

Zerlege die Sucheingabe mit split() in ein Array und durchsuche dann mit jedem Array-Element den Inhalt mit substr_count().

Gibt substr_count() einen Wert größer als 0 zurück, so weisst du die Suche war in dem entsprechenden Inhalt erfolgreich.

@creativ webdesigns:
Ja, sorry, ich wusste selber nicht genau wie ich das Problem beschreiben soll. Ursprünglich kommen die Daten aus einer Datenbank. :slight_smile:

@vitus:
Ich werd das mal versuchen und mich wieder melden. Jedoch steht bei der Funktion split() dass die Funktion veraltet ist. Kann ich diese trotzdem verwenden? Verwirrt mich jetzt nur gerade… :slight_smile:

Vielen Dank schonmal.
MFG

Habe split() selbst noch nicht verwendet, weiss also nichts davon, dass es veraltet ist, habs aber schon öfters gesehen.

ich denke die Funktion erfüllt seinen zweck, ansonsten Google mal nach einer Alternative. :slight_smile:

[SIZE=2]also nach einigen Missverständissen habe ich folgenden Code geschrieben.
[/SIZE][SIZE=3][SIZE=2]
Nun weiss ich jedoch überhaupt nicht mehr weiter.

[CODE]<?php

$suchbegriff = „Haus Baum“;
$begriffe = explode(" ", $suchbegriff); // splitet den suchbegriff in Wörter

$id = array();
$id = „1“;
$id = „2“;
$id = „3“;

$db = array();
$db = „fdhh“;
$db = „Baum Haus“;
$db = „Haus dsdf“;

foreach ($db as $erg) { //geht die einzelnen Einträge in der db durch

foreach ($begriffe as $suchwort) {//geht die Suchbegriffe durch
    

        $ergebnis .= substr_count($erg, $suchwort); // vergleicht Wörter und gibt true oder false aus

}

}

echo $ergebnis;

?>[/CODE]Jedoch gibt das immernoch nur Zahlen aus.
Könnt ihr mir nochmals weiterhelfen?

irgendwie müsste ich die Nummer des arrays von $db verwenden können, dann könnte ich mir vorstellen, dass ich ein wenig weiterkommen könnte. Doch ich habe da ebenfalls keine Ahnung wie…

Vielen Dank
[/SIZE] [/SIZE]

Du musst prüfen, ob das $suchwort in $erg öfter als einmal vorkommt und kannst dann den Text aus der DB ausgeben:
[PHP]<?php

$suchbegriff = „Haus Baum“;
$begriffe = explode(" ", $suchbegriff); // splitet den suchbegriff in Wörter

$id = array();
$id = „1“;
$id = „2“;
$id = „3“;

$db = array();
$db = „fdhh“;
$db = „Baum Haus“;
$db = „Haus dsdf“;

foreach ($db as $erg) { //geht die einzelnen Einträge in der db durch

foreach ($begriffe as $suchwort) {//geht die Suchbegriffe durch
    
        // Prüfung, ob Suchwort mehr als 0 mal vorkommt
        if(substr_count($erg, $suchwort) > 0){
            // Wenn ja, dann Textausgabe
            echo $erg;

        }

}

}
?>[/PHP]

Das dürfte den Text ausgeben.

Hmm… Das bringt leider noch weitere Probleme und ist auch nicht die (gesamte?) Lösung des Problems. Ich müsste aber eigentlich auch mehr erklären, damit für euch klar wird, was ich alles will. Doch mir brummt der Kopf im Moment so dass ich selber nicht mehr weiss auf was es alles ankommt…

Auf jeden Fall muss ich eine Suche für ClubFreeware - Linkliste erstellen um diese durchsuchen zu können.

Ich werd mir das Ganze nochmals durch den Kopf gehen lassen - vielleicht komme ich wieder ein paar Schritte weiter oder sonst melde ich mich hier nochmals.

Vielen Dank für die vielen nützlichen Tipps bis jetzt. Hat mir sehr geholfen.

MFG

Also, ich weiss jetzt konkret weshalb dein Code vitus37 nicht klappt. Der Script geht ja alle Beiträge in der db durch und dann noch alle Suchwörter. So wird für jedes gefundene Wort $erg ausgegeben und nicht, wenn beide Wörter im Ergebis vorhanden ist. Lässt sich das beheben und dann auch nach relevanz suchen (also dass nach den Ergebnissen mit allen Einträgen die kommen mit 1 weniger usw.)?

MFG

wieso so kompliziert??
Wenn du es in einer Variable schon hast nutz halt strpos()?

[PHP]

<?php $var_text = "Das ist ein kurzer Test Text"; $var_suche = "Test"; $pos = strpos($var_text, $var_suche); if($pos === false){ echo "Nicht Vorhanden!"; }else{ echo "Vorhanden!"; } ?>

[/PHP]