• Home
  • Forum
  • Fare Web
  • PHP

Estrazione MySql da menù a tendina

  • Creatore Discussione Creatore Discussione ciopin
  • Data di inizio Data di inizio 18 Set 2010
  • Tag Tag
    estrazione menu mysql tendina
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #21
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
 
C

ciopin

Utente Attivo
26 Mar 2010
59
0
0
  • 28 Set 2010
  • #22
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.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #23
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...
Clicca per allargare...
non preuccuparti, tanto non hai visto le fatture che mando a mrwm
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 28 Set 2010
  • #24
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!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #25
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
 
C

ciopin

Utente Attivo
26 Mar 2010
59
0
0
  • 28 Set 2010
  • #26
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.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #27
ciao
dimmi che errore ti da.
niuno è perfetto (salvo alex)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #28
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.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #29
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.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #30
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?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 28 Set 2010
  • #31
Lo so che scrivere:
PHP:
$arr[0] = 'elemento';
E' lo stesso, ma se non vuoi definire subito gli elementi è più elegante:
PHP:
$arr = array();
// altro codice
$arr[0] = 'elemento';
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #32
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?
 
C

ciopin

Utente Attivo
26 Mar 2010
59
0
0
  • 28 Set 2010
  • #33
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.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #34
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)
 
C

ciopin

Utente Attivo
26 Mar 2010
59
0
0
  • 28 Set 2010
  • #35
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.044
150
63
PR
www.borgo-italia.it
  • 28 Set 2010
  • #36
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
 
C

ciopin

Utente Attivo
26 Mar 2010
59
0
0
  • 28 Set 2010
  • #37
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>";
?>
 
C

ciopin

Utente Attivo
26 Mar 2010
59
0
0
  • 28 Set 2010
  • #38
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
?>
 
C

ciopin

Utente Attivo
26 Mar 2010
59
0
0
  • 30 Set 2010
  • #39
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
  • 30 Set 2010
  • #40
PHP:
$query_stringa=("SELECT * FROM 'my_db' WHERE datareg='%$data_di_oggi_americano%'");

Ovviamente $data_di_oggi_americano è definito da qualche parte vero?
 
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

E
Progressbar estrazione dati da tabella mySQL
  • epag8
  • 11 Apr 2021
  • Ajax
Risposte
9
Visite
4K
Ajax 12 Apr 2021
marino51
L
estrazione dati da mysql in php e salvataggio in cartella del server
  • luigichi
  • 28 Feb 2017
  • PHP
  • 2 3
Risposte
51
Visite
10K
PHP 14 Mar 2017
luigichi
L
S
Php e mysql, estrazione da una tabella e inserimento in un'altra tabella
  • SiKei2
  • 20 Mag 2016
  • PHP
Risposte
14
Visite
5K
PHP 20 Mag 2016
SiKei2
S
Estrazione di un singolo dato da una ricerca mysql
  • gandalf1959
  • 1 Dic 2015
  • PHP
Risposte
1
Visite
1K
PHP 1 Dic 2015
gandalf1959
N
Estrazione Record multipli da MySQL in OO
  • nurbi76
  • 17 Ott 2013
  • PHP
Risposte
0
Visite
1K
PHP 17 Ott 2013
nurbi76
N
F
Estrazione da db MySQL con query molto lunga
  • Fxxxx
  • 10 Feb 2013
  • PHP
Risposte
13
Visite
4K
PHP 10 Feb 2013
Fxxxx
F
B
Estrazione Tabella MYSQL
  • bitox
  • 19 Dic 2012
  • PHP
Risposte
2
Visite
1K
PHP 20 Dic 2012
bitox
B
I
estrazione valore da mysql where nome_campo è uguale alla session_id
  • iperboreo
  • 13 Ott 2012
  • PHP
Risposte
10
Visite
2K
PHP 14 Ott 2012
iperboreo
I
I
estrazione immagine in 2 formati da una tabella mysql
  • iperboreo
  • 10 Ott 2012
  • PHP
Risposte
3
Visite
1K
PHP 12 Ott 2012
borgo italia
I
estrazione mysql in base al login
  • iperboreo
  • 21 Giu 2012
  • PHP
  • 2 3 4
Risposte
77
Visite
13K
PHP 5 Ago 2012
paperinik4
P
P
Menu a discesa con estrazione dati da datbase mysql
  • paolomi
  • 6 Apr 2011
  • PHP
  • 2
Risposte
21
Visite
8K
PHP 13 Apr 2011
paolomi
P
L
Estrazione immagine database mysql
  • leon-kennedy
  • 4 Dic 2010
  • PHP
Risposte
1
Visite
2K
PHP 5 Dic 2010
alessandro1997
A
problema: estrazione dati da query mysql e assegnazione ad una variabile
  • ariannaari
  • 28 Set 2010
  • PHP
Risposte
2
Visite
4K
PHP 29 Set 2010
ariannaari
A
K
Estrazione di più risultati da tabelle correlate
  • Kiko74b
  • 5 Apr 2023
  • PHP
Risposte
5
Visite
994
PHP 26 Apr 2023
marino51
L
Estrazione dati php
  • LucaBordi
  • 23 Feb 2021
  • Database
Risposte
6
Visite
2K
Database 26 Feb 2021
LucaBordi
L
L
  • Bloccata
Estrazione dati casuali non doppioni
  • LucaBordi
  • 23 Feb 2021
  • MySQL
Risposte
1
Visite
2K
MySQL 23 Feb 2021
Max 1
D
Chiave unica in estrazione dati da array php
  • DiegoPTn
  • 22 Apr 2020
  • PHP
Risposte
0
Visite
1K
PHP 22 Apr 2020
DiegoPTn
D
L
Estrazione valori max su più campi
  • lorenzo84
  • 9 Apr 2020
  • MySQL
Risposte
4
Visite
1K
MySQL 11 Apr 2020
lorenzo84
L
M
[PHP] Estrazione random con nomi presi dal db
  • Max61
  • 17 Set 2019
  • PHP
  • 2
Risposte
22
Visite
3K
PHP 19 Set 2019
Max61
M
Estrazione e visualizzazione del simbolo dell'euro php/mysqli
  • gandalf1959
  • 4 Lug 2019
  • PHP
Risposte
0
Visite
1K
PHP 4 Lug 2019
gandalf1959
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?