Estrazione MySql da menù a tendina

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
 
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
 
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:)
 
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
 
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
 
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
?>
 
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
 
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){
 
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?
 
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?
 
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
 
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)
 
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
?>
 
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
 
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>";
?>
 
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
?>
 
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
 
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