ciao
due cose
in che modo il mese? es 01, 02... o gen, feb...
poi ma se metti solo il mese non ti somma anche le spese (per il mese selezionato) anche degli anni precedenti e/o seguenti?
ciao
tante domande perchè in funzione delle risposte lo script si puo (si deve) fare in modo diverso.
quindi da quello che ho capito, comunque ti devi prima selezioanare l'anno e in base a tale selezione scegli la tabella. esempio
$anno=$_POST['anno'];//es 2010 2011 2012.......
$tabella="spese".$anno;//es in $tabella spese2011
per cui (a parte le altre scelte) nella selcect avrai
$q="SELECT * FROM $tabella ......";
è giusto così?
p.s.
ma a che ti serve fare tante tabelle? quando selezioni la data puoi selezionare anche l'anno
ciao
inizio a darti alcune indicazioni
io intanto farei due talbelle
1. tabella tipo di spesa
id_ts: int(6) autoincrement primary key | tipo: varchar(50)
2. tabella spese
id_sp: int(6) autoincrement primary key | id_ts: int(6) | data: varchar(10) | tipo: varchar(50) | costo: float(8,2)
in questo modo puoi mettere un nuovo tipo di spesa/modificarlo/eliminarlo e quando immetti e/o leggi i costi
sei sicuro (o almeno abbastanza) di non commettere errori e noterai l'id_ts comune
per prima cosa ti fai un form in una pagina per immettere il tipo di spesa (basta un campo di testo e il sub)
e la parte php per registrare
pag inserisci_tipo.php
PHP:
<?php
//dati di connessione
if(isset($_POST['Submit'])){
if(trim($_POST['tipo_spesa'])==""){
echo "non può essere vuoto";
}else{
//tratto la voce in modo che sia il piu confrontabile possibile
$tipo=addslashes(strtolower(trim($_POST['tipo_spesa'])));
$query=mysql_query("SELECT * FROM tipi_spesa WHERE tipo='$tipo'");
$esiste=mysql_num_rows($query);
if($esiste > 0){
echo "il tipo di spesa è gia esistente";
}else{
$query=mysql_query("INSERT INTO tipi_spesa(tipo) VALUES('$tipo')");
if($query){
echo "tipo di spesa salvato";
}else{
echo "c'è stato un errore";
}
}
}
}
?>
<!-- qui il form semplice per input tipo spesa -->
poi farai la parte html/php per inserire una spesa
pag inserisci_spesa.php
PHP:
<?php
//dati di connessione
if(isset($_POST['Submit'])){
/*non ti metto tutti i controlli che
sarebbero utili sui vari $_POST, soprattutto se lo script
dovesse essere usato da terzi
*/
$tipo_spesa=$_POST['Submit'];//qui ricevi es. 12|poste e telegrafi
//avendo inviato il dato in quel modo lo divido in due
$ex=explode("|",$tipo_spesa);
//es. in $ex[0] trovi 12 e in $ex[0] trovi poste e telegrafi
//e le trasformo in variabili semplice in modo da far meno fatica a scrivere poi la query
$id_tr=ex[0];
$tipo=ex[1];
$data=$_POST['data'];// devi assicurarti che sia nel formato aaaa-mm-gg
$spesa=$_POST['spesa'];//qui devi verificare che sia nella forma 000.00 col punto e non con la virgola decimale
//e finalmente la query di inserimento cioe un dato numerico di tipo float
$query="INSERT INTO spese(id_ts, data, tipo, costo) VALUES('$id_ts','$data','$tipo','$spesa')";
//qui mentre fai le prove puoi mettere un var_dump($query); in modo da vedere se è giusta
if(mysql_query($query)){
echo "$data tipo: $tipo di $spesa € è stata registrata";
}else{
echo "c'è stato un errore";
}
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ;?>" method="post">
seleziona tipo di spesa <select name="tipo">
<?php
$query=mysql_query("SELECT * FROM tipo_spesa ORDER BY tipo");
while($riga=mysql_fetch_array($query)){
//basterebbe tramettere l'id_ts , ma per comodità in seguito trasmetto anche la voce tipo
$val=$riga['id_ts']."|".$riga['tipo'];
echo "<option value=\"$val\">".$riga['tipo']."</option>";
}
?>
</select><br>
inserisci data e qui ti conviene un datapiker per essere sicuro di immettere aaaa-mm-gg <br>
inserisci costo <input name="spesa" type="text" value="0,00"> €<br>
<!-- potresti fare due piccoli campi di input uno per gli interi l'alro per i decimali che poi riunisci
nella parte php -->
<input type="submit" name="Submit" value="Invia">
</form>
se intanto metti a posto questo (se non l'ai già fatto) sei sicuro (abbastanza) di inputare i dati in modo che poi puoi fare tutte
le ricerche che vuoi (come ti indicherò nel prossimo post, abbi pazienza)
ciao
ecco il seguito (sperando che funzi)
pag risultati.php
PHP:
<?php
//dati di connessione
if(isset($_POST['Submit'])){
//qui iniziamo a leggere le tue scelte in modo da eseguire le selezioni
$tipo=$_POST['tipo'];
$anno=$_POST['anno'];
$mese=$_POST['mese'];
//selezione per tipo
$we=" WHERE 1=1 ";
if($tipo!=""){
$we .= "AND tipo='$tipo' ";
}
//qui mi devo costruire la data e l'eventuale intervallo: NOTA che se metto il mese devo aver dato anche l'anno
//oppure se non do l'anno ma do il mese, prende l'anno corrente
if($anno !=""){//l'anno non è vuoto
if($mese==""){//ho dato l'anno ma non il mese
$dat_ini=$anno."-00-00";//es. risulterà 2011-00-00
$dat_fin=$anno."-12-32";//es 2011-12-32
$we .= " AND data > '$dat_ini' AND data < '$dat_fin' ";
}else{//ho dato sia l'anno che il mese
$dat_ini=$anno."-".$mese."-00";//es. 2011-03-00
$dat_fin=$anno."-".$mese."-32";//es. 2011-03-32
$we .= " AND data > '$dat_ini' AND data < '$dat_fin' ";
}
}elseif($anno =="" && $mese !=""){//o dato il mese, ma non l'anno
$anno=date("Y");//legge l'anno corrente
$dat_ini=$anno."-".$mese."-00";//es. 2011-03-00
$dat_fin=$anno."-".$mese."-32";//es. 2011-03-32
$we .= " AND data > '$dat_ini' AND data < '$dat_fin' ";
}
//a questo punto posso costruire la query
$query="SELECT * FROM spese $we";
//qui ti conviene mentre provi mettere un var_dump($query); per verificarne l'esattezza
$result=mysql_query($query);
if(mysql_num_rows($result)>0){
echo "<table><tr><td>tipo costo</td><td>costo</td></tr>";
while($riga=mysql_fetch_array($query)){
$tipo=$riga['tipo'];
$entità=$riga['costo'];
$tot_gen += $entita;//calcolo il totale
echo "<tr><td>$tipo_costo</td><td>$entita</td></tr>";
}
echo "<tr><td>TOTALE</td><td>$tot_gen</td></tr></table>";
}else{
echo "non ci sono spese con le scelte selezionate";
}
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ;?>" method="post">
seleziona tipo di spesa <select name="tipo">
<option value="">-tutti i tipi-</option>
<?php
$query=mysql_query("SELECT * FROM tipo_spesa ORDER BY tipo");
while($riga=mysql_fetch_array($query)){
echo "<option value=\"".$riga['id_ts']."\">".$riga['tipo']."</option>";
}
?>
</select><br>
seleziona anno <select name="anno">
<option value="">-tutti gli anni-</option>
<!-- qui metti gli anni che ti possono interessare -->
<option value="2000">2000</option>
<!-- eccetera, scherzo sino al 3000 -->
<option value="3000">3000</option>
</select><br>
selezione mese <select name="mese">
<option value="">-tutti i mesi-</option>
<!-- qui metti i mesi -->
<option value="01">gennaio</option>
<option value="02">febbraio</option>
<!-- eccetera -->
<option value="12">dicembre</option>
</select><br>
<input type="submit" name="Submit" value="Invia">
</form>
guarda che ho messo i nomi delle tabelle e dei campi a caso, verifica che corripsondano ai tuoi, poi prova e
dimmi se ti da errori (probabile), quali e dove