Estrazione MySql da menù a tendina

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per quanto riguarda il primo quesito è semplice
basta fare due query e ricavare i numeri
PHP:
<?php
//i soliti dati di connessione
$query_iscritti=mysql_query("SELECT * FROM MY_DB");
$totale_iscritti=mysql_num_rows($query_iscritti);
$query_iscritti_google=mysql_query("SELECT * FROM MY_DB WHERE ref LIKE '%_google%'");
$totale_iscritti_google=mysql_num_rows($query_iscritti_google);
echo "il totale degli iscritti è $totale_iscritti<br>";
echo "il totale degli iscritti da google è $totale_iscritti_google<br>";
?>
per quanto riguarda il secondo, sì è fattibile
però quando si opera con le date bisogna stare attenti a quello che si immette (controlli vari)
per esempio se immetti la data 31-02-2010 il tutto ti va in pallino
per cui la difficoltà risiede nell'immissione e nei controlli.
se hai pazienza ti butto giù un esempio
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Pazienza? Ma certamente....ci mancherebbe altro! Rimango in attesa di risentirti e ne approfitto per ribadire ancora una volta tutto il mio compiacimento per l'aiuto che mi stai dando!!

Un Caro Saluto
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
il modo più semplice per impedire l'immissione di date assurde è fare tre <select>, anche se esistono metodi migliori

HTML:
<form name="per totali" method="post" action="la_pag_che_chiamerai.php">
seleziona giorno mese e anno
<!-- 
nelle select metto una data come selezionata sempre in modo da evitare altre verifiche 
che puoi cambiare
-->
<p>gg 
  <select name="giorno">
    <option value="01" selected>01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    <option value="04">01</option>
    <option value="05">02</option>
    <option value="06">03</option>
    <option value="07">07</option>
    <option value="08">08</option>
    <option value="09">09</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <!-- e tutti gli altri  sino a -->
    <option value="31">31</option>
  </select>
 mm 
 <select name="mese">
    <option value="01" selected>gennaio</option>
    <option value="02">febbraio</option>
    <option value="03">marzo</option> 
    <!-- e tutti gli altri  sino a -->
    <option value="12">dicembre</option> 
 </select> 
aa 
<select name="anno">
    <!-- inizia da anno che vuoi -->
    <option value="2008">2008</option>
    <option value="2009">2009</option>
    <option value="2010" selected>2010</option> 
    <!-- e continua con l'anno che vuoi (in ordine) -->
 </select>
</p>
<p>
  <input name="data" type="submit" id="data" value="invia data">  
  </form>
</p>
fatte le tre select, si raccoglie quanto immesso e si fa una piccola verifica.
La pagina di elaborazione (che può essere la stessa in cui hai il form) verifica la data e ti dice il numero degli iscritti nella data.
PHP:
<?php
//piccola funzione di verifica data
function aggiusta_data{$g,$m,$a){
	//guardo in che mese sono
	//trenta dì conta novembre con.....
	if($m="04" || $m="06" || $m="09" || $m="11"){// mesi da 30 gg
		if($g < "30"){$g="30";}//se hai messo 31 diventa 30
	}elseif($m="02"){//mese di febbraio, bisestile?
		//trasformo per sicurezza il valore dell'anno in intero
		$aa=(int)$a;
		if($aa%4==0){//non verifico se secolare in quanto il prossimo mi sembra che sia il 2400
			$ultimo_02="29";
		}else{//non è bisestile
			$ultimo_02="28";
		}
		if($g >"28"){$g=$ultimo_02;}//se maggiore di 28 diventa o 28 o 29
	}
	//la data a questo punto è corretta e posso usarla
	//visto che ti serve la data in americano aa-mm-gg
	//ma che usualmente in italia non si usa
	//costruisco entrambe come un array associativo
	$data['ame']=$a."-".$m."-".$g;
	$data['ita']=$g."-".$m."-".$a;
	// e ritorno il valore, finalmente
	return $data;
}//fine della function

