Antwort #99 am: 29. März 2011, 20:14:30
... wieder einen halben Schritt weiter aber eben nicht ganz ... wenn ich folgenden Code verwende werden die Artikel mit Allen filtern korrekt sortiert (name, preis, Bewertung Anzahl, Bewertung durchschnitt, ...), aber leider nur die Artikel die eine Bewertung haben ... andere werden nicht angezeigt
// sorting query $sorting_query = xtDBquery
("SELECT products_sorting,
products_sorting2 FROM " . TABLE_CATEGORIES
. "
where categories_id='" . $current_category_id . "'"); $sorting_data = xtc_db_fetch_array
($sorting_query, true); if (!$sorting_data['products_sorting']) $sorting_data['products_sorting'] = 'pd.products_name'; $sorting = 'GROUP BY p.products_id ORDER BY ' . $sorting_data['products_sorting'] . ' ' . $sorting_data['products_sorting2'] . ' '; //BEGIN Sorting Function TECHWAY if (isset($_GET['sort'])) { switch ((int
)$_GET['sort']) { case 1: $sorting = ' GROUP BY p.products_id ORDER BY pd.products_name ASC'; break; case 2: $sorting = ' GROUP BY p.products_id ORDER BY pd.products_name DESC'; break; case 3: $sorting = ' GROUP BY p.products_id ORDER BY order_price ASC'; break; case 4: $sorting = ' GROUP BY p.products_id ORDER BY order_price DESC'; break; case 5: $sorting = ' GROUP BY p.products_id ORDER BY p.products_date_added DESC'; break; case 6: $sorting = ' GROUP BY p.products_id ORDER BY p.products_date_added ASC'; break; case 7: $sorting = ' GROUP BY p.products_id ORDER BY p.products_ordered DESC'; break; case 8: $sorting = ' GROUP BY p.products_id ORDER BY m.manufacturers_name ASC'; break; case 9: $sorting = ' GROUP BY p.products_id ORDER BY m.manufacturers_name DESC'; break; case 10: $sorting = ' GROUP BY p.products_id ORDER BY count(r.products_id) DESC'; break; case 11: $sorting = ' GROUP BY p.products_id ORDER BY AVG(r.reviews_rating) DESC'; break; } } //END Sorting Function TECHWAY // We show them all if (GROUP_CHECK
== 'true') { $group_check = " and p.group_permission_" . $_SESSION['customers_status']['customers_status_id'] . "=1 "; } $cPathA = explode("_", $cPath); $size = sizeof($cPathA) - 1; $subcategories_array = array(); xtc_get_subcategories
($subcategories_array, $cPathA[$size]); //Subcat count $size_sc = sizeof($subcategories_array); $cat_Search = "("; for ($i = 0; $i <$size_sc; $i++) { $cat_Search .= "p2c.categories_id = '" . $subcategories_array[$i] . "' or "; } $cat_Search .= "p2c.categories_id = '" . $cPathA[$size] . "'" . ")"; $listing_sql = "select p.products_fsk18,
p.products_shippingtime,
p.products_model,
p.products_ean,
pd.products_name,
m.manufacturers_name,
p.products_quantity,
p.products_image,
p.products_weight,
pd.products_short_description,
pd.products_description,
p.products_id,
p.manufacturers_id,
p.products_price,
IFNULL(s.specials_new_products_price, p.products_price) AS order_price,
r.products_id, r.reviews_rating,
p.products_vpe,
p.products_vpe_status,
p.products_vpe_value,
p.products_discount_allowed,
p.products_tax_class_id
from " . TABLE_PRODUCTS_DESCRIPTION
. " pd, " . TABLE_PRODUCTS_TO_CATEGORIES
. " p2c, " . TABLE_PRODUCTS
. " p left join " . TABLE_MANUFACTURERS
. " m on p.manufacturers_id = m.manufacturers_id
left join " . TABLE_SPECIALS
. " s on p.products_id = s.products_id and s.status=1
left join " . TABLE_REVIEWS
. " r on p.products_id = r.products_id AND r.reviews_status=1
where p.products_status = '1'
and p.products_id = p2c.products_id
and p.products_id = r.products_id
and pd.products_id = p2c.products_id
" . $group_check . "
" . $fsk_lock . "
and pd.language_id = '" . (int
)$_SESSION['languages_id'] . "' and " . $cat_Search . "
" . $sorting; } } Ich hatte auch das Problem wenn ich das GROUP BY nicht reingemacht habe die Artikel so oft wie Bewertungen vorlagen angezeigt wurden (4 Bewertungen = 4 mal der gleiche Artikel drin). Artikel ohne Bewertungen werden so aber gar nicht angezeigt - kann mir bitte jemand (auch mit'm Holzhammer)
aufzeigen wo mein Denkfehler liegt?