|
| 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 » | |
09-01-2002, 15.43.26 | #1 |
WT Assistant
Registrato: 19-12-2000
Loc.: Cambiano (Torino)
Messaggi: 591
|
PHP + MySQL: aliases e ORDER BY
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? |
11-01-2002, 18.14.44 | #2 |
WT programmer
Registrato: 05-01-2001
Loc.: Siena
Messaggi: 523
|
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 |
11-01-2002, 19.43.26 | #3 |
WT Assistant
Registrato: 19-12-2000
Loc.: Cambiano (Torino)
Messaggi: 591
|
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? |
18-01-2002, 17.03.59 | #4 |
WT programmer
Registrato: 05-01-2001
Loc.: Siena
Messaggi: 523
|
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 |
18-01-2002, 18.12.53 | #5 |
WT Assistant
Registrato: 19-12-2000
Loc.: Cambiano (Torino)
Messaggi: 591
|
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! |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|