if(isset($_POST['data'])){//verifico che sia stato premito il tasto di submit
	$giorno=$_POST['giorno'];//leggo i valori selezionati
	$mese=$_POST['mese'];
	$anno=$_POST['anno'];
$data_corretta=aggiusta_data($giorno,$mese,$anno);
$data_per_query=$data_corretta['ame'];
$data_per_messaggio=$data_corretta['ita'];
$query=mysql_query("SELECT * FROM MY_DB WHERE datareg='$data_per_query'"=;
$numero_iscitti=mysql_num_rows($query);

echo "il $data_per_messaggio si sono iscritti $numero_iscitti utenti<br>";
}//fine if submit
?>
per fare lo stesso con gli iscritti di google è simile, a te lo smanettamento.


p.s.
....tutto il mio compiacimento per l'aiuto che mi stai dando...
non preuccuparti, tanto non hai visto le fatture che mando a mrwm:)
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Una piccola puntualizzazione (sì, lo so che sono il solito pignolo!): sarebbe buona norma inizializzare gli array prima di usarli. Adoro PHP per la sua flessibilità, ma a volte è fin troppo permissivo. Java una cosa del genere non l'avrebbe mai permessa! :D
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao alex
cosa intendi?
in php scrivere
$arr=array('1','2','3');
oppure
$arr[0]="1";
$arr[1]="2";
$arr[2]="3";
oppure
$arr[]="1";
$arr[]="2";
$arr[]="3";
è la stesa cosa
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Allora ho creato un primo file html (prova.html) con il codice che mi hai passato, ho integrando le select mancanti:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
<form name="per totali" method="post" action="estrazione.php">
seleziona giorno mese e anno
<!-- 
nelle select metto una data come selezionata sempre in modo da evitare altre verifiche 
che puoi cambiare
-->
<p>Giorno 
  <select name="giorno">
    <option value="01" selected>01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    <option value="04">01</option>
    <option value="05">02</option>
    <option value="06">03</option>
    <option value="07">07</option>
    <option value="08">08</option>
    <option value="09">09</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>
    <option value="27">27</option>
    <option value="27">28</option>
    <option value="27">29</option>
    <option value="27">30</option>
    <!-- e tutti gli altri  sino a -->
    <option value="31">31</option>
  </select>
 Mese
 <select name="mese">
    <option value="01" selected>gennaio</option>
    <option value="02">febbraio</option>
    <option value="03">marzo</option> 
    <option value="04">aprile</option>
    <option value="05">maggio</option>
    <option value="06">giugno</option>
    <option value="07">luglio</option>
    <option value="08">agosto</option>
    <option value="09">settembre</option>
    <option value="10">ottobre</option>
    <option value="11">novembre</option>
    <!-- e tutti gli altri  sino a -->
    <option value="12">dicembre</option> 
 </select> 
 Anno
<select name="anno">
    <!-- inizia da anno che vuoi -->
 
    <option value="2010" selected>2010</option> 
    <!-- e continua con l'anno che vuoi (in ordine) -->
 </select>
</p>
<p>
  <input name="data" type="submit" id="data" value="invia data">  
  </form>
</p>
  </body>
</html>

Dopodiche ho creato un secondo file ma in php (estrazione.php) ma sbaglio qualcosa perchè non mi gira:

PHP:
<?php
$dbhost = "XXXXXXX";
$dbname = "XXXXXX";
$dbuser = "XXXXXX";
$dbpass = "XXXXX";

$link = mysql_connect($dbhost, $dbuser, $dbpass) or die("Could not connect");
    mysql_select_db($dbname);
