Willkommen in der Webstatt
User-1 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('xyz-70nation', '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?
User-2 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.

User-3 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

User-1 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.

User-3 am 19.06.06 14:07

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

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

User-1 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.

User-1 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 = "xyz-70nation|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.

User-3 am 19.06.06 14:44

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

User-1 am 19.06.06 14:55

Warning: implode(): Bad arguments. in /www/htdocs/thexyz-70/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

User-3 am 19.06.06 15:13

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

User-1 am 19.06.06 15:28

$filter = array('xyz-70nation', '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....

User-3 am 19.06.06 15:43

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

User-1 am 19.06.06 16:01

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

angezeigt.

sollte doch eigentlich jetzt unterbunden seinoder nicht?

User-3 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?

User-1 am 19.06.06 16:30

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

edit
soo.. habs jetzt:
$abfrage_referrer = "SELECT * FROM `20_referrer` WHERE `referrer` NOT LIKE '%xyz-70.bierquartier%' AND `referrer` NOT LIKE '%xyz-70nation%' 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