Pagina 1 di 1
Filter special offer by category e QUERY B2B
Inviato: 29/10/2010, 11:03
da giammi73
ciao chi mi da una mano a integrarle?
Quesri originale
Codice: Seleziona tutto
//TotalB2B start
if (!isset($customer_id)) $customer_id = 0;
$customer_group = tep_get_customers_groups_id();
$specials_query_raw = "select DISTINCT p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image,s.specials_new_products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_SPECIALS . " s where p.products_status = '1' and s.products_id = p.products_id and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and s.status = '1' and ((s.customers_id = '" . $customer_id . "' and s.customers_groups_id = '0') or (s.customers_id = '0' and s.customers_groups_id = '" . $customer_group . "') or (s.customers_id = '0' and s.customers_groups_id = '0')) order by s.specials_date_added DESC";
//TotalB2B end
$specials_split = new splitPageResults($specials_query_raw, MAX_DISPLAY_SPECIAL_PRODUCTS);
if (($specials_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '2'))) {
e quella della contrib Filter special offer by category
Codice: Seleziona tutto
$specials_query_raw = "select p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_SPECIALS . " s, " . TABLE_CATEGORIES . " c where p2c.categories_id = c.categories_id and p.products_status = '1' and p.products_quantity > 0 and p.products_id = p2c.products_id and s.products_id = p.products_id and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and s.status = '1'";
if($categories_id > 0)
$specials_query_raw .= " and p2c.categories_id in (".tep_get_categories_ids($categories_id).$categories_id.")";
$specials_query_raw .= " order by p2c.categories_id, s.specials_date_added DESC";
chi riesce a integrarle?
granzie
Re: Filter special offer by category e QUERY B2B
Inviato: 29/10/2010, 12:02
da dynamo
dovrebbe funzionare
Codice: Seleziona tutto
$specials_query_raw = "select DISTINCT p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_SPECIALS . " s, " . TABLE_CATEGORIES . " c where p.products_status = '1' and pd.language_id = '" . (int)$languages_id . "' and s.status = '1' and s.products_id = p.products_id and p.products_id = pd.products_id and ((s.customers_id = '" . $customer_id . "' and s.customers_groups_id = '0') or (s.customers_id = '0' and s.customers_groups_id = '" . $customer_group . "') or (s.customers_id = '0' and s.customers_groups_id = '0')) and p2c.categories_id = c.categories_id and p.products_quantity > 0 and p.products_id = p2c.products_id ";
if($categories_id > 0)
$specials_query_raw .= " and p2c.categories_id in (".tep_get_categories_ids($categories_id).$categories_id.")";
$specials_query_raw .= " order by p2c.categories_id, s.specials_date_added DESC";
Re: Filter special offer by category e QUERY B2B
Inviato: 03/11/2010, 20:03
da giammi73
mi da questo errore
Codice: Seleziona tutto
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 p.products_quantity > 0 and p.products_id = p2c.products_id' at line 1
select count(*) as total from products p, products_description pd, products_to_categories p2c, specials s, categories c where p.products_status = '1' and pd.language_id = '4' and s.status = '1' and s.products_id = p.products_id and p.products_id = pd.products_id and ((s.customers_id = '0' and s.customers_groups_id = '0') or (s.customers_id = '0' and s.customers_groups_id = '') or (s.customers_id = '0' and s.customers_groups_id = '0')) and p2c.categories_id = c.categories_id and and p.products_quantity > 0 and p.products_id = p2c.products_id
Re: Filter special offer by category e QUERY B2B
Inviato: 04/11/2010, 0:53
da dynamo
tralasciando che quello che hai postato tu non è il codice che ti ho dato io
un minimo di conoscenze di sql le devi avere se vuoi modificare qualcosa in osc e anche saper riconoscere gli errori non sarebbe una brutta cosa...
prima di
Codice: Seleziona tutto
p.products_quantity > 0 and p.products_id = p2c.products_id p.products_quantity > 0 and p.products_id = p2c.products_id
hai 2 "and" eliminane uno
Re: Filter special offer by category e QUERY B2B
Inviato: 04/11/2010, 10:19
da giammi73
risolta una cosa ne esce un' altra...
Codice: Seleziona tutto
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 '-12, 12' at line 1
select DISTINCT p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from products p, products_description pd, products_to_categories p2c, specials s, categories c where p.products_status = '1' and pd.language_id = '4' and s.status = '1' and s.products_id = p.products_id and p.products_id = pd.products_id and ((s.customers_id = '0' and s.customers_groups_id = '0') or (s.customers_id = '0' and s.customers_groups_id = '') or (s.customers_id = '0' and s.customers_groups_id = '0')) and p2c.categories_id = c.categories_id and p.products_quantity > 0 and p.products_id = p2c.products_id order by p2c.categories_id, s.specials_date_added DESC limit -12, 12
[TEP STOP]
Re: Filter special offer by category e QUERY B2B
Inviato: 04/11/2010, 11:19
da dynamo
leggiti qualche guida sul mysql perchè lì hai sbagliato ad impostare i valori per "limit"
Re: Filter special offer by category e QUERY B2B
Inviato: 04/11/2010, 11:24
da giammi73
scusa
ma ......
una cosa...
prima scaghi una query e dici che ho sbagliato io...
poi mi dici di leggermi una guida a mysql....
dopo che la query che hai fatto non funge....
leggitela pure tu la guida ...
che non mi sembri molto capace di dare aiuti..
e fai pure il fenomeno
mah....
Re: Filter special offer by category e QUERY B2B
Inviato: 04/11/2010, 13:56
da dynamo
giammi73 ha scritto:scusa
ma ......
una cosa...
prima scaghi una query e dici che ho sbagliato io...
poi mi dici di leggermi una guida a mysql....
dopo che la query che hai fatto non funge....
leggitela pure tu la guida ...
che non mi sembri molto capace di dare aiuti..
e fai pure il fenomeno
mah....
o.O
andiamo con ordine... posti 2 query e chiedi di unirtele... e te l'ho fatto...
poi posti un'altra query dicendo che c'è un errore, te lo risolvo e ti faccio notare che la query dove hai l'errore non è quella che ti ho postato io... da come scrivevi sembrava che fosse la stessa e che avessi sbagliato io a farti la query (possibile)
infine posti un'altra query ancora sempre diversa, io ti dico che leggerti una guida sql dopo la tua 3° richiesta d'aiuto sempre sul discorso sql (e visto che oscommerce si basa sull'sql e DEVI impararlo per farti le modifiche che vuoi) mi vieni a dire che non sono bravo ad aiutarti???
allora facciamo così mi PAGHI e ti risolvo tutti i tuoi problemi
ora per venire al tuo problema... la voce "limit" non accoglie valori negativi quindi non puoi fare -12,12
leggi qui per altre info
http://www.parlandosparlando.com/view.p ... /whoisit_1
Re: Filter special offer by category e QUERY B2B
Inviato: 05/11/2010, 12:11
da giammi73
SCUSA ma a me sembra che l'errore che imputavi a me..
dynamo ha scritto:dovrebbe funzionare
$specials_query_raw = "select DISTINCT p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_SPECIALS . " s, " . TABLE_CATEGORIES . " c where p.products_status = '1' and pd.language_id = '" . (int)$languages_id . "' and s.status = '1' and s.products_id = p.products_id and p.products_id = pd.products_id and ((s.customers_id = '" . $customer_id . "' and s.customers_groups_id = '0') or (s.customers_id = '0' and s.customers_groups_id = '" . $customer_group . "') or (s.customers_id = '0' and s.customers_groups_id = '0')) and p2c.categories_id = c.categories_id and and p.products_quantity > 0 and p.products_id = p2c.products_id ";
if($categories_id > 0)
$specials_query_raw .= " and p2c.categories_id in (".tep_get_categories_ids($categories_id).$categories_id.")";
$specials_query_raw .= " order by p2c.categories_id, s.specials_date_added DESC";
o sono io che non ho capito quello che scrivi?
poi io ti pagherei pure...
ma come dire
se il risultato e' una query che non funge posso pagarti coi soldi del monopoli?
Re: Filter special offer by category e QUERY B2B
Inviato: 05/11/2010, 12:31
da giammi73
la query che crea quel valore negativo e' questa..
$specials_split = new splitPageResults($specials_query_raw, MAX_DISPLAY_SPECIAL_PRODUCTS);
ma probabilmente il problema deriva da
$specials_query_raw
cioe' la query che ha fatto tu..
perche anche se levo il max display e metto un numero mi duplica il numero con un valore negativo e uno positivo...
Re: Filter special offer by category e QUERY B2B
Inviato: 05/11/2010, 13:03
da dynamo
allora... discorso "and and"
riconosco che nel tagli e incolla ho scritto due and... però tu non hai postato la stessa query che ti ho fatto io
come faccio a sapere che è la mia???
la mia inizia con
Codice: Seleziona tutto
$specials_query_raw = "select DISTINCT p.products_id, pd.products_name,
quella postata da te con
sono due cose differenti
ora veniamo al problema "limit"
sicuro che hai postato tutto il codice della contrib Filter special offer by category ???
non dice nulla sullo split???
hai mantenuto
Codice: Seleziona tutto
if (!isset($customer_id)) $customer_id = 0;
$customer_group = tep_get_customers_groups_id();
prima di scrivere la query?
e tra le altre cose...
nel file catalog/includes/classes/split_page_results.php
assicurati che sia uguale a questo codice
Codice: Seleziona tutto
function splitPageResults($query, $max_rows, $count_key = '*', $page_holder = 'page') {
global $HTTP_GET_VARS, $HTTP_POST_VARS;
$this->sql_query = $query;
$this->page_name = $page_holder;
if (isset($HTTP_GET_VARS[$page_holder])) {
$page = $HTTP_GET_VARS[$page_holder];
} elseif (isset($HTTP_POST_VARS[$page_holder])) {
$page = $HTTP_POST_VARS[$page_holder];
} else {
$page = '';
}
if (empty($page) || !is_numeric($page)) $page = 1;
$this->current_page_number = $page;
$this->number_of_rows_per_page = $max_rows;
$pos_to = strlen($this->sql_query);
$pos_from = strpos($this->sql_query, ' from', 0);
$pos_group_by = strpos($this->sql_query, ' group by', $pos_from);
if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by;
$pos_having = strpos($this->sql_query, ' having', $pos_from);
if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having;
$pos_order_by = strpos($this->sql_query, ' order by', $pos_from);
if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by;
if (strpos($this->sql_query, 'distinct') || strpos($this->sql_query, 'group by')) {
$count_string = 'distinct ' . tep_db_input($count_key);
} else {
$count_string = tep_db_input($count_key);
}
$count_query = tep_db_query("select count(" . $count_string . ") as total " . substr($this->sql_query, $pos_from, ($pos_to - $pos_from)));
$count = tep_db_fetch_array($count_query);
$this->number_of_rows = $count['total'];
$this->number_of_pages = ceil($this->number_of_rows / $this->number_of_rows_per_page);
if ($this->current_page_number > $this->number_of_pages) {
$this->current_page_number = $this->number_of_pages;
}
$offset = ($this->number_of_rows_per_page * ($this->current_page_number - 1));
$this->sql_query .= " limit " . max($offset, 0) . ", " . $this->number_of_rows_per_page;
}
perchè sembrerebbe che a te non "funzioni" questa ultima riga
Codice: Seleziona tutto
$this->sql_query .= " limit " . max($offset, 0) . ", " . $this->number_of_rows_per_page;
che non fa altro che impostare il limit da 0 al valore che hai impostato te in admin...