Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish am 19.06.06 12:12

moin. ich habe ein problem:

ich will beim auslesen aus der datenbank einige datensätze herausfiltern, und zwar solche, die einen bestimmten namen enthalten. natürlich funktionierts nicht. was mache ich falsch?

die filter-fuktion:
$filter = array('fishnation', 'bierquartier');
function filter($text) {
global $filter;
foreach($filter as $b) {
$text = "wrong";
}
return $text;
}


und da lese ich aus:
//anzeige der datensätze
while($row = mysql_fetch_object($ergebnis_referrer)){

if (filter($row->referrer) == "wrong"){
echo"<b>f</b> ".$row->referrer."-<br>";
}
else {
echo"
<tr id=\"admin_ergebnisse_content\">
<td id=\"tabelle\"><a href=\"".$row->referrer."\" target=\"_blank\">".vorschautext($row->referrer, 250, 15)."</a></td>
<td id=\"tabelle\">".$row->anzahl."</td>
</tr>
";
}
}

netcup.de Warum gibt es hier Werbung?
Sven Sven am 19.06.06 13:06

Du kannst in deinem Query ganz easy per WHERE das ganze direkt machen.

Btw. hab nen kleines problem mit der BBCode funktion, bin aber noch dran.

milahu milahu am 19.06.06 13:33

--> MySQL Pattern Matching

Als regulären Ausdruck dann einfach "suchwort 1|suchwort2|suchwort 3" nehmen, Ist zwar nicht
sonderlich performant, aber mir fällt momentan nix besseres ein.

...oder ist die Volltextsuche hier vielleicht eher angebracht?
Performance Gurus and die Front! :D

fish fish am 19.06.06 13:49

und wenn ihr mir jetzt kurz noch euer geballtes wissen anhand eines für mich verständlichen besipieles demonstrieren könntet, dass wäre alles super.

milahu milahu am 19.06.06 14:07

Öhm, kannst du kein Englisch..? :>

$qry = 'select from a where b regexp \''.implode('|', $suchwoerter).'\'';

fish fish am 19.06.06 14:14

ich habe auf der seite nix gefunden, dass kriterien ausschliesst, zumindest nicht in den bunten großen und leicht zu überfliegenden beispielen :D

danke.

fish fish am 19.06.06 14:29

guten tag nochmal
dieser code produziert folgende super felhermeldung:

mysql_fetch_object(): supplied argument is not a valid MySQL result resource


$filter = "fishnation|bierquartier";
//auswahl der tabelle 20_ebene_1
$abfrage_referrer = "SELECT * FROM `20_referrer` WHERE `referrer` regxp \'".implode('|', $filter)."\' ORDER BY `anzahl` DESC";
$ergebnis_referrer = mysql_query($abfrage_referrer);


die tabellennamen stimmen soweit was ist mein fehler.

milahu milahu am 19.06.06 14:44

mysql_query(...) or die(mysql_error());

fish fish am 19.06.06 14:55

Warning: implode(): Bad arguments. in /www/htdocs/thefish/admin/referer.php on line 18
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'regxp \'\' ORDER BY `anzahl` DESC' at line 1

milahu milahu am 19.06.06 15:13

$filter muss ein Array sein und die Anführungszeichen gehören nicht escaped.

fish fish am 19.06.06 15:28

$filter = array('fishnation', 'bierquartier');
//auswahl der tabelle 20_ebene_1
$abfrage_referrer = "SELECT * FROM `20_referrer` WHERE `referrer` regxp '".implode('|', $filter)."' ORDER BY `anzahl` DESC";
$ergebnis_referrer = mysql_query($abfrage_referrer) or die(mysql_error());


sorry wen ich euch in irgenteiner art und weise auf den geist gehe, aber ich bin halt noch ein ziemlicher anfänger....

milahu milahu am 19.06.06 15:43

Geht also nicht..? ;)
Mach mal aus "regxp" "regexp", dann sollte das gehn. Ansonsten bitte Fehlermeldung(en) dazu.

fish fish am 19.06.06 16:01

hm jetzt kommt zuwar keine fehlermeldung.aber leider bekomme ich trotzen ergebisse wie
fish.bierquartier.de/

angezeigt.

sollte doch eigentlich jetzt unterbunden seinoder nicht?

milahu milahu am 19.06.06 16:18

> sollte doch eigentlich jetzt unterbunden seinoder nicht?
Wieso denn? Ist doch "bierquartier" drin.. Oder willst du beide Suchbegriffe drinhaben?

fish fish am 19.06.06 16:30

also eigentlich dürfte ein eintrag der "fish.bierquartier" jetzt nicht mehr angezeigt werden. er wird aber angezeigt :(

edit
soo.. habs jetzt:
$abfrage_referrer = "SELECT * FROM `20_referrer` WHERE `referrer` NOT LIKE '%fish.bierquartier%' AND `referrer` NOT LIKE '%fishnation%' AND `referrer` NOT LIKE '' ORDER BY `anzahl` DESC";

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt