Sommare i dati in una tabella

  • Creatore Discussione Creatore Discussione gracito
  • Data di inizio Data di inizio
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.
 
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?
 
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
 
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

vorrei fare la ricerca per mese( 1, 2 ......) , inquanto creo una tabella diversa per ogni anno.
 
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

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).
 
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
 
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
 
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:

Discussioni simili