L'errore genera un messaggio del tipo:
La causa è il codice seguente (riga 61 circa):"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 '-10, 10' at line 1
select 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, 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 = '5' and s.status = '1' order by s.specials_date_added DESC limit -10, 10"
Codice: Seleziona tutto
if ($this->current_page_number > $this->number_of_pages) {
$this->current_page_number = $this->number_of_pages;
}
La prima volta che il listing viene istanziato $this->current_page_number viene inizializzato ad 1. Se il numero di items è zero
$this->number_of_pages vale 0, per cui $this->current_page_number viene settato a 0.
La linea di codice successiva:
Codice: Seleziona tutto
$offset = ($this->number_of_rows_per_page * ($this->current_page_number - 1));
La soluzione è banale. Basta aggiungere un if di controllo, come segue:
Codice: Seleziona tutto
if ($this->number_of_pages > 0) {
if ($this->current_page_number > $this->number_of_pages) {
$this->current_page_number = $this->number_of_pages;
}
} else $this->current_page_number=1;
Un discorso del tutto analogo vale per la classe split lato admin.
Concludo segnalando anche la mancanza di un controllo di consistenza sulla variabile $max_rows, in altre parole valori nulli o negativi non vengono 'filtrati'.
Marcus