Sommare i dati in una tabella

gracito

Utente Attivo
30 Mag 2010
109
0
0
Ciao

un'altra domanda, se volessi anche la ricerca per mese?

Selezionare il mese attraverso una select, quindi effettuare la ricerca per mese e per tipo_spesa.

es Gennaio | Albergo.

grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
per prima cosa dovresti dire in che formato salvi la data
timestamp
formato americano es 2011-01-26
europeo 26-01-2011
o in che modo?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
un'altra domanda:
per fare la ricerca cosa inputi? anno e mese?

poi
per eliox
non mi ricordo la sintassi di beetwen nella select puoi postarla?thank
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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?
 

gracito

Utente Attivo
30 Mag 2010
109
0
0
Ciao

vorrei fare la ricerca per mese( 1, 2 ......) , inquanto creo una tabella diversa per ogni anno.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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
 

gracito

Utente Attivo
30 Mag 2010
109
0
0
Ciao

potrei creare una tabella e inserirvi tutte le spese e poi fare come mi dicevi la selezione per mese e per anno (che non so fare).
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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
 

gracito

Utente Attivo
30 Mag 2010
109
0
0
Ciao

e ancora mille grazie,

mi da un errore quì, nella pagina inserisci_spesa.php

PHP:
    $id_tr=ex[0];  //mi da errore in questa riga
    $tipo=ex[1];
errore: Parse error: syntax error, unexpected '[' in C:............

grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
l'ho buttato giù in fretta quindi mi è rimasta nella penna $
$id_tr=$ex[0]; //metti su entrambe $
$tipo=$ex[1];

però se mastichi un po' di php avresti dovuto vedere dove era l'errore:)

domenticavo:
guarda che come ho detto la fretta può avermi fatto fare altri errori di battituta
 
Ultima modifica: