﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	blockedby	blocking
1417	Status-Filter in /admin/..../customers_listing.php nicht richtig	noRiddle	somebody	"In ''/admin/includes/modules/customers_listing.php'' gibt es folgenden Code:

{{{
if (isset($_GET['status']) && ($_GET['status'] != '100' || $_GET['status'] == '0')) {
    $status = xtc_db_prepare_input($_GET['status']);
    $search = ""AND c.customers_status = '"".$status.""'"";
}
}}}

Das

{{{
|| $_GET['status'] == '0'
}}}

erschließt sich mir nicht.

Da ""Bitte wählen Sie"" einen leeren value hat

{{{
value=''
}}}

müsste die if-Clause nach meiner Meinung so aussehen:

{{{
if (isset($_GET['status']) && $_GET['status'] != '100' && $_GET['status'] != '') {
}}}

Der Code wie er jetzt noch ist hat zur Folge, daß nach Wahl eines Status und Zurückstellen auf ""Bitte wählen Sie"" nur Admins angezeigt werden, was verwirrend ist.
Nur Admins weil der Wert 0 (= Admin-Status) in einem INT-Feld in der DB verglichen mit irgendeinem String (auch einem leeren) true ergibt (es sei denn der String ist als INT vorhanden).
Man sollte vielleicht das ''xtc_db_prepare_input()'' (wofür überhaupt ''stripslashes'' hier ?) entfernen, das ganze zu INT casten und die ""single quotes"" weglassen:

{{{
if (isset($_GET['status']) && $_GET['status'] != '100' && $_GET['status'] != '') {
    $status = (int)$_GET['status'];
    $search = ""AND c.customers_status = "".$status;
}
}}}

Es kann ohnehin sein, daß in zukünftigen mySQL-Versionen das Vergleichen von Strings mit einem Wert in einem INT-Feld in der DB nicht mehr funktioniert.




Gruß,
noRiddle

"	Bug/Fehler	closed	normal	modified-shop-2.0.5.0	Admin	2.0.3.0	fixed				
