Dividere risultati per data e pagine diverse

  • Creatore Discussione Creatore Discussione _LAIL_
  • Data di inizio Data di inizio

_LAIL_

Utente Attivo
19 Set 2013
57
0
6
Salve a tutti ho un piccolo problemino in pratica estraggo dei dati che somma per mese anno e me li riporta nella tabella in ordine di data il tutt funziona perfettamente solo che mi mette in ordine tutti i mesi vorrei visualizzare i mesi separatamente a pagine singole il codice e questo:
PHP:
<style type="text/css">
body {
	background-color: #CCCCCC;
	background-image: url(./images/bg.png);
	background-repeat:repeat-x ;
	font-family:Arial, Helvetica, sans-serif;
	padding-top:60px;	
}
#header {
	text-align:center;
	padding-bottom:30px;
	}
</style>
<div id="header">
<img src="images/logo.png" height="100" width="800" />
</div>




<?php    
// CONNESSIONE AL DATABASE  
include ("conn.php"); 
$querystat = "SELECT SUM(ORA_1) + (ORA_2) + (ORA_3) + (ORA_4) + (ORA_5) + (ORA_6) + (ORA_7) + (ORA_8) + (ORA_9) + (ORA_10) + (ORA_11) + (ORA_12) + (ORA_13) + (ORA_14) + (ORA_15) + (ORA_16) + (ORA_17) + (ORA_18) + (ORA_19) + (ORA_20) + (ORA_21) + (ORA_22) + (ORA_23) + (ORA_24) + (ORA_25) + (ORA_26) + (ORA_27) + (ORA_28) + (ORA_29) + (ORA_30) + (ORA_31) somma, DATE_FORMAT(DATA,'%Y/%m') mese, ID_UTENTE, NOME_UTENTE FROM gps_personale GROUP BY ID_UTENTE, DATA ORDER BY DATA DESC"; 
$risultato = mysql_query($querystat);  
while ($record = mysql_fetch_array($risultato)) {  

$mese = $record["mese"];
$id_utente= $record["ID_UTENTE"];
$nome_utente= $record["NOME_UTENTE"];
$totimp = $record["somma"];


 


// CREA CODICE HTML
?>

<body bgcolor ="#808080">
	<table align="center" bgcolor ="#FFA500" width="600" height="25" border=2>
	
<tr>
<td align="center" bgcolor ="#FFA500" width="25"><font color="#000000">ID_UTENTE</font></td>
	<td align="center" bgcolor ="#FFA500" width="150"><font color="#000000">NOME_UTENTE</font></td>
<td align="center" bgcolor ="#FFA500" width="60"><font color="#000000">DATA</font></td>
	<td align="center" bgcolor ="#FFA500" width="60"><font color="#000000">TOTALE ORA</font></td>

<tr>
<td align="center" width="25" height="25">
	<font color="#0000FF"><?php echo $id_utente;?></td>
<td align="center" width="60" height="25">
	<font color="#0000FF"><?php echo $nome_utente;?></font></td>
<td align="center" width="60" height="25">
	<font color="#0000FF"><?php echo $mese;?></font></td>
<td align="center" width="60" height="25">
	<font color="#0000FF"><?php echo $totimp;?></font></td>
</table>
<br>
<?php



}
}
?>
 
Ciao, pagine singole nel senso che cliccando su un mese da un menu visualizzi soltanto quel mese?
devi usare più o meno la stessa tecnica della paginazione
dai un occhiata a questo script che è molto semplice da comprendere
 
Ciao Cri grazie per la risposta, ho dato uno sguardo allo script da te postatomi e da come ho capito con quello limito i risultati per numero prestabilito in ogni pagina.

Io non devo limitare un numero prestabilito perche tale numero non e sempre uguale a me interessa che limiti per mese (tutti i report di quel mese in una pagina).
 
ciao
forse dico una put....ta, ma potresti vedere di risolvere in questa maniera,
evidente che devi formattare il mese nella <select> nel modo da ottenere la querystat giusta
PHP:
<script>
        function selectPost()
        {
            document.modulo.method = "post";
            document.modulo.action = "<?php $_SERVER['PHP_SELF']; ?>";
            document.modulo.submit();
        }
</script>
<?php
$mesi=array('01'=>'gennaio',...... '12'=>'dicembre');
?>
<form action="#" name="modulo" method="post">
<select name="mese" id="mese" size="20"  onchange="selectPost()" >
<?php
foreach($mesi as $num =>$mese){
	echo "<option value=\"$num\">$mese</option>";
}
?>
</select>
</form>
<?php
if(isset($_POST['mese'])){
	$mese=$_POST['mese'];
	$querystat = "SELECT SUM(ORA_1) + ... + (ORA_31) somma, DATE_FORMAT(DATA,'%Y/%m') mese, ID_UTENTE, NOME_UTENTE FROM gps_personale WHERE mese='$mese' GROUP BY ID_UTENTE, DATA ORDER BY DATA DESC";  
	//ecc.......
}
?>
selezionado il mese dovresti ottenere una pagina relativa al mese
 
ho riscritto il codice facendo come hai postato tu la colonna di selezione appare ma quando ci clicco sopra non mi restituisce i dati

PHP:
<style type="text/css">
body {
    background-color: #CCCCCC;
    background-image: url(./images/bg.png);
    background-repeat:repeat-x ;
    font-family:Arial, Helvetica, sans-serif;
    padding-top:60px;    
}
#header {
    text-align:center;
    padding-bottom:30px;
    }
</style>
<div id="header">
<img src="images/logo.png" height="100" width="800" />
</div>

<script>
        function selectPost()
        {
            document.modulo.method = "post";
            document.modulo.action = "<?php $_SERVER['PHP_SELF']; ?>";
            document.modulo.submit();
        }
</script>
<?php
$mesi=array('01'=>'gennaio','02'=>'febbraio','03'=>'marzo','04'=>'aprile','05'=>'maggio','06'=>'giugno','07'=>'luglio','08'=>'agosto','09'=>'settembre','10'=>'ottobre','11'=>'novembre','12'=>'dicembre');?>
<form action="#" name="modulo" method="post">
<select name="mese" id="mese" size="20"  onchange="selectPost()" >
<?php
foreach($mesi as $num =>$mese){
    echo "<option value=\"$num\">$mese</option>";
}
?>
</select>
</form>
<?php    
// CONNESSIONE AL DATABASE  
include ("conn.php");
 if(isset($_POST['mese'])){
    $mese=$_POST['mese'];
$querystat = "SELECT SUM(ORA_1) + (ORA_2) + (ORA_3) + (ORA_4) + (ORA_5) + (ORA_6) + (ORA_7) + (ORA_8) + (ORA_9) + (ORA_10) + (ORA_11) + (ORA_12) + (ORA_13) + (ORA_14) + (ORA_15) + (ORA_16) + (ORA_17) + (ORA_18) + (ORA_19) + (ORA_20) + (ORA_21) + (ORA_22) + (ORA_23) + (ORA_24) + (ORA_25) + (ORA_26) + (ORA_27) + (ORA_28) + (ORA_29) + (ORA_30) + (ORA_31) somma, DATE_FORMAT(DATA,'%Y/%m') mese, ID_UTENTE, NOME_UTENTE FROM gps_personale WHERE mese='$mese' GROUP BY ID_UTENTE, DATA ORDER BY DATA DESC"; 
$risultato = mysql_query($querystat);  
while ($record = mysql_fetch_array($risultato)) {  

$mese = $record["mese"];
$id_utente= $record["ID_UTENTE"];
$nome_utente= $record["NOME_UTENTE"];
$totimp = $record["somma"];


 


// CREA CODICE HTML
?>

<body bgcolor ="#808080">
    <table align="center" bgcolor ="#FFA500" width="600" height="25" border=2>
    
<tr>
<td align="center" bgcolor ="#FFA500" width="25"><font color="#000000">ID_UTENTE</font></td>
    <td align="center" bgcolor ="#FFA500" width="150"><font color="#000000">NOME_UTENTE</font></td>
<td align="center" bgcolor ="#FFA500" width="60"><font color="#000000">DATA</font></td>
    <td align="center" bgcolor ="#FFA500" width="60"><font color="#000000">TOTALE ORA</font></td>

<tr>
<td align="center" width="25" height="25">
    <font color="#0000FF"><?php echo $id_utente;?></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $nome_utente;?></font></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $mese;?></font></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $totimp;?></font></td>
</table>
<br>
<?php
}
}
?>
 
