Webstatt.org - Community seit 2006 - 2012 (2024?)

nur bestimmte datensätze auslesen /filtern

Avatar user-180
19.06.2006 10: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'zwinkern;
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"zwinkern{
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>
";
}
}

may the force be with you. but mostly with me.
Avatar user-317
19.06.2006 11: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.

Avatar user-255
19.06.2006 11: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! Fettes Grinsen

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-180
19.06.2006 11: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.

may the force be with you. but mostly with me.
Avatar user-255
19.06.2006 12:07

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

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-180
19.06.2006 12:14

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

danke.

may the force be with you. but mostly with me.
Avatar user-180
19.06.2006 12: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.

may the force be with you. but mostly with me.
Avatar user-255
19.06.2006 12:44

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-180
19.06.2006 12: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

may the force be with you. but mostly with me.
Avatar user-255
19.06.2006 13:13

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-180
19.06.2006 13:28

$filter = array('fishnation', 'bierquartier'zwinkern;
//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....

may the force be with you. but mostly with me.
Avatar user-255
19.06.2006 13:43

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-180
19.06.2006 14: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?

may the force be with you. but mostly with me.
Avatar user-255
19.06.2006 14:18

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-180
19.06.2006 14:30

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

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";

may the force be with you. but mostly with me.