//piccola funzione di verifica data
function aggiusta_data{$g,$m,$a){
    //guardo in che mese sono
    //trenta dì conta novembre con.....
    if($m="04" || $m="06" || $m="09" || $m="11"){// mesi da 30 gg
        if($g < "30"){$g="30";}//se hai messo 31 diventa 30
    }elseif($m="02"){//mese di febbraio, bisestile?
        //trasformo per sicurezza il valore dell'anno in intero
        $aa=(int)$a;
        if($aa%4==0){//non verifico se secolare in quanto il prossimo mi sembra che sia il 2400
            $ultimo_02="29";
        }else{//non è bisestile
            $ultimo_02="28";
        }
        if($g >"28"){$g=$ultimo_02;}//se maggiore di 28 diventa o 28 o 29
    }
    //la data a questo punto è corretta e posso usarla
    //visto che ti serve la data in americano aa-mm-gg
    //ma che usualmente in italia non si usa
    //costruisco entrambe come un array associativo
    $data['ame']=$a."-".$m."-".$g;
    $data['ita']=$g."-".$m."-".$a;
    // e ritorno il valore, finalmente
    return $data;
}//fine della function

if(isset($_POST['data'])){//verifico che sia stato premito il tasto di submit
    $giorno=$_POST['giorno'];//leggo i valori selezionati
    $mese=$_POST['mese'];
    $anno=$_POST['anno'];
$data_corretta=aggiusta_data($giorno,$mese,$anno);
$data_per_query=$data_corretta['ame'];
$data_per_messaggio=$data_corretta['ita'];
$query=mysql_query("SELECT * FROM `my_db` WHERE datareg='$data_per_query'"=;
$numero_iscitti=mysql_num_rows($query);

echo "Il $data_per_messaggio si sono iscritti $numero_iscitti utenti<br>";
}//fine if submit
echo "<BR><A HREF=\"prova.html\"> Indietro</A>";
//mysql_close($link);//questo non serve, ci pensa php a chiudere il db
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi sono accorto che nel copia incolla mi è rimasto qualcosa, un uguale che non c'entra, attaccato

$query=mysql_query("SELECT * FROM `my_db` WHERE datareg='$data_per_query'"=;

toglilo e sappimi dire
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi sono accorto di un altro piccolo disguido

function aggiusta_data{$g,$m,$a){
togli la graffa e mettei (
function aggiusta_data($g,$m,$a){
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
mea culpa, mea massima culpa
dentro la funzione mi sono dimenticato il doppio==

if($m="04" || $m="06" || $m="09" || $m="11"){// mesi da 30 gg
if($g < "30"){$g="30";}//se hai messo 31 diventa 30
}elseif($m="02"){//mese di febbraio, bisestile?

correggi in

if($m=="04" || $m=="06" || $m=="09" || $m=="11"){// mesi da 30 gg
if($g < "30"){$g="30";}//se hai messo 31 diventa 30
}elseif($m=="02"){//mese di febbraio, bisestile?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
sempre a spizzico e bocconi

if($m=="04" || $m=="06" || $m=="09" || $m=="11"){// mesi da 30 gg
if($g < "30"){$g="30";}//se hai messo 31 diventa 30
}elseif($m=="02"){//mese di febbraio, bisestile?
correggi in

if($m=="04" || $m=="06" || $m=="09" || $m=="11"){// mesi da 30 gg
if($g > "30"){$g="30";}//se hai messo 31 diventa 30
}elseif($m=="02"){//mese di febbraio, bisestile?
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Ciao,

ho apportato le modifiche che mi hai suggerito ma nulla. Su IE mi dice Impossibile visualizzare la pagina mentre su Firefox mi restiotuisce pagina bianca e la console degli errori non mi dice nulla. I codici dei 2 file sono questi:

prova.html

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
<form name="per totali" method="post" action="estrazione.php">
seleziona giorno mese e anno
<!-- 
nelle select metto una data come selezionata sempre in modo da evitare altre verifiche 
che puoi cambiare
-->
<p>Giorno 
  <select name="giorno">
    <option value="01" selected>01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    <option value="04">01</option>
    <option value="05">02</option>
    <option value="06">03</option>
    <option value="07">07</option>
    <option value="08">08</option>
    <option value="09">09</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>
    <option value="27">27</option>
    <option value="27">28</option>
    <option value="27">29</option>
    <option value="27">30</option>
    <!-- e tutti gli altri  sino a -->
    <option value="31">31</option>
  </select>
 Mese
 <select name="mese">
    <option value="01" selected>gennaio</option>
    <option value="02">febbraio</option>
    <option value="03">marzo</option> 
    <option value="04">aprile</option>
    <option value="05">maggio</option>
    <option value="06">giugno</option>
    <option value="07">luglio</option>
    <option value="08">agosto</option>
    <option value="09">settembre</option>
    <option value="10">ottobre</option>
    <option value="11">novembre</option>
    <!-- e tutti gli altri  sino a -->
    <option value="12">dicembre</option> 
 </select> 
 Anno
<select name="anno">
    <!-- inizia da anno che vuoi -->
 
    <option value="2010" selected>2010</option> 
    <!-- e continua con l'anno che vuoi (in ordine) -->
 </select>
</p>
<p>
  <input name="data" type="submit" id="data" value="invia data">  
  </form>
</p>
  </body>
</html>

estrazione.php

PHP:
<?php
$dbhost = "XXXXXXX";
$dbname = "XXXXXXX";
$dbuser = "XXXXXXX";
$dbpass = "XXXXXXX";

$link = mysql_connect($dbhost, $dbuser, $dbpass) or die("Could not connect");
    mysql_select_db($dbname);
//piccola funzione di verifica data
function aggiusta_data{($g,$m,$a){
    //guardo in che mese sono
    //trenta dì conta novembre con.....
    if($m=="04" || $m=="06" || $m=="09" || $m=="11"){// mesi da 30 gg
if($g < "30"){$g="30";}//se hai messo 31 diventa 30
}elseif($m=="02"){//mese di febbraio, bisestile?
        //trasformo per sicurezza il valore dell'anno in intero
        $aa=(int)$a;
        if($aa%4==0){//non verifico se secolare in quanto il prossimo mi sembra che sia il 2400
            $ultimo_02="29";
        }else{//non è bisestile
            $ultimo_02="28";
        }
        if($g >"28"){$g=$ultimo_02;}//se maggiore di 28 diventa o 28 o 29
    }
    //la data a questo punto è corretta e posso usarla
    //visto che ti serve la data in americano aa-mm-gg
    //ma che usualmente in italia non si usa
    //costruisco entrambe come un array associativo
    $data['ame']=$a."-".$m."-".$g;
    $data['ita']=$g."-".$m."-".$a;
    // e ritorno il valore, finalmente
    return $data;
}//fine della function

if(isset($_POST['data'])){//verifico che sia stato premito il tasto di submit
    $giorno=$_POST['giorno'];//leggo i valori selezionati
    $mese=$_POST['mese'];
    $anno=$_POST['anno'];
$data_corretta=aggiusta_data($giorno,$mese,$anno);
$data_per_query=$data_corretta['ame'];
$data_per_messaggio=$data_corretta['ita'];
$query=mysql_query("SELECT * FROM `my_db` WHERE datareg='$data_per_query'";
$numero_iscitti=mysql_num_rows($query);

echo "Il $data_per_messaggio si sono iscritti $numero_iscitti utenti<br>";
}//fine if submit
echo "<BR><A HREF=\"prova.php\"> Indietro</A>";
//mysql_close($link);//questo non serve, ci pensa php a chiudere il db
?>

Grazie ancora
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
tolti gli "orrorucci", l'uguale, la parentesi e il maggiore sino a

$data_per_messaggio=$data_corretta['ita']; //sino a qui
funziona l'ho provato tolto il db che non ho
cioè stampando le due date mi risulta, es,
2010-05-18
e
18-05-2010
quindi l'errore è dopo, ma come ti ho detto non ho il tuo db quindi non lo posso provare.
ora ti dico cosa fare (così impari anche il debag)
per prima cosa dividi la query in questo modo

PHP:
//ecc...
$query_stringa="SELECT * FROM `my_db` WHERE datareg='$data_per_query'";
//qui scrivi
var_dump($query_stringa);//poi lo toglierai, qui vedi come risulta
$query=mysql_query($query_stringa);
var_dump($query);//poi lo toglierai se non funzia qui ti da FALSE
//ecc....

l'uso di var_dump (o anche di echo, ma meglio var_dump che ti informa anche del tipo di variabile) messo nei punti strategici è uno dei modi migliori per fare il debag (salvo che tu non abbia programmi costosi)
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Ho fatto come mi hai detto ma cmq non va nulla....credo di fare delle sciocchezze ma non capisco dove.

PHP:
<?php
$dbhost = "XXXXXX";
$dbname = "XXXXXX";
$dbuser = "XXXXXX";
$dbpass = "XXXXXX";
$link = mysql_connect($dbhost, $dbuser, $dbpass) or die("Could not connect");
    mysql_select_db($dbname);
//piccola funzione di verifica data
function aggiusta_data{($g,$m,$a){
    //guardo in che mese sono
    //trenta dì conta novembre con.....
    if($m=="04" || $m=="06" || $m=="09" || $m=="11"){// mesi da 30 gg
if($g < "30"){$g="30";}//se hai messo 31 diventa 30
}elseif($m=="02"){//mese di febbraio, bisestile?
        //trasformo per sicurezza il valore dell'anno in intero
        $aa=(int)$a;
        if($aa%4==0){//non verifico se secolare in quanto il prossimo mi sembra che sia il 2400
            $ultimo_02="29";
        }else{//non è bisestile
            $ultimo_02="28";
        }
        if($g >"28"){$g=$ultimo_02;}//se maggiore di 28 diventa o 28 o 29
    }
    //la data a questo punto è corretta e posso usarla
    //visto che ti serve la data in americano aa-mm-gg
    //ma che usualmente in italia non si usa
    //costruisco entrambe come un array associativo
    $data['ame']=$a."-".$m."-".$g;
    $data['ita']=$g."-".$m."-".$a;
    // e ritorno il valore, finalmente
    return $data;
}//fine della function

if(isset($_POST['data'])){//verifico che sia stato premito il tasto di submit
    $giorno=$_POST['giorno'];//leggo i valori selezionati
    $mese=$_POST['mese'];
    $anno=$_POST['anno'];
$data_corretta=aggiusta_data($giorno,$mese,$anno);
$data_per_query=$data_corretta['ame'];
$data_per_messaggio=$data_corretta['ita'];
$query_stringa=mysql_query("SELECT * FROM `my_db` WHERE datareg='$data_per_query'";
var_dump($query_stringa);//poi lo toglierai, qui vedi come risulta
$query=mysql_query($query_stringa);
var_dump($query);//poi lo toglierai se non funzia qui ti da FALSE 
$numero_iscitti=mysql_num_rows($query);

echo "Il $data_per_messaggio si sono iscritti $numero_iscitti utenti<br>";
}//fine if submit
echo "<BR><A HREF=\"prova.php\"> Indietro</A>";
//mysql_close($link);//questo non serve, ci pensa php a chiudere il db
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto hai lasciato un mysql_query in più
$query_stringa=mysql_query("SELECT * FROM `my_db` WHERE datareg='$data_per_query'";
deve essere
$query_stringa="SELECT * FROM my_db WHERE datareg='$data_per_query'";
su quwsta riga il var_dump dovrebbe darti (es)
string(62) "SELECT * FROM my_db WHERE datareg='2010-01-12'"
circa 62
poi togli gli apici attorno a my_db, inoltre ho notato che qualche volta scrivi MY_DB e qui my_db, guarda che php ha un brutto difetto è casesensitive, per cui per php MY_DB è una cosa diversa da my_db o anche da My_db ecc...
quindi se la tua tabella si chiama MY_DB e scrivi nella select my_db, php non la riconosce
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Porca Miseria...ancora nulla! Eppure so che la soluzione è vicina..... per quanto riguarda la questione del my_db della query
"SELECT * FROM my_db WHERE datareg='$data_per_query'"
quello che vedi è un nome fittizio che io poi prontamente cambio prima di caricare il file sul server...lo faccio solo per evitare di mettere in giro dati "sensibili". Ti ho rimesso il codice "pulito"senza il dump che mi avevi suggerito prima.....


PHP:
<?php
$dbhost = "xxxxxx";
$dbname = "xxxxxxx";
$dbuser = "xxxxxxxr";
$dbpass = "xxxxxxxxx";

$link = mysql_connect($dbhost, $dbuser, $dbpass) or die("Could not connect");
    mysql_select_db($dbname);
//piccola funzione di verifica data
function aggiusta_data{($g,$m,$a){
    //guardo in che mese sono
    //trenta dì conta novembre con.....
    if($m=="04" || $m=="06" || $m=="09" || $m=="11"){// mesi da 30 gg
if($g < "30"){$g="30";}//se hai messo 31 diventa 30
}elseif($m=="02"){//mese di febbraio, bisestile?
        //trasformo per sicurezza il valore dell'anno in intero
        $aa=(int)$a;
        if($aa%4==0){//non verifico se secolare in quanto il prossimo mi sembra che sia il 2400
            $ultimo_02="29";
        }else{//non è bisestile
            $ultimo_02="28";
        }
        if($g >"28"){$g=$ultimo_02;}//se maggiore di 28 diventa o 28 o 29
    }
    //la data a questo punto è corretta e posso usarla
    //visto che ti serve la data in americano aa-mm-gg
    //ma che usualmente in italia non si usa
    //costruisco entrambe come un array associativo
    $data['ame']=$a."-".$m."-".$g;
    $data['ita']=$g."-".$m."-".$a;
    // e ritorno il valore, finalmente
    return $data;
}//fine della function

if(isset($_POST['data'])){//verifico che sia stato premito il tasto di submit
    $giorno=$_POST['giorno'];//leggo i valori selezionati
    $mese=$_POST['mese'];
    $anno=$_POST['anno'];
$data_corretta=aggiusta_data($giorno,$mese,$anno);
$data_per_query=$data_corretta['ame'];
$data_per_messaggio=$data_corretta['ita'];
$query_stringa=("SELECT * FROM my_db WHERE datareg='$data_per_query'");
$numero_iscitti=mysql_num_rows($query);

echo "Il $data_per_messaggio si sono iscritti $numero_iscitti utenti<br>";
}//fine if submit
echo "<BR><A HREF=\"index.php\"> Indietro</A>";
?>
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
TROVATO!!!! Come vedi non ci dormo la notte....è molto importante per me poter finire questo lavoro...poi quando si sta a casa perchè si sta poco bene c'è parecchio tempo...cmq c'era una { di troppo all'inizio della function aggiusta data. CONTINUA a non FUNZIONARE PER BENE ma è un passo avanti!! Adesso quando seleziono 27 ottobre 2010 mi visualizza

Il 27-10-2010 si sono iscritti utenti

ma non mi riporta il numero degli utenti. Oltretutto c'è un problema nella function aggiusta data perchè se seleziono qualunque giorno di uno dei 4 mesi che hanno 30 giorni ( 4-6-9-11) mi riporta sempre la data 30-mese scelto di 30 giorni-2010.

prova.html

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
<form name="per totali" method="post" action="estrazione.php">
seleziona giorno mese e anno
<!-- 
nelle select metto una data come selezionata sempre in modo da evitare altre verifiche 
che puoi cambiare
-->
<p>Giorno 
  <select name="giorno">
    <option value="01" selected>01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    <option value="04">04</option>
    <option value="05">05</option>
    <option value="06">06</option>
    <option value="07">07</option>
    <option value="08">08</option>
    <option value="09">09</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>
    <option value="27">27</option>
    <option value="28">28</option>
    <option value="29">29</option>
    <option value="30">30</option>
    <!-- e tutti gli altri  sino a -->
    <option value="31">31</option>
  </select>
 Mese
 <select name="mese">
    <option value="01" selected>gennaio</option>
    <option value="02">febbraio</option>
    <option value="03">marzo</option> 
    <option value="04">aprile</option>
    <option value="05">maggio</option>
    <option value="06">giugno</option>
    <option value="07">luglio</option>
    <option value="08">agosto</option>
    <option value="09">settembre</option>
    <option value="10">ottobre</option>
    <option value="11">novembre</option>
    <!-- e tutti gli altri  sino a -->
    <option value="12">dicembre</option> 
 </select> 
 Anno
<select name="anno">
    <!-- inizia da anno che vuoi -->
 
    <option value="2010" selected>2010</option> 
    <!-- e continua con l'anno che vuoi (in ordine) -->
 </select>
</p>
<p>
  <input name="data" type="submit" id="data" value="invia data">  
  </form>
</p>
  </body>
</html>

estrazione.php

PHP:
 <?php
$dbhost = "XXXXXX";
$dbname = "XXXXXX";
$dbuser = "XXXXXX";
$dbpass = "XXXXXX";

$link = mysql_connect($dbhost, $dbuser, $dbpass) or die("Could not connect");
    mysql_select_db($dbname);
//piccola funzione di verifica data
function aggiusta_data($g,$m,$a){
    //guardo in che mese sono
    //trenta dì conta novembre con.....
    if($m=="04" || $m=="06" || $m=="09" || $m=="11"){// mesi da 30 gg
if($g < "30"){$g="30";}//se hai messo 31 diventa 30
}elseif($m=="02"){//mese di febbraio, bisestile?
        //trasformo per sicurezza il valore dell'anno in intero
        $aa=(int)$a;
        if($aa%4==0){//non verifico se secolare in quanto il prossimo mi sembra che sia il 2400
            $ultimo_02="29";
        }else{//non è bisestile
            $ultimo_02="28";
        }
        if($g >"28"){$g=$ultimo_02;}//se maggiore di 28 diventa o 28 o 29
    }
    //la data a questo punto è corretta e posso usarla
    //visto che ti serve la data in americano aa-mm-gg
    //ma che usualmente in italia non si usa
    //costruisco entrambe come un array associativo
    $data['ame']=$a."-".$m."-".$g;
    $data['ita']=$g."-".$m."-".$a;
    // e ritorno il valore, finalmente
    return $data;
}//fine della function

if(isset($_POST['data'])){//verifico che sia stato premito il tasto di submit
    $giorno=$_POST['giorno'];//leggo i valori selezionati
    $mese=$_POST['mese'];
    $anno=$_POST['anno'];
$data_corretta=aggiusta_data($giorno,$mese,$anno);
$data_per_query=$data_corretta['ame'];
$data_per_messaggio=$data_corretta['ita'];
$query_stringa=("SELECT * FROM 'my_db' WHERE datareg='%$data_di_oggi_americano%'");
$numero_iscritti=mysql_num_rows($query_stringa);

echo "Il $data_per_messaggio si sono iscritti $numero_iscritti utenti<br>";
}//fine if submit
echo "<BR><A HREF=\"prova.html\"> Indietro</A>";
//mysql_close($link);//questo non serve, ci pensa php a chiudere il db
?>
 

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Ciao,

sono riuscito a capire quale era il problema che non faceva funzionare la function aggiusta data c'è era un <30 anzichè un >30 e perciò se sceglievi uno dei mesi di 30 giorni qualunque giorno alla fine ti restituiva 30.

Detto questo, alla fine comunque c'è un problema nella query perchè non mi riporta nessun dato. Io scelgo la data dell'estrazione (esempio 26-09-2010), clicco invio e ottengo

Il 26-09-2010 si sono iscritti utenti

ma nessun utente viene riportato ( nessun numero). Cos'è che sbaglio?

Indietro
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
PHP:
$query_stringa=("SELECT * FROM 'my_db' WHERE datareg='%$data_di_oggi_americano%'");

Ovviamente $data_di_oggi_americano è definito da qualche parte vero?
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Progressbar estrazione dati da tabella mySQL Ajax 9
L estrazione dati da mysql in php e salvataggio in cartella del server PHP 51
S Php e mysql, estrazione da una tabella e inserimento in un'altra tabella PHP 14
gandalf1959 Estrazione di un singolo dato da una ricerca mysql PHP 1
N Estrazione Record multipli da MySQL in OO PHP 0
F Estrazione da db MySQL con query molto lunga PHP 13
B Estrazione Tabella MYSQL PHP 2
I estrazione valore da mysql where nome_campo è uguale alla session_id PHP 10
I estrazione immagine in 2 formati da una tabella mysql PHP 3
I estrazione mysql in base al login PHP 77
P Menu a discesa con estrazione dati da datbase mysql PHP 21
L Estrazione immagine database mysql PHP 1
A problema: estrazione dati da query mysql e assegnazione ad una variabile PHP 2
K Estrazione di più risultati da tabelle correlate PHP 5
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
D Chiave unica in estrazione dati da array php PHP 0
L Estrazione valori max su più campi MySQL 4
M [PHP] Estrazione random con nomi presi dal db PHP 22
gandalf1959 Estrazione e visualizzazione del simbolo dell'euro php/mysqli PHP 0
ronny1710 Estrazione Dati Tessera Sanitaria .NET Framework 1
F Estrazione Email di persone selezionate e attive / facebook + invio di massa! Annunci servizi di Social Media Marketing 0
V Estrazione di una singola banda da file multi banda (RGB) con Python Programmazione 0
creatorweb [PHP] estrazione ciclica dati con 2 dati alla volta PHP 2
O [PHP] problema estrazione immagine da db PHP 12
Gigi87 [PHP] Estrazione dati da forum o da social network PHP 1
V [PHP] Estrazione con SQL PHP 1
M [MS Access] Estrazione record multipli MS Access 1
E [PHP] estrazione dati in modo non continuativo PHP 1
S [PHP] estrazione dal DB complicata PHP 7
asevenx [Javascript] Estrazione dal database di un valore in base ad una scelta Javascript 7
P Probelma estrazione stringa PHP 5
C Estrazione Dati da Pagine Gialle PHP 0
L Estrazione Articoli Random da Tabella senza doppioni PHP 1
A Estrazione dati da tabella sql MySQL 27
T Codice per estrazione dati da db PHP 4
F estrazione codice Javascript 0
R Javascript e html - estrazione EXIF da jpg con link per geolocalizzazione google maps Javascript 0
D php estrazione random nomi e senza ripetizione PHP 14
M Problema con estrazione coordinate da google geocoding PHP 1
L Conversione date ed estrazione PHP 0
L estrazione dati per login PHP 0
W Estrazione dati da DB PHP 20
N Problemi estrazione / visualizzazione immagini dal database con PDO PHP 2
L Estrazione dati per settimana. PHP 13
L estrazione dati e immagini in contemporanea PHP 4
B Estrazione Database valori multipli MySQL 4
M estrazione dati casuali da database Database 0
A Evitare estrazione record doppioni PHP 2
C [PHP][MY SQL] - Estrazione dati database tramite form PHP 8

Discussioni simili