ciao
la prima verifica è guardare se il formato di $mese è quello che hai nel campo mese.
io ho messo 01 02 ..... 12, ma se nel campo c'è es. gen, feb,....dic non trova nulla
 
ciao
intanto metti un bel var_dump per verificare la query
PHP:
<?php
//....
 if(isset($_POST['mese'])){
    $mese=$_POST['mese'];
$querystat = "SELECT SUM(ORA_1) + (ORA_2) + (ORA_3) + (ORA_4) + (ORA_5) + (ORA_6) + (ORA_7) + (ORA_8) + (ORA_9) + (ORA_10) + (ORA_11) + (ORA_12) + (ORA_13) + (ORA_14) + (ORA_15) + (ORA_16) + (ORA_17) + (ORA_18) + (ORA_19) + (ORA_20) + (ORA_21) + (ORA_22) + (ORA_23) + (ORA_24) + (ORA_25) + (ORA_26) + (ORA_27) + (ORA_28) + (ORA_29) + (ORA_30) + (ORA_31) somma, DATE_FORMAT(DATA,'%Y/%m') mese, ID_UTENTE, NOME_UTENTE FROM gps_personale WHERE mese='$mese' GROUP BY ID_UTENTE, DATA ORDER BY DATA DESC";  
var_dump($querystat);
//....
?>
guardando soprattutto cosa risulta nel punto ...WHERE mese='$mese' GROUP BY....
 
Mi restituisce questo:


string(480) "SELECT SUM(ORA_1) + (ORA_2) + (ORA_3) + (ORA_4) + (ORA_5) + (ORA_6) + (ORA_7) + (ORA_8) + (ORA_9) + (ORA_10) + (ORA_11) + (ORA_12) + (ORA_13) + (ORA_14) + (ORA_15) + (ORA_16) + (ORA_17) + (ORA_18) + (ORA_19) + (ORA_20) + (ORA_21) + (ORA_22) + (ORA_23) + (ORA_24) + (ORA_25) + (ORA_26) + (ORA_27) + (ORA_28) + (ORA_29) + (ORA_30) + (ORA_31) somma, DATE_FORMAT(DATA,'%Y/%m') mese, ID_UTENTE, NOME_UTENTE FROM gps_personale WHERE mese='04' GROUP BY ID_UTENTE, DATA ORDER BY DATA DESC"
 
Ciao, dovresse essere così
PHP:
WHERE MONTH(DATA) = '$mese'
vedo che mese è 04 forse è meglio che sia solo 4 al massimo risolvi con (int)
PHP:
$mese = (int) $mese;
 
Perfetto funziona tutto grazie gentilissimi come sempre ma se volessi selezionare anche l' anno?
 
ciao
fai una <select> con gli anni (però devi aggiustare il form con un submit o modificare il js)

PHP:
<?php
//....
$mese=$_POST['mese']; 
$anno=$_POST['anno'];
//...
$querystat = "SELECT..... WHERE WHERE MONTH(DATA) = '$mese'  AND WHERE YEAR(DATA) = '$anno' ....";
//...
?>

ha ragione criric non mi ero accorto della formattazione della data e pensavo che mese fose un campo a parte
 
@Borgo
hai messo troppi WHERE ... ne basta uno :)
 
mi sa che non ho capito bene come modificare ho fatto in questo modo ma non funziona

