Pagina 1 di 1

Problema prima installazione :(

Inviato: 03/01/2005, 3:32
da draghetto84
Ho un paio di errori che sono usciti dopo aver cancellato tutte le cose che non mi interessavano :

Produttori
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 '-20, 20' at line 1

select manufacturers_id, manufacturers_name, manufacturers_image, date_added, last_modified from manufacturers order by manufacturers_name limit -20, 20




Recensioni
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 '-20, 20' at line 1

select reviews_id, products_id, date_added, last_modified, reviews_rating from reviews order by date_added DESC limit -20, 20




Offerte
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 '-20, 20' at line 1

select p.products_id, pd.products_name, p.products_price, s.specials_id, s.specials_new_products_price, s.specials_date_added, s.specials_last_modified, s.expires_date, s.date_status_change, s.status from products p, specials s, products_description pd where p.products_id = pd.products_id and pd.language_id = '4' and p.products_id = s.products_id order by pd.products_name limit -20, 20




Prodotti in arrivo
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 '-20, 20' at line 1

select pd.products_id, pd.products_name, p.products_date_available from products_description pd, products p where p.products_id = pd.products_id and p.products_date_available != '' and pd.language_id = '4' order by p.products_date_available DESC limit -20, 20




Ordini
ID Ordine:
Stato:
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 '-20, 20' at line 1

select o.orders_id, o.customers_name, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total from orders o left join orders_total ot on (o.orders_id = ot.orders_id), orders_status s where o.orders_status = s.orders_status_id and s.language_id = '4' and ot.class = 'ot_total' order by o.orders_id DESC limit -20, 20







A parte questi errori, vorrei creare un account con pass per entrare nel pannello di controllo amministratore? Che contributes scarico?
Altra cosa, quando si comprano più pezzi per ogni articolo, vorrei mettere una funzione che ogni 10 pezzi fa uno sconto (oppure metto il prezzo io). E possibile?

Grazie
draghetto

Inviato: 03/01/2005, 21:01
da draghetto84
:( su 15 persone che hanno letto nessuno che ha risposto :( :(

Inviato: 07/06/2005, 14:53
da japan
draghetto84 ha scritto::( su 15 persone che hanno letto nessuno che ha risposto :( :(
ciao hanno già risposto te lo riporto anche io ho lo stesso problema

Spesso effettuando il listing delle offerte, o dei produttori, o degli ordini, o altro, si verifica un errore SQL del tipo:

Citazione:
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 '-20, 20' at line 1

...segue la query eseguita...

[TEP STOP]


L'errore si verifica puntualmente tutte le volte che il numero di elementi da listare è zero, ma solo se la versione di MySQL è la 4.1 o sup.

La causa è un bug non critico delle classi split_page_results (file: split_page_results.php), sia lato shop che lato admin.
Il codice errato della classe lato shop è il seguente (riga 61 circa):

Codice:
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:
$offset = ($this->number_of_rows_per_page * ($this->current_page_number - 1));


genera allora un offset negativo nell'opzione LIMIT della query che fa 'arrabbiare' MySQL se la versione e la 4.1 o sup.

Una soluzione banale consiste nell'aggiungere un if di controllo, come segue:

Codice:
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