• Home
  • Forum
  • Fare Web
  • PHP

Ricerca divisa per mesi

  • Creatore Discussione Creatore Discussione ivarello
  • Data di inizio Data di inizio 29 Gen 2013
  • Tag Tag
    html mysql php
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 3 Feb 2013
  • #21
secondo te che c'è che non va nel codice da non essere neanche caricato
PHP:
<?php
//.....
include "include/config.php"; //Connect to Database
include "include/connect.php"; //Connect to Database
if(isset($_POST['cerca'])){
    if($_POST['mese']=="" || $_POST['anno']==""){
        //messaggio e ritorno al form
    }else{//mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
        //trasformo in timestamp
        $da=mktime(0,0,0,(int)($_POST['mese'],1,$_POST['anno']);//qui probabilmente devi provare se va bene 31 o 30 o 28 o 29 in funzione del mese
        $a=mktime(59,59,59,int($_POST['mese'],31,$_POST['anno']);
        $query="SELECT * FROM stat_traffic WHERE dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a ORDER BY dataora_inizio_chiamata";//oppure usando BETWEN
        //ecc.....
    }
//.....
}
//........
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 3 Feb 2013
  • #22
ciao
notavo adesso, hai

PHP:
<?php
<?php
$mesi=array('01'=>'gen','02'=>'feb','03'=>'mar','04'=>'apr','05'=>'mag','06'=>'giu','07'=>'lug','08'=>'ago','09'=>'set','10'=>'ott','11'=>'nov','12'=>'dic');
?>
togli un <?php
PHP:
<?php
$mesi=array('01'=>'gen','02'=>'feb','03'=>'mar','04'=>'apr','05'=>'mag','06'=>'giu','07'=>'lug','08'=>'ago','09'=>'set','10'=>'ott','11'=>'nov','12'=>'dic');
?>

se l'hai scritto così ti da errore
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 3 Feb 2013
  • #23
lo avevo già corretto l'errore si trova nella seconda parte del codice quella che richiamo con il form, non capisco

cerca_data.php
PHP:
<?php
// forse meglio array(1=>'gen',....
$mesi=array('01'=>'gen','02'=>'feb','03'=>'mar','04'=>'apr','05'=>'mag','06'=>'giu','07'=>'lug','08'=>'ago','09'=>'set','10'=>'ott','11'=>'nov','12'=>'dic');
?>
<form action="cerca_data_2.php" method="post">
mese <select name="mese">
    <option value="">- seleziona mese-</option>
<?php
foreach($mesi as $num => $nome){
  echo "<option value=\"$num\">$nome</option>";
}
?>
</select><br />
anno<select name="anno">
    <option value="">- seleziona anno-</option>
<?php
for($aa=2013; $aa <2020; $aa++){
  echo "<option value=\"$aa\">$aa</option>";
}
?>
</select><br />
<input name="cerca" type="submit" id="cerca" value="cerca">
</form>

cerca_data_2.php

PHP:
<?php
//.....
include "include/config.php"; //Connect to Database
include "include/connect.php"; //Connect to Database
if(isset($_POST['cerca'])){
    if($_POST['mese']=="" || $_POST['anno']==""){
        //messaggio e ritorno al form
    }else{//mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
        //trasformo in timestamp
        $da=mktime(0,0,0,(int)($_POST['mese'],1,$_POST['anno']);//qui probabilmente devi provare se va bene 31 o 30 o 28 o 29 in funzione del mese
        $a=mktime(59,59,59,(int)($_POST['mese'],31,$_POST['anno']);
        $query="SELECT * FROM stat_traffic WHERE dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a ORDER BY dataora_inizio_chiamata";//oppure usando BETWEN
        //ecc.....
    }
//.....
}
//........
?>

l'errore è in cerca_data_2.php - errore del server come al solito :S
 
Ultima modifica: 3 Feb 2013

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 3 Feb 2013
  • #24
ciao
adesso funzia (avevo o avevi) fatto un errore di battitura nel mktime... c'era una parentesi in più
provalo così (ho commentato gli include perche non ho i file, poi mel ritorno al form mrtti il nome del tuo file)
PHP:
<?php
// forse meglio array(1=>'gen',....
$mesi=array('01'=>'gen','02'=>'feb','03'=>'mar','04'=>'apr','05'=>'mag','06'=>'giu','07'=>'lug','08'=>'ago','09'=>'set','10'=>'ott','11'=>'nov','12'=>'dic');
if(isset($_POST['cerca'])){
	echo $_POST['mese']."<br>";
	echo $_POST['anno']."<br>";
}
?>
<form action="cerca_data_2.php" method="post">
mese <select name="mese">
    <option value="">- seleziona mese-</option>
<?php
foreach($mesi as $num => $nome){
  echo "<option value=\"$num\">$nome</option>";
}
?>
</select><br />
anno<select name="anno">
    <option value="">- seleziona anno-</option>
<?php
for($aa=2013; $aa <2020; $aa++){
  echo "<option value=\"$aa\">$aa</option>";
}
?>
</select><br />
<input name="cerca" type="submit" id="cerca" value="cerca">
</form>
PHP:
<?php
//.....
//include "include/config.php"; //Connect to Database
//include "include/connect.php"; //Connect to Database
if(isset($_POST['cerca'])){
	if($_POST['mese']=="" || $_POST['anno']==""){
    	echo "non inserito il mese o l'anno";
		echo "<meta http-equiv='Refresh' content='3; URL=000002.php'>";
	}else{//mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
		//trasformo in timestamp
		$da=mktime(0,0,0,(int)$_POST['mese'],1,(int)$_POST['anno']);//qui probabilmente devi provare se va bene 31 o 30 o 28 o 29 in funzione del mese
		$a=mktime(59,59,59,(int)$_POST['mese'],31,$_POST['anno']);
		echo "inserito mese ".(int)$_POST['mese']." e anno ".(int)$_POST['anno']."<br />";
		$query="SELECT * FROM stat_traffic WHERE dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a ORDER BY dataora_inizio_chiamata";//oppure usando BETWEN
		echo "$query<br />";
                //ecc.....
	}
        //.....
}
//........
?>
per verificarlo ho messo degli echo, poi toglili
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 3 Feb 2013
  • #25
Ora non da errore solo che al termine della ricerca mi restituisce questo:
inserito mese 1 e anno 2013
SELECT * FROM stat_traffic WHERE dataora_inizio_chiamata >= 1356994800 AND dataora_inizio_chiamata <= 1359802799 ORDER BY dataora_inizio_chiamata
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 3 Feb 2013
  • #26
ciao
per forza lo script si ferma li, ma era solo per vedere se funzionava, da li in poi devi provarlo tu perche non ho il tuo db+tabella/e e quindi non posso provarlo
comunque (tolte gli echo messi per provare) devi proseguire interrogndo il db e estrarre i dati dei record tra data e data.

ecco, ti faccio uno schema
PHP:
<?php
//....
		$query="SELECT * FROM stat_traffic WHERE dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a ORDER BY dataora_inizio_chiamata";//oppure usando BETWEN
        //echo "$query<br />";
		$ris=mysql_query($query);
		if(mysql_num_rows($ris)==0){
			echo "non ci sono record tra le date cercate"; //e ritorno a dove vuoi tu
		}else{
			//estrai i record pe vedere i campi
			while($riga=mysql_fetch_array($ris)){
				echo "descrizione 1".$riga['nome_campo_1']."<br />";
				echo "descrizione 2".$riga['nome_campo_2']."<br />";
				//ecc... per tutti i campi che vuoi visualizzare, con layuout da definire
			}
		}
                //ecc.....
    } 
//.....
?>
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 3 Feb 2013
  • #27
funziona perfettamente ma bisogna chiudere con un'altra } altrimenti da errore, cmq sei un grande, ci aggiorniamo a domani hehehe
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 3 Feb 2013
  • #28
ciao
ti do (dimenticato prima) anche un'indicazione del layout per visualizzare i dati
PHP:
<?php
//....
        $query="SELECT * FROM stat_traffic WHERE dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a ORDER BY dataora_inizio_chiamata";//oppure usando BETWEN
        //echo "$query<br />";
        $ris=mysql_query($query);
        if(mysql_num_rows($ris)==0){
            echo "non ci sono record tra le date cercate"; //e ritorno a dove vuoi tu
        }else{
            //estrai i record pe vedere i campi
            echo "<table>";
			echo "<tr><th>area</th><th>data<th></tr>";//tra altri <th>...</th> gli altri nomi
			while($riga=mysql_fetch_array($ris)){
				$area=$riga['area_geografica'];
				//ricorda che il campo dataora_inizio_chiamata l'hai in timestamp quindi prima devi trasformarlo
				$data=date("d m Y H:i:s",$riga['dataora_inizio_chiamata']);
				//e gli altri campi
				echo "<tr><td>$area</td><td>$data</td></tr>";//tra altri <td>...</td> gli altri valori estratti
            }
			echo "</table>";
        }
                //ecc.....
    } 
//.....
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 4 Feb 2013
  • #29
ciao
mi è venuto un piccolo dubbio, mentre il primo gg del mese è sempre lo stesso cioè 1, l'ultimo può essere 30 o 31 o 28 o 29 se bisestile, quindi non vorrei che
$a=mktime(59,59,59,(int)$_POST['mese'],31,$_POST['anno']);
nel caso es. tu indicassi febbraio 2013 il fatto che in mktime ci sia 31 possa vada in errore.
quindi ho fatto una funzione, times_ultimo_gg($m,$a), che verifica quale è l'ultimo gg del mese, scrivila all'inzio (o mettila in un file da includere) e modifica la riga con $a
PHP:
<?php
//.....
function times_ultimo_gg($m,$a){//$m: mese da 1 a 12, $a: anno numero di 4 cifre
	$m=(int)$m;
	$a=(int)$a;
	for($k=31; $k >=28; $k--){//31 30 29 28
		if(checkdate($m, $k, $a){//verifico per il mese/anno quale è l'ultimo gg, quello giusto da true
			return mktime(59,59,59,$m,$k,$a);
		}
	}
}
include "include/config.php"; //Connect to Database
include "include/connect.php"; //Connect to Database
if(isset($_POST['cerca'])){
    if($_POST['mese']=="" || $_POST['anno']==""){
        echo "non inserito il mese o l'anno";
        echo "<meta http-equiv='Refresh' content='3; URL=000002.php'>";
    }else{//mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
        //trasformo in timestamp
        $da=mktime(0,0,0,(int)$_POST['mese'],1,(int)$_POST['anno']);//qui probabilmente devi provare se va bene 31 o 30 o 28 o 29 in funzione del mese
        //$a=mktime(59,59,59,(int)$_POST['mese'],31,$_POST['anno']);//vecchio
		$a=times_ultimo_gg($_POST['mese'],$_POST['anno']);//modifica
        echo "inserito mese ".(int)$_POST['mese']." e anno ".(int)$_POST['anno']."<br />";
        $query="SELECT * FROM stat_traffic WHERE dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a ORDER BY dataora_inizio_chiamata";//oppure usando BETWEN
        echo "$query<br />";
                //ecc.....
    }
        //.....
}
//........
?>
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 4 Feb 2013
  • #30
Buondì Borgo, ho provato a mettere febbraio e non da errore ;9 cmq con la tua funzione risulta più stabile e corretta la cosa, ora mi stavo approcciando ad mettere oltre che al mese ed anno anche una divisione per il contratto così guarda:

cerca_data.php

PHP:
<?php
// forse meglio array(1=>'gen',....
$mesi=array('01'=>'gen','02'=>'feb','03'=>'mar','04'=>'apr','05'=>'mag','06'=>'giu','07'=>'lug','08'=>'ago','09'=>'set','10'=>'ott','11'=>'nov','12'=>'dic');
?>
<form action="cerca_data_2.php" method="post">
mese <select name="mese">
    <option value="">- seleziona mese-</option>
<?php
foreach($mesi as $num => $nome){
  echo "<option value=\"$num\">$nome</option>";
}
?>
</select><br />
anno<select name="anno">
    <option value="">- seleziona anno-</option>
<?php
for($aa=2013; $aa <2020; $aa++){
  echo "<option value=\"$aa\">$aa</option>";
}
?>
</select><br />
Contratto<select name="contratto">
    <option value="">- seleziona contratto-</option>
<?php 
require 'include/config.php'; // ho usato una tabella che avevo gia compilato ma si poteva usare sempre un array
require 'include/connect.php';
$sql_voip="SELECT * FROM contratti;";
$prodotti=MYSQL_QUERY($sql_voip) or die (mysql_error()); 
while($riga = mysql_fetch_array($prodotti)){ 
    $id=$riga['num_contratto']; 
    $nome=$riga['cognome']; 
	$nome2=$riga['nome']; 
    echo "<option value=\"$id\">$nome $nome2 </option>"; 
} 
?>
</select><br />
<input name="cerca" type="submit" id="cerca" value="cerca">
</form>

cerca_data_2.php

PHP:
<?php
//.....
include "include/config.php"; //Connect to Database
include "include/connect.php"; //Connect to Database
if(isset($_POST['cerca'])){ 
    if($_POST['mese']=="" || $_POST['anno']=="" || $_POST['contratto']==""){ 
        echo "non inserito il mese o l'anno o il contratto"; 
        echo "<meta http-equiv='Refresh' content='3; URL=cerca_data.php'>"; 
    }else{//mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] ) 
        //trasformo in timestamp 
        $da=mktime(0,0,0,(int)$_POST['mese'],1,(int)$_POST['anno']);
        $a=mktime(59,59,59,(int)$_POST['mese'],31,$_POST['anno']); 
        echo "inserito mese ".(int)$_POST['mese']."  anno ".(int)$_POST['anno']."  contratto ".$_POST['contratto']"<br />"; 
        $query="SELECT * FROM stat_traffic WHERE dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a ORDER BY dataora_inizio_chiamata";//oppure usando BETWEN 
        //echo "$query<br />"; 
        $ris=mysql_query($query); 
        if(mysql_num_rows($ris)==0){ 
            echo "non ci sono record tra le date cercate"; //e ritorno a dove vuoi tu 
        }else{ 
            //Creao una tabellazione dove inserisco i risultati ricavati
			
			echo '
<center><table width="1000" border="0" cellpadding="5" cellspacing="10">
	<tr>
		<th bgcolor="#CEECF5">Area Geografica</th>
		<th bgcolor="#CEECF5">Inizio Chiamata</th>
		<th bgcolor="#CEECF5">Numero Origine</th>
		<th bgcolor="#CEECF5">Numero Destinazione</th>
		<th bgcolor="#CEECF5">Codice</th>
		<th bgcolor="#CEECF5">Costo Chiamata</th>
		<th bgcolor="#CEECF5">Durata Connessione</th>
	</tr></center>';
	
            while($riga=mysql_fetch_array($ris)){ 
			
			$area_geografica          			 = htmlentities($riga['area_geografica']); //metto i spazi solo per un mio modo di fare, ed identificare alcune parti del codice ;)
			$dataora_inizio_chiamata   			 = htmlentities($riga['dataora_inizio_chiamata']);
			$data_unix							 = date("H:i d/m/Y",$dataora_inizio_chiamata); //riconverto il timestamp in data normale
			$numero_origine            			 = htmlentities($riga['numero_origine']);
			$numero_destinazione       			 = htmlentities($riga['numero_destinazione']);
			$nome_phone_shop          			 = htmlentities($riga['nome_phone_shop']);
			$importo_phone_shop			         = htmlentities($riga['importo_phone_shop']);
			$durata_connessione		             = htmlentities($riga['durata_connessione']);

			
				echo "<tr>
			<td bgcolor='#EFF5FB'><center>$area_geografica</center></td>
			<td bgcolor='#F2FBEF'><center>$data_unix</center></td>
			<td bgcolor='#F2FBEF'><center>$numero_origine</font></center></td>
			<td bgcolor='#EFF5FB'><center>$numero_destinazione</center></font></td>
			<td bgcolor='#F2FBEF'><center>$nome_phone_shop</center></td>
			<td bgcolor='#F2FBEF'><center>$importo_phone_shop &#8364</center></td>
			<td bgcolor='#EFF5FB'><center>$durata_connessione sec</center></td>
		</tr>";

            } 
        } 
    }  
	}
//..... 
?>

Ho fatto alcune modifiche commentate, ma per mi servirebbe un aiuto a terminare il codice per la suddivisione ulteriore con il contratto, hai idee
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 4 Feb 2013
  • #31
Risolto ma credo la tua funzione

PHP:
//.....
function times_ultimo_gg($m,$a){//$m: mese da 1 a 12, $a: anno numero di 4 cifre
    $m=(int)$m;
    $a=(int)$a;
    for($k=31; $k >=28; $k--){//31 30 29 28
        if(checkdate($m, $k, $a){//verifico per il mese/anno quale è l'ultimo gg, quello giusto da true
            return mktime(59,59,59,$m,$k,$a);
        }
    }
}

quando viene richiamata mi da errore sei sicuro che non ci siano errori?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 4 Feb 2013
  • #32
ciao
hai ragione, errore di copy/paste ho dato 59 ore in un giorno, correggi in 23
PHP:
<?php
function times_ultimo_gg($m,$a){//$m: mese da 1 a 12, $a: anno numero di 4 cifre
    $m=(int)$m;
    $a=(int)$a;
    for($k=31; $k >=28; $k--){//31 30 29 28
        var_dump($k);echo "<br>";
		if(checkdate($m, $k, $a)){//verifico per il mese/anno quale è l'ultimo gg, quello giusto da true
			var_dump($k);echo "<br>";
            return mktime(23,59,59,$m,$k,$a);//CORREGGERE in 23
        }
    }
}
//**test
$mese=2;//febbraio
$anno= 2016;//bisetile
echo "ultimo giorni di febbraio 2016: ".date("d",times_ultimo_gg($mese,$anno))." =>".times_ultimo_gg($mese,$anno);
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 4 Feb 2013
  • #33
ciao
al tuo precedente post volevo chiederti: quello che chiami $id ricavato da $id=$riga['num_contratto'] è un valore univoco?
perche se sì le due ricerche possono essere incompatibili nel senso che (es) cerci il contatratto 567 in febbraio 2013, ma se il contratto non è di febbraio non lo trovi, quindi bisogna suddividere la ricerca
o nell'intervallo di tempo
o per tal numero di contratto
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 5 Feb 2013
  • #34
Si valore univoco, infatti non ci sono problemi con la ricerca funziona perfettamente, ti volevo chiedere una cosa te conosci un modo di creare un submit stile link, mi spiego vorrei che cliccando sopra ad una parola faccia una ricerca, ci sono gia riuscito ma trasformando le parole in pulsanti submit, ma se prova ad usare i codici che ho trovato in giro niente :S
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 5 Feb 2013
  • #35
ciao
per il primo problema
vedo che hai messo la ricerca per l'id assime alla ricerca per intervallo di tempo, quindi conviene modificare la parte php facenedo un controllo (ti scrivo in pseudo codice, se riesci lo fai tu altrimenti poi ti do una mano:
Codice:
se post_tempo e pst_id vuoti
errore
se post_tempo non vuoto e post_id vuoto
query ricerca per intervallo di tempo
se post_tempo vuoto e post_id non vuoto
query ricerca per id
altimenti se untrambi pieni
qui puoi operare in tre modi
1) errore
2) dare la preminenza a una delle due ricerce
3) cercare quell'id nell'intervallo di tempo selezionato
prova a modificare la parte di ricerca

per il secondo: un problema => una discussione, apri una discussione apposita altrimenti diventa difficile trovare la soluzione (se c'è) anche per altri utenti interessati
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 5 Feb 2013
  • #36
Giustissimo, una cosa, tua funzione per il controllo dei mesi, funziona bene ora, ma mi restituisce anche due valori (int31)(int31) uno sotto all'altro, ti risulta anche a te
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 5 Feb 2013
  • #37
ciao
togli o meglio commenta i due var_dump
PHP:
//.....
for($k=31; $k >=28; $k--){//31 30 29 28
        //var_dump($k);echo "<br>";
        if(checkdate($m, $k, $a)){//verifico per il mese/anno quale è l'ultimo gg, quello giusto da true
            //var_dump($k);echo "<br>";
            return mktime(23,59,59,$m,$k,$a);//CORREGGERE in 23
        }
//.....
e visto che ci siamo guardali: i var_dump(nome variabile o altro) sono uno strumento utilissimo per il dabag di uno script.
si potrebbe usare anche un semplice echo per vedere/verificare i risultati, ma il var_dump oltre al valore ti restituisce anche il tipo della variabile.
spesso un var_dump risolve problemi relativi ad errori che sembrano irrisolvibili perche nascono a monte dell'errore che ti da php.
in questo caso avendo verificato che i valori di $k erano come volevo, quindi l'errore veniva dopo, e mi sono accorto di aver messo 59 al posto di 23.
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 5 Feb 2013
  • #38
ne sai una più del diavolo
 

ivarello

Utente Attivo
14 Dic 2012
211
1
16
  • 11 Feb 2013
  • #39
Borgo ho un altra domanda, ho aggiunto anche la somma della durata delle chiamate per mese così:

PHP:
<?php
include "voip/include/config.php"; //Connect to Database
include "voip/include/connect.php"; //Connect to Database
if(isset($_POST['cerca'])){ 
    if($_POST['mese']=="" || $_POST['anno']=="" || $_POST['contratto']==""){ 
        echo "<p style='font-family:arial;color:red;font-size:20px;'>";
		echo "non ha inserito il mese o l'anno o il contratto";
		echo "</p>"; 
        echo "<meta http-equiv='Refresh' content='3; URL=dett_traffic.php'>"; 
    }else{//mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] ) 
        //trasformo in timestamp 
        $da=mktime(0,0,0,(int)$_POST['mese'],1,(int)$_POST['anno']);//qui probabilmente devi provare se va bene 31 o 30 o 28 o 29 in funzione del mese 
        $a=mktime(59,59,59,(int)$_POST['mese'],31,(int)$_POST['anno']); 
		$chi=($_POST['contratto']);
		$nome_mese=($_POST['mese']);
		//$a=times_ultimo_gg($_POST['mese'],$_POST['anno']);//modifica
        $query="SELECT * FROM stat_traffic WHERE nome_phone_shop = '$chi' AND dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a ORDER BY dataora_inizio_chiamata DESC";//oppure usando BETWEN 
        //echo "$query<br />"; 
        $ris=mysql_query($query); 
        if(mysql_num_rows($ris)==0){ 
		echo "<p style='font-family:arial;color:red;font-size:20px;'>";
            echo "Il cliente";
			echo " $chi";
			echo " non ha effettuato traffico telefonico per il mese di";
include('../scripts/funzioni/funzione_nome_mese.php'); //da il nome al mese
			echo " $nmese";
			echo "</p>"; 
			echo "<meta http-equiv='Refresh' content='5; URL=dett_traffic.php'>";  //ritorna alla pagina di ricerca
        }else{ 
            //Creao una tabellazione dove inserisco i risultati ricavati
 				
				function secsToStr($secs) {  //Funzione per testualizzare i secondi
				if($secs>=86400){$giorni=floor($secs/86400);$secs=$secs%86400;$r=$giorni.' Giorn';if($giorni<>1){$r.='i ';};if($giorni=1){$r.='o ';}if($secs>0){$r.=', ';}}
				if($secs>=3600){$ore=floor($secs/3600);$secs=$secs%3600;$r.=$ore.' Or';if($ore>2){$r.='e ';};if($ore<=1){$r.='a ';}if($secs>0){$r.=', ';}}
				if($secs>=60){$minuti=floor($secs/60);$secs=$secs%60;$r.=$minuti.' Minut';if($minuti>2){$r.='i ';};if($minuti<=1){$r.='o ';}if($secs>0){$r.=', ';}}
				$r.=$secs.' Second';if($secs>2){$r.='i';};if($secs<=1){$r.='o';}
				return $r;
				}
				$result = mysql_query("SELECT SUM(durata_connessione) AS somma FROM stat_traffic WHERE nome_phone_shop = '$chi' AND dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a"); 
				$row = mysql_fetch_assoc($result); 
				$sum = $row['somma']; 
				$secs = $sum;
				$sum_2 = secsToStr($secs); //applico la funzione
			include('../scripts/funzioni/funzione_nome_mese.php'); // da il nome al mees
				echo "
				<br/>
				<table><tr>
			<td bgcolor='#EFF5FB'><center><font size='4'>Il/La Cliente <font color='green'>$chi</font> ha effettuato nel mese di <font color='green'>$nmese:</font> <font color='red'>$sum_2</font> di traffico telefonico</font></center></td>
			</table></tr>";

				echo '
<center><table width="1000" border="0" cellpadding="5" cellspacing="10">
	<tr>
		<th bgcolor="#CEECF5">Operatore</th>
		<th bgcolor="#CEECF5" width="150">Inizio Chiamata</th>
		<th bgcolor="#CEECF5">Numero Origine</th>
		<th bgcolor="#CEECF5">Numero Destinazione</th>
		<th bgcolor="#CEECF5">Codice</th>
		<th bgcolor="#CEECF5">Costo Chiamata</th>
		<th bgcolor="#CEECF5">Durata Connessione</th>
	</tr></center>';
	

            while($riga=mysql_fetch_array($ris)){ 
			
			$area_geografica          			 = htmlentities($riga['area_geografica']);
			$dataora_inizio_chiamata   			 = htmlentities($riga['dataora_inizio_chiamata']);
			$data_unix							 = date("H:i d/m/Y",$dataora_inizio_chiamata); //riconverto il timestamp in data normale
			$numero_origine            			 = htmlentities($riga['numero_origine']);
			$numero_destinazione       			 = htmlentities($riga['numero_destinazione']);
			$nome_phone_shop          			 = htmlentities($riga['nome_phone_shop']);
			$importo_phone_shop			         = htmlentities($riga['importo_phone_shop']);
			$durata_connessione		             = htmlentities($riga['durata_connessione']);


			
				echo "<tr>
			<td bgcolor='#EFF5FB'><center>$area_geografica</center></td>
			<td bgcolor='#F2FBEF'><center>$data_unix</center></td>
			<td bgcolor='#EFF5FB'><center>$numero_origine</font></center></td>
			<td bgcolor='#F2FBEF'><center>$numero_destinazione</center></font></td>
			<td bgcolor='#EFF5FB'><center>$nome_phone_shop</center></td>
			<td bgcolor='#F2FBEF'><center>$importo_phone_shop &#8364</center></td>
			<td bgcolor='#EFF5FB'><center>$durata_connessione sec</center></td>

		</tr>";				
                //ecc... per tutti i campi che vuoi visualizzare, con layuout da definire 
            } 
        } 
                //ecc..... 
    }  
	echo '</table>';
	echo '<br/>';
		footer();
		version();
}
//..... 
?>

Ma vorrei invece che fare una somma totale dividere in tempo verso tim - vodafone - h3g, dato che nel campo area geografica, mi dice appunto verso quale operatore si chiama (Italy Fixed=fissi; Italy mobile, Wind=wind;Italy mobile, H3G=tre; ecc) ho fatto qualche prova ma mi sballa tutto, hai qualche idea? Tipo 5 query rispettive per ogni operatore.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 12 Feb 2013
  • #40
ciao
secondo me devi fare un'altra query e un'altra tabella di visualizzazione, cosi a naso senza pensarci mi viene in mente una query del tipo
PHP:
<?php
//.......
$query="SELECT SUM(durata_connessione) AS somma, area_geografica AS geo WHERE nome_phone_shop = '$chi' AND dataora_inizio_chiamata >= $da AND dataora_inizio_chiamata <= $a GROUP BY area_geografica";
$ris=mysql_query($query);
echo "<table><tr><th>operatore</th><th>tempo connessione</th></tr>";
while/$riga=mysql_fetch_array($ris)){
	echo "<tr><td>".$riga['geo']."</td><td>".$riga['somma']."</td></tr>";
}
echo "</table>";
//....
?>
provala poi se non funzia ci pensiamo meglio
 
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

J
Risultati ricerca esatti ma gestiti
  • justa
  • 2 Mag 2024
  • SEO e Posizionamento
Risposte
0
Visite
2K
SEO e Posizionamento 2 Mag 2024
justa
J
F
access ricerca record con apostrofo.
  • futty
  • 28 Mar 2024
  • MS Access
Risposte
0
Visite
1K
MS Access 28 Mar 2024
futty
F
C
Ricerca Prodotti Woocommerce
  • costantonio11
  • 11 Set 2023
  • Javascript
Risposte
0
Visite
2K
Javascript 11 Set 2023
costantonio11
C
U
PHP creare un file excel dopo ricerca nel DB
  • Umberto Federico
  • 15 Giu 2022
  • PHP
Risposte
0
Visite
1K
PHP 15 Giu 2022
Umberto Federico
U
G
Colorare menu select attraverso ricerca php
  • Gabriele_04
  • 18 Ott 2021
  • PHP
Risposte
0
Visite
1K
PHP 18 Ott 2021
Gabriele_04
G
L
  • Bloccata
PHP motore di ricerca nel sito
  • lugalzaggesi
  • 8 Ott 2021
  • PHP
Risposte
1
Visite
1K
PHP 8 Ott 2021
Max 1
G
Menù a tendina di ricerca con query
  • GuidoLamoto
  • 14 Giu 2021
  • PHP
Risposte
1
Visite
2K
PHP 15 Giu 2021
macus_adi
R
Problema query con ricerca id numerico
  • Riccardo Contu
  • 5 Mag 2021
  • PHP
Risposte
2
Visite
1K
PHP 6 Mag 2021
VaniVan
V
L
Mysql: Nascondere le pagine dopo una ricerca
  • lucign0l0
  • 21 Apr 2021
  • PHP
Risposte
1
Visite
1K
PHP 21 Apr 2021
Tommy03
F
Visualizzazione motore di ricerca
  • francescomi
  • 23 Mar 2021
  • SEO e Posizionamento
Risposte
2
Visite
1K
SEO e Posizionamento 25 Mar 2021
francescomi
F
B
Stringa sql per ricerca su più campi
  • bobulus
  • 6 Mar 2021
  • Database
Risposte
1
Visite
1K
Database 7 Mar 2021
marino51
F
Funzione Glob - ricerca file contenente una parola
  • francescoITA
  • 25 Gen 2021
  • PHP
Risposte
1
Visite
1K
PHP 27 Gen 2021
francescoITA
F
P
Ricerca campo data
  • PaoloG
  • 5 Ott 2020
  • PHP
Risposte
1
Visite
1K
PHP 5 Ott 2020
PaoloG
P
L
titolo del sito nella pagina di ricerca di google
  • Leonardo Scotti
  • 24 Ago 2020
  • SEO e Posizionamento
Risposte
2
Visite
1K
SEO e Posizionamento 24 Ago 2020
Leonardo Scotti
L
A
Creare un modulo di ricerca avanzata con dreamweaver
  • alexehilary
  • 29 Mag 2020
  • HTML e CSS
Risposte
0
Visite
1K
HTML e CSS 29 Mag 2020
alexehilary
A
L
Ricerca valore mysql e incremento
  • lucign0l0
  • 24 Mag 2020
  • PHP
  • 2 3 4
Risposte
73
Visite
7K
PHP 29 Mag 2020
lucign0l0
L
E
Problema motore di ricerca FULL_TEXT
  • Emperor
  • 19 Mag 2020
  • PHP
Risposte
0
Visite
1K
PHP 19 Mag 2020
Emperor
E
Ricerca filtro con Ajax
  • motleyrulez
  • 23 Apr 2020
  • PHP
Risposte
1
Visite
2K
PHP 23 Apr 2020
Alex_70
[CSS] Posizionare casella di ricerca
  • Shyson
  • 13 Apr 2020
  • HTML e CSS
Risposte
3
Visite
2K
HTML e CSS 6 Mag 2020
Leonardo Scotti
L
P
Query di ricerca profonda
  • Peterrey76
  • 31 Mar 2020
  • MySQL
Risposte
0
Visite
1K
MySQL 31 Mar 2020
Peterrey76
P
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?