Originalmente inviato da
miniscript
... bhè... nulla di chè... però cerchi di mantenerti massimo a 10 cicli (circa) se devi farne 20-30 allora diventa pesantino... se poi andiamo sulle centinaia io eviterei assolutamente
centinaia penso di escluderlo come caso (magari faccio un controllo preventivo sull'input...ma non penso sia necessario ripeto).
15-20 probabilmente sarà il caso più comune.
ma non vedo soluzioni alternative però.
Ciao
aggiorno la situazione:
Sono comunque quasi alla resa dei conti. Ho inserito la query in un foreach:
Codice PHP:
................
function ricerca($inizio, $fine){
function conv_dateun ($data)
{
list ($d, $m, $y) = explode ("/", $data);
return "$m/$y";
}
//++++conversione formato date con php
function conv_date_anno ($data)
{
list ($m, $y) = explode ("/", $data);
return "$y";
}
function conv_date_mese ($data)
{
list ($m, $y) = explode ("/", $data);
return "$m";
}
//***********************
$prima = conv_dateun ($inizio);
$secondaDataSenzaGiorno=substr($fine,3,7);
$mese=substr($inizio,3,3); $anno=substr($inizio,6,4);
$increData=0; $differenza=0;
$mesitot = array();
$mesitot[] = $prima;
if ($inizio < $fine) {
while ( $increData < $secondaDataSenzaGiorno ) {
$differenza++;
$increData=date ("m/Y", mktime (0,0,0,$mese+$differenza,1,$anno) );
$mesi_s= substr($increData,0,2) . "/" . substr($increData,3,4) . "<br />";
$mesitot[] = $mesi_s;
}
}
$i = 0;
foreach($mesitot as $valore)
{
$anno = conv_date_anno ($valore);
$mese = conv_date_mese ($valore);
$querystat = "SELECT SUM(importo) somma, DATE_FORMAT(datascad,'%d/%m/%Y') giorno FROM scadenze
where YEAR(datascad) = $anno AND MONTH(datascad) = $mese GROUP BY giorno ORDER BY datascad";
$risultato = mysql_query($querystat);
$chart = new VerticalBarChart(500,250);
$dataSet = new XYDataSet();
while ($record = mysql_fetch_array($risultato)) {
$giorno = $record["giorno"];
$totimp = $record["somma"];
$dataSet->addPoint(new Point("$giorno", $totimp));
}
$chart->setDataSet($dataSet);
$chart->setTitle("Dati giorno/totali x mese");
$chart->render("generated/demo.$i.png");
echo "<img alt=\"Vertical bars chart\" src=\"generated/demo.$i.png\" style=\"border: 2px solid gray;\"/>";
echo "<br>";
$i ++;
}
}
....
Vabbè il codice è un po' disordinato, metterò a posto tutto dopo includendo una pagina con tutte le funzioni utilizzate e lasciando solo la parte logica.
La funzione ricerca riceve le 2 date che rappresentano l'intervallo temporale.
Trovo i mesi interessati dalla ricerca e li inserisco in un array dove prima ho inserto anche il mese iniziale di ricerca, poi in un foreach provo (l'intenzione era quella) ad eseguire la query tante volte quanti sono gli elementi dell'array.....ma c'è qualcosa che va storto.
Gli elementi dell'array ci sono e sono corretti (ho fatto degli echo di prova).
La query stampa correttamente il grafico del primo mese ma poi pe gli altri mesi viene stampato un messaggio di errore per ogni riga. Il messaggio è questo:
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\graf\stat\data.php on line 130"
la linea 130 in questione è questa:
Codice:
while ($record = mysql_fetch_array($risultato)) {
ma forse l'errore è a monte.
Ci sono a dire la verità anche altre cose da sistemare..ma una cosa per volta.
Qual'è l'errore?
Grazie