PHP:
<style type="text/css">
body {
    background-color: #CCCCCC;
    background-image: url(./images/bg.png);
    background-repeat:repeat-x ;
    font-family:Arial, Helvetica, sans-serif;
    padding-top:60px;    
}
#header {
    text-align:center;
    padding-bottom:30px;
    }
</style>
<div id="header">
<img src="images/logo.png" height="100" width="800" />
</div>

<script>
        function selectPost()
        {
            document.modulo.method = "post";
            document.modulo.action = "<?php $_SERVER['PHP_SELF']; ?>";
            document.modulo.submit();
        }
            
            
</script>
<?php
$mesi=array('01'=>'gennaio','02'=>'febbraio','03'=>'marzo','04'=>'aprile','05'=>'maggio','06'=>'giugno','07'=>'luglio','08'=>'agosto','09'=>'settembre','10'=>'ottobre','11'=>'novembre','12'=>'dicembre');
$anni=array('2013'=>'2013','2014'=>'2014','2015'=>'2015');
?>
<form action="#" name="modulo" method="post">
<select name="mese" id="mese" size="10"  onchange="selectPost()" >

<?php
foreach($mesi as $num =>$mese){
    echo "<option value=\"$num\">$mese</option>";
}
?>
</select>
<form action="#" name="modulo" method="post">
<select name="anno" id="anno" size="10"  onchange="selectPost()" >
<?php
foreach($anni as $num =>$anno){
    echo "<option value=\"$num\">$anno</option>";
}
?>
</select>
</form>
<?php    
// CONNESSIONE AL DATABASE  
include ("conn.php");
 if(isset($_POST['mese'],$_POST['anno'])){
    $mese=$_POST['mese'];
	$anno=$_POST['anno']; 
$querystat = "SELECT SUM(ORA_1) + (ORA_2) + (ORA_3) + (ORA_4) + (ORA_5) + (ORA_6) + (ORA_7) + (ORA_8) + (ORA_9) + (ORA_10) + (ORA_11) + (ORA_12) + (ORA_13) + (ORA_14) + (ORA_15) + (ORA_16) + (ORA_17) + (ORA_18) + (ORA_19) + (ORA_20) + (ORA_21) + (ORA_22) + (ORA_23) + (ORA_24) + (ORA_25) + (ORA_26) + (ORA_27) + (ORA_28) + (ORA_29) + (ORA_30) + (ORA_31) somma, DATE_FORMAT(DATA,'%Y/%m') mese, ID_UTENTE, NOME_UTENTE FROM gps_personale WHERE MONTH(DATA) = '$mese' AND WHERE YEAR(DATA) = '$anno' GROUP BY ID_UTENTE, DATA ORDER BY DATA DESC";
$risultato = mysql_query($querystat);  
while ($record = mysql_fetch_array($risultato)) {  

$mese = $record["mese"];
$id_utente= $record["ID_UTENTE"];
$nome_utente= $record["NOME_UTENTE"];
$totimp = $record["somma"];


 


// CREA CODICE HTML
?>

<body bgcolor ="#808080">
    <table align="center" bgcolor ="#FFA500" width="600" height="25" border=2>
    
<tr>
<td align="center" bgcolor ="#FFA500" width="25"><font color="#000000">ID_UTENTE</font></td>
    <td align="center" bgcolor ="#FFA500" width="150"><font color="#000000">NOME_UTENTE</font></td>
<td align="center" bgcolor ="#FFA500" width="60"><font color="#000000">DATA</font></td>
    <td align="center" bgcolor ="#FFA500" width="60"><font color="#000000">TOTALE ORA</font></td>

<tr>
<td align="center" width="25" height="25">
    <font color="#0000FF"><?php echo $id_utente;?></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $nome_utente;?></font></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $mese;?></font></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $totimp;?></font></td>
</table>
<br>
<?php
}
}

?>
 
ciao
prova così
PHP:
echo "<option value=\"$anno\">$anno</option>";
come fai tu trasmetti la chiave numerica cioè 0, 1 , 2 ecc... e nel db gli anni non si chiamano certo così
 
niente da fare ma mi chiedo in questo sistema seleziona anno e mese?


PHP:
<style type="text/css">
body {
    background-color: #CCCCCC;
    background-image: url(./images/bg.png);
    background-repeat:repeat-x ;
    font-family:Arial, Helvetica, sans-serif;
    padding-top:60px;    
}
#header {
    text-align:center;
    padding-bottom:30px;
    }
</style>
<div id="header">
<img src="images/logo.png" height="100" width="800" />
</div>

<script>
        function selectPost()
        {
            document.modulo.method = "post";
            document.modulo.action = "<?php $_SERVER['PHP_SELF']; ?>";
            document.modulo.submit();
        }
            
            
</script>
<?php
$mesi=array('01'=>'gennaio','02'=>'febbraio','03'=>'marzo','04'=>'aprile','05'=>'maggio','06'=>'giugno','07'=>'luglio','08'=>'agosto','09'=>'settembre','10'=>'ottobre','11'=>'novembre','12'=>'dicembre');
$anni=array('2013'=>'2013','2014'=>'2014','2015'=>'2015');
?>
<form action="#" name="modulo" method="post">
<select name="mese" id="mese" size="10"  onchange="selectPost()" >

<?php
foreach($mesi as $num =>$mese){
    echo "<option value=\"$num\">$mese</option>";
}
?>
</select>
<form action="#" name="modulo" method="post">
<select name="anno" id="anno" size="10"  onchange="selectPost()" >
<?php
foreach($anni as $num =>$anno){
    echo "<option value=\"$anno\">$anno</option>";
}
?>
</select>
</form>
<?php    
// CONNESSIONE AL DATABASE  
include ("conn.php");
 if(isset($_POST['mese'],$_POST['anno'])){
    $mese=$_POST['mese'];
	$anno=$_POST['anno']; 
$querystat = "SELECT SUM(ORA_1) + (ORA_2) + (ORA_3) + (ORA_4) + (ORA_5) + (ORA_6) + (ORA_7) + (ORA_8) + (ORA_9) + (ORA_10) + (ORA_11) + (ORA_12) + (ORA_13) + (ORA_14) + (ORA_15) + (ORA_16) + (ORA_17) + (ORA_18) + (ORA_19) + (ORA_20) + (ORA_21) + (ORA_22) + (ORA_23) + (ORA_24) + (ORA_25) + (ORA_26) + (ORA_27) + (ORA_28) + (ORA_29) + (ORA_30) + (ORA_31) somma, DATE_FORMAT(DATA,'%Y/%m') mese, ID_UTENTE, NOME_UTENTE FROM gps_personale WHERE MONTH(DATA) = '$mese' AND WHERE YEAR(DATA) = '$anno' GROUP BY ID_UTENTE, DATA ORDER BY DATA DESC";
$risultato = mysql_query($querystat);  
while ($record = mysql_fetch_array($risultato)) {  

$mese = $record["mese"];
$id_utente= $record["ID_UTENTE"];
$nome_utente= $record["NOME_UTENTE"];
$totimp = $record["somma"];


 


// CREA CODICE HTML
?>

<body bgcolor ="#808080">
    <table align="center" bgcolor ="#FFA500" width="600" height="25" border=2>
    
<tr>
<td align="center" bgcolor ="#FFA500" width="25"><font color="#000000">ID_UTENTE</font></td>
    <td align="center" bgcolor ="#FFA500" width="150"><font color="#000000">NOME_UTENTE</font></td>
<td align="center" bgcolor ="#FFA500" width="60"><font color="#000000">DATA</font></td>
    <td align="center" bgcolor ="#FFA500" width="60"><font color="#000000">TOTALE ORA</font></td>

<tr>
<td align="center" width="25" height="25">
    <font color="#0000FF"><?php echo $id_utente;?></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $nome_utente;?></font></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $mese;?></font></td>
<td align="center" width="60" height="25">
    <font color="#0000FF"><?php echo $totimp;?></font></td>
</table>
<br>
<?php
}
}

?>
 

Discussioni simili