Karegorie Filtern

faxemichel

Script Dealer
ID: 338482
L
7 Mai 2006
1.759
114
Hallo,

ich habe folgendes Problem. Ich möchte eine bestimmte Kategorie filter(ausschließen) aber das funktioniert leider nicht.Ich dachte an der filterClause. Habt Ihr eine Idee ?

PHP:
function getTemplateList($catIdxFilter='', $orderBy='postCount DESC', $offset=0, $count='') {
	global $tbl_template;
	
	if ($count != '') $count = ','.$count;
	$limtClause =  (($offset != 0) or ($count != '')) ? 'LIMIT '.$offset.$count : '';
	
	$filterClause = ($catIdxFilter != '') ? "WHERE `catIdx`=$catIdxFilter" : '';
	
	$orderKey = ($orderBy == '') ? 'postCount DESC' : $orderBy;
	
	$sqlQuery = sprintf("SELECT * FROM `$tbl_template` %s ORDER BY %s %s",
						mysql_real_escape_string($filterClause),
						mysql_real_escape_string($orderKey),
						mysql_real_escape_string($limtClause));
	$result = query($sqlQuery); 
	return $result;
}


Gruß Michael
 
du kannst nicht deinen ganzen WHERE-Ausdruck mit mysql_real_escape_string escapen, denn dann ist es ja kein SQL mehr, du darfst es nur auf die Filtervariablen bzw. dessen Werte anwenden.
 
Moin.

SELECT * ist böse ;)

Zum Problem: Wie sieht denn die Abfrage aus?
 
Hallo,

ich möchte die Userwünsche Filtern was halt auch eine Kategorie ist. Aber ich bekomme es nicht hin.

PHP:
$curCatIDx = isset($_REQUEST['cat']) ? $_REQUEST['cat'] : '';
$curPage = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1;
$templateListRes = getTemplateListStart($curCatIDx, '', ($curPage -1) * $templatePerUserPage, $templatePerUserPage+1);
//$curPicIdx = ($curPage -1)* $templatePerUserPage - 1;
for ($i=0; $i < $templatePerUserPage; $i++) {
	$row = mysql_fetch_array($templateListRes);
	if ($row) {
 
Was funktioniert denn nicht? Aus so einem kleinen Ausschnitt ist wenig zu erkennen und nachbauen möchte ich den Gruselcode auch nicht.

Eine Idee könnte sein:
  • $templatePerUserPage soll eine Seitenvorgabe sein, damit die Liste entsprechend lang wird. Hier ist also z.B. der Wert 10 gespeichert
  • Über $curPage soll der User sagen können, die wievielte Seite er angezeigt haben möchte, also z.B. der Wert 3
  • Diese beiden Variablen beeinflussen den dritten und vierten Parameter von getTemplateListStart()
  • Eigentlich müssten dann die Werte 21 und 30 übergeben werden. Das bezweifel ich aber. Nach deiner Variante würden dann ((3-1)*10 =) 20 und (10+1=)11 übergeben
  • In getTemplateListStart() werden diese beiden Parameter zu "LIMIT 20,11" verarbeitet.
 
Also. Wenn man bei mir auf die Startseite geht wird eine Auswahl aller Kategorien angezeigt. Jetzt möchte ich aber das Bilder von der Kategorie z.b Userwünsche nicht in der Auswahl mit dabei sind. Das bekomme ich nicht hin
 
Ich würde mich ja unter einer Kategorie genau das Gegenteil darstellen: Wenn ich sie anklicke, dann erscheint nur das dieser Kategorie und nicht alles andere als diese Kategorie..

Aber wenn dem so sein soll und wenn sich diese Kategorie dann als $catIdxFilter niederschlagen soll, dann verweise ich mal wieder auf meine erste Antwort.
PHP:
"WHERE `catIdx`<> '$catIdxFilter'"

Ansonsten habe ich immer noch nicht verstanden was das Problem sein soll...

Das bekomme ich nicht hin
Wenn das noch mal deine Antwort ist war das meine letzte! Was bekommst du nicht hin? Bekommst du Fehlermeldungen und wenn ja welche? Bekommst du SQL-Fehler und wenn ja welche? Funktioniert es an sich, aber du bekommst doch auch Ergebnisse die du nicht haben möchtest? ...