Hallo Franky,
danke für diese super Erweiterung. Leider läuft es bei eingebautem Live Shopping nicht richtig.
Suche ich etwas, das nicht im Live Shopping ist läuft alles tadellos. Kommt aber ein Suchbegriff der auch als Live Shopping vorhanden ist erhalte ich folgende Fehlermeldung:
1064 - 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 'and ) GROUP BY p.products_id ORDER BY p.products_sort, pd.products_name ASC ( p' at line 17
SELECT DISTINCT p.live_shopping, p.products_tax_class_id, p.products_id, pd.products_name, p.products_sort, p.products_quantity, p.products_image, p.products_model, p.products_price, p.products_discount_allowed, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p.products_startpage, p.products_startpage_sort, p2c.categories_id FROM products AS p LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) LEFT JOIN products_to_categories AS p2c ON (p.products_id = p2c.products_id) LEFT OUTER JOIN products_attributes AS pa ON (p.products_id = pa.products_id) LEFT OUTER JOIN products_options_values AS pov ON (pa.options_values_id = pov.products_options_values_id) LEFT OUTER JOIN specials AS s ON (p.products_id = s.products_id) AND s.status = '1' WHERE p.products_status = '1' AND pd.language_id = '2' AND ( ( pd.products_keywords LIKE ('%testartikel%') OR pd.products_name LIKE ('%testartikel%') OR p.products_model LIKE ('%testartikel%') OR pa.attributes_model LIKE ('%testartikel%') OR (pov.products_options_values_name LIKE ('%testartikel%') AND pov.language_id = '2') ) ) GROUP BY p.products_id ORDER BY p.products_sort, pd.products_name ASC AND ) GROUP BY p.products_id ORDER BY p.products_sort, pd.products_name ASC ( pd.products_keywords LIKE ('%1%') OR pd.products_name LIKE ('%1%') OR p.products_model LIKE ('%1%') OR pa.attributes_model LIKE ('%1%') OR (pov.products_options_values_name LIKE ('%1%') AND pov.language_id = '2') ) ) GROUP BY p.products_id ORDER BY p.products_sort, pd.products_name ASC
Habe, wie auch in der Einbauanleitung des Live Shopping Modules, die Datenbankabfrae in die Erweiterung eingebaut
original:
$products_query = xtc_db_query("
SELECT
p.live_shopping,
p.products_tax_class_id,
p.products_id,
pd.products_name,
p.products_sort,
p.products_quantity,
p.products_image,
-- BOF - Tomcraft - 2009-12-03 - show model-number upon search for products
p.products_model,
-- EOF - Tomcraft - 2009-12-03 - show model-number upon search for products
p.products_price,
p.products_discount_allowed,
p.products_date_added,
p.products_last_modified,
p.products_date_available,
p.products_status,
p.products_startpage,
p.products_startpage_sort,
p2c.categories_id FROM " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c
WHERE p.products_id = pd.products_id AND pd.language_id = '" . (int)$_SESSION['languages_id'] . "' AND
p.products_id = p2c.products_id AND (pd.products_name like '%" . xtc_db_prepare_input($_GET['search']) . "%' OR "
// BOF - web28 - 2010-04-10 - change for ADMIN SEARCH BAR
// p.products_model = '" . $_GET['search'] . "') ORDER BY " . $prodsort);
. "p.products_model like '%" . xtc_db_prepare_input($_GET['search']) . "%') ORDER BY " . $prodsort);
//EOF - web28 - 2010-04-10 - change for ADMIN SEARCH BAR
nach Einbau Deiner Erweiterung:
include("../inc/xtc_parse_search_string.inc.php"); define(ADMIN_SEARCH_IN_ATTR
, true); // true = search in attributes define(ADMIN_SEARCH_IN_DESC
, false); // true = search in description //build query $select_str = "SELECT DISTINCT p.live_shopping,
p.products_tax_class_id,
p.products_id,
pd.products_name,
p.products_sort,
p.products_quantity,
p.products_image,
p.products_model,
p.products_price,
p.products_discount_allowed,
p.products_date_added,
p.products_last_modified,
p.products_date_available,
p.products_status,
p.products_startpage,
p.products_startpage_sort,
p2c.categories_id "; $from_str = "FROM ".TABLE_PRODUCTS
." AS p "; $from_str .= "LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION
." AS pd ON (p.products_id = pd.products_id) "; $from_str .= "LEFT JOIN ".TABLE_PRODUCTS_TO_CATEGORIES
." AS p2c ON (p.products_id = p2c.products_id) "; if (ADMIN_SEARCH_IN_ATTR
== 'true') { $from_str .= "LEFT OUTER JOIN ".TABLE_PRODUCTS_ATTRIBUTES
." AS pa ON (p.products_id = pa.products_id) "; $from_str .= "LEFT OUTER JOIN ".TABLE_PRODUCTS_OPTIONS_VALUES
." AS pov ON (pa.options_values_id = pov.products_options_values_id) "; } $from_str .= "LEFT OUTER JOIN ".TABLE_SPECIALS
." AS s ON (p.products_id = s.products_id) AND s.status = '1'"; //where-string $where_str = " WHERE p.products_status = '1' "." AND pd.language_id = '".(int
) $_SESSION['languages_id']."'"; //go for keywords... this is the main search process if (isset ($_GET['search']) && xtc_not_null
($_GET['search'])) { if (xtc_parse_search_string
(stripslashes($_GET['search']), $search_keywords)) { $where_str .= " AND ( "; for ($i = 0, $n = sizeof($search_keywords); $i < $n; $i ++) { switch ($search_keywords[$i]) { case '(' : case ')' : case 'and' : case 'or' : $where_str .= " ".$search_keywords[$i]." "; break; default : $ent_keyword = htmlentities($search_keywords[$i]); $ent_keyword = ($ent_keyword != $search_keywords[$i]) ?
addslashes($ent_keyword) : false; $keyword = addslashes($search_keywords[$i]); $where_str .= " ( "; $where_str .= "pd.products_keywords LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pd.products_keywords LIKE ('%".$ent_keyword."%') " : ''; if (ADMIN_SEARCH_IN_DESC
== 'true') { $where_str .= "OR pd.products_description LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pd.products_description LIKE ('%".$ent_keyword."%') " : ''; $where_str .= "OR pd.products_short_description LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pd.products_short_description LIKE ('%".$ent_keyword."%') " : ''; } $where_str .= "OR pd.products_name LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pd.products_name LIKE ('%".$ent_keyword."%') " : ''; $where_str .= "OR p.products_model LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR p.products_model LIKE ('%".$ent_keyword."%') " : ''; if (ADMIN_SEARCH_IN_ATTR
== 'true') { $where_str .= "OR pa.attributes_model LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pa.attributes_model LIKE ('%".$ent_keyword."%') " : ''; $where_str .= "OR (pov.products_options_values_name LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pov.products_options_values_name LIKE ('%".$ent_keyword."%') " : ''; $where_str .= "AND pov.language_id = '".(int
) $_SESSION['languages_id']."')"; } $where_str .= " ) "; break; } $where_str .= " ) GROUP BY p.products_id ORDER BY " . $prodsort; } } } //glue together $listing_sql = $select_str.$from_str.$where_str; $products_query = xtc_db_query
($listing_sql); Kannst Du mir bitte helfen?
Danke
Gerd