Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 09-01-2002, 15.43.26   #1
quipo.it
WT Assistant
 
L'avatar di quipo.it
 
Registrato: 19-12-2000
Loc.: Cambiano (Torino)
Messaggi: 591
quipo.it promette bene
PHP + MySQL: aliases e ORDER BY

Avevo sviluppato un'applicazione per statistiche in PHP 4.06 + MySQL 3.23.39,
con una query abbastanza lunga. Per maggior chiarezza, questa è la tabella:

------------------------------
CREATE TABLE movements (
ID int(10) unsigned NOT NULL auto_increment,
item_ID char(5) NOT NULL DEFAULT '0' ,
quantity int(10) unsigned NOT NULL DEFAULT '0' ,
date date NOT NULL DEFAULT '0000-00-00' ,
PRIMARY KEY (ID),
KEY ID_2 (ID),
UNIQUE ID (ID)
);
------------------------------

e questa è la query:

------------------------------
$SQL = "SELECT item_ID,"
."SUM(quantity) AS totale,"
."SUM(IF(date BETWEEN '$year_start-$month_start-01' AND '$year_end-$month_end-31',quantity,0)) AS media_tot_mesi,"
."SUM(IF(date BETWEEN '$year-01-01' AND '$year-01-31',quantity,0)) AS tot_gen,"
."SUM(IF(date BETWEEN '$year-02-01' AND '$year-02-31',quantity,0)) AS tot_feb,"
."SUM(IF(date BETWEEN '$year-03-01' AND '$year-03-31',quantity,0)) AS tot_mar,"
."SUM(IF(date BETWEEN '$year-04-01' AND '$year-04-31',quantity,0)) AS tot_apr,"
."SUM(IF(date BETWEEN '$year-05-01' AND '$year-05-31',quantity,0)) AS tot_mag,"
."SUM(IF(date BETWEEN '$year-06-01' AND '$year-06-31',quantity,0)) AS tot_giu,"
."SUM(IF(date BETWEEN '$year-07-01' AND '$year-07-31',quantity,0)) AS tot_lug,"
."SUM(IF(date BETWEEN '$year-08-01' AND '$year-08-31',quantity,0)) AS tot_ago,"
."SUM(IF(date BETWEEN '$year-09-01' AND '$year-09-31',quantity,0)) AS tot_set,"
."SUM(IF(date BETWEEN '$year-10-01' AND '$year-10-31',quantity,0)) AS tot_ott,"
."SUM(IF(date BETWEEN '$year-11-01' AND '$year-11-31',quantity,0)) AS tot_nov,"
."SUM(IF(date BETWEEN '$year-12-01' AND '$year-12-31',quantity,0)) AS tot_dic "
."from movements GROUP BY item_ID ORDER BY $order";
------------------------------

In pratica, visualizza il totale dei movimenti annuali,
il totale su un certo periodo e il totale mese per mese.

Avevo consentito all'utente l'ordinamento su uno qualunque di
questi campi, attraverso il settaggio della variabile $order
(passata via GET), e tutto funzionava a dovere.

Ora però ho aggiornato in locale (sulla MIA macchina, non
in quella del cliente...) PHP alla vers. 4.1.1 e MySQL
alla vers 3.23.46, e se passo un qualunque valore via GET
alla variabile $order, la pagina contiene solo più i totali annuali,
ma compaiono degli '0' in TUTTI gli altri campi (totale mensile e sul periodo).

In php.ini la variabile "register_globals" è settata su "On",
ovvero nel "vecchio stile". Ho provato anche a metterla su "Off"
e a prendere il parametro passato via GET con $_REQUEST["order"]
o con $_GET["order"], ma funge allo stesso modo.

Any idea?
quipo.it non è collegato   Rispondi citando
Vecchio 11-01-2002, 18.14.44   #2
EcHo2K
WT programmer
 
L'avatar di EcHo2K
 
Registrato: 05-01-2001
Loc.: Siena
Messaggi: 523
EcHo2K promette bene
no...non ne ho idea...se fai la query direttamente da mysql funziona? per capire se il probelma sta nell'uno o nell'altro...

la query e' effettivamente corretta?

altro non saprei che dire...
___________________________________

Wintricks.it script programmer
vuoi un sito internet professionale???
www.hor-net.com !
...the Penguin Power
EcHo2K non è collegato   Rispondi citando
Vecchio 11-01-2002, 19.43.26   #3
quipo.it
WT Assistant
 
L'avatar di quipo.it
 
Registrato: 19-12-2000
Loc.: Cambiano (Torino)
Messaggi: 591
quipo.it promette bene
Sì la query è corretta, tant'è che funziona a dovere.
L'unico problema è dato dall'ordinamento "dinamico":
ovvero, se io setto "a mano, nel codice" la dicitura ORDER BY tot_gen (ad esempio), tutto funge, ma se gliela passo via post allora fa i casini di cui sopra.
Questo però SOLO su PHP4.1.1 + MySQL 3.23.46, non su PHP4.0.6 e MySQL 3.23.39, dove tale problema non si presenta.
Proprio per questo motivo non posso fare la query direttamente in MySQL, perché lì devo specificare direttamente il campo secondo cui fare l'ordinamento (e il problema nasce quando si passa il campo come variabile), quindi il prob non sussisterebbe.
Sono quindi più propenso ad attribuire la colpa a PHP, ma come si rimedia?
quipo.it non è collegato   Rispondi citando
Vecchio 18-01-2002, 17.03.59   #4
EcHo2K
WT programmer
 
L'avatar di EcHo2K
 
Registrato: 05-01-2001
Loc.: Siena
Messaggi: 523
EcHo2K promette bene
utilizzando una versione che non ha questo bug...probabilmente e' un difettuccio di php 4.1.1, prova asegnalare il bug...
___________________________________

Wintricks.it script programmer
vuoi un sito internet professionale???
www.hor-net.com !
...the Penguin Power
EcHo2K non è collegato   Rispondi citando
Vecchio 18-01-2002, 18.12.53   #5
quipo.it
WT Assistant
 
L'avatar di quipo.it
 
Registrato: 19-12-2000
Loc.: Cambiano (Torino)
Messaggi: 591
quipo.it promette bene
Beh, se di bug si tratta, era presente anche nella 4.1.0... faccio ancora un po' di prove e poi parto con la segnalazione...
Grazie e ciao!
quipo.it non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Orario GMT +2. Ora sono le: 11.02.31.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.