Tartalomjegyzék

< PHP

PHP Pénztár

Bevezetés

Egy nagyon egyszerű házipénztárt fogunk készíteni.

Adatbázis

penztar.sql
-- tábla létrehozása
create table tarca (
	az int not null primary key auto_increment,
	penz double,
	leiras varchar(100),
	datum timestamp
)
 
 
-- mintaadatok
insert into tarca
(penz, leiras)
values
(850000, 'fizetés'),
(-45000, 'monitor LG'),
(-2000, 'egér Hama');

Könyvtárszerkezet

penztar/
   |-css/
   |   `-style.css
   |
   |-includes/
   |   |-config.php
   |   `-db.php
   |
   |-templates/
   |     |-egyenleg.tpl
   |     |-felvesz.tpl
   |     |-felveszUrlap.tpl
   |     |-foot.tpl
   |     |-head.tpl
   |     |-index.tpl
   |     |-lista.tpl
   |     |-menu.tpl
   |     |-tableFoot.tpl
   |     |-tableHead.tpl
   |     `-tableRow.tpl
   |
   |-egyenleg.php
   |-felvesz.php
   |-felveszUrlap.php
   |-index.php
   `-lista.php

Fájlok

index.php
<?php
 
echo file_get_contents('templates/head.tpl');
echo file_get_contents('templates/index.tpl');
echo file_get_contents('templates/foot.tpl');
templates/index.tpl
<h1>Főoldal</h1>
<p>
  <a href="penztar.php">Belépés a pénztárba</a>
</p>
penztar.php
<?php
 
echo file_get_contents('templates/head.tpl');
echo file_get_contents('templates/menu.tpl');
echo file_get_contents('templates/penztar.tpl');
echo file_get_contents('templates/foot.tpl');
templates/penztar.tpl
<h1>Pénztár</h1>
<p>Az Egyenleg fülőn kérdezheti le az aktuális egyenleget.</p>
<p>
  A Felvesz fülőn új tételt vehet fel.
  A kiadásokat negatív előjellel kell felvenni.
</p>
<p>A Lista menüpont alatt megnézheti a kiadások és
bevételek listáját.</p>
includes/config.php
<?php 
 $db['host'] = 'localhost';
 $db['user'] = 'penztar';
 $db['pass'] = 'titok';
 $db['name'] = 'penztar';
includes/db.php
include 'config.php';
 
function connectDb() {
	global $db;
	$conn = mysqli_connect(
		$db['host'], 
		$db['user'],
		$db['pass'],
		$db['name']
		);
 
	/* XAMPP-ban ez nem fut hibára mysqli_query()
	azt írja, nincs adatbázis kiválasztva	*/
 
	if(!$conn) {
		die('Hiba a kapcsolódás során: ' .
		mysqli_connect_error());
	}
	return $conn;
 }
 
 function closeDb($conn) {
	mysqli_close($conn);
 }
 
//beszúrás
function insertItem($conn, $tomb){
	$sql = <<<EOT
	insert into tarca
	(penz, leiras)
	values
	('{$tomb['penz']}', '{$tomb['leiras']}')
EOT;
 
	if(mysqli_query($conn, $sql)) {
		return true;
	}else {
		echo mysqli_error($conn);
		return false;
	}
}
 
//lista
function getItems($conn) {
  $sql = "select az, penz, leiras, date(datum) as datum from tarca";
  $res = mysqli_query($conn, $sql);
  $datas = array();
  while($sor = mysqli_fetch_assoc($res)) {
    array_push($datas, array(
      $sor['az'],
      $sor['penz'],
      $sor['leiras'],
      $sor['datum']
      )
    );
  }
  return $datas;
}
 
 
//egyenleg
function getBalance($conn) {
  global $db;
  $sor = 0;
  $sql = "select sum(penz) as balance from tarca";
  if($res = mysqli_query($conn, $sql)) {
        $sor = mysqli_fetch_assoc($res);
  }else {
    echo "Hiba: " . mysqli_error($conn);
  }
  return $sor['balance'];
}
egyenleg.php
<?php
include 'includes/db.php';
 
echo file_get_contents('templates/head.tpl');
 
$conn = connectDb();
$egyenleg = getBalance($conn);
closeDb($conn);
 
echo file_get_contents('templates/menu.tpl');
 
$page = file_get_contents('templates/egyenleg.tpl');
$page = str_replace('{ egyenleg }', $egyenleg, $page);
echo $page;
 
echo file_get_contents('templates/foot.tpl');
templates/egyenleg.tpl
<h1>Egyenleg</h1>
<p>Az aktuális egyenleg: { egyenleg }</p>
felveszUrlap.php
<?php
 
echo file_get_contents('templates/head.tpl');
echo file_get_contents('templates/menu.tpl');
echo file_get_contents('templates/felveszUrlap.tpl');
echo file_get_contents('templates/foot.tpl');
templates/felveszUrlap.tpl
<form action="felvesz.php" method="post">
 
  <label for="penz">Pénz összeg</label>
  <input type="text" name="penz">
  <br>
  <label for="leiras">Leírás</label>
  <input type="text" name="leiras">
  <br>
 
  <button type="submit">Felvesz</button>
 
</form>
felvesz.php
<?php
 
include 'includes/db.php';
 
echo file_get_contents('templates/head.tpl');
echo file_get_contents('templates/menu.tpl');
 
$penz = $_POST['penz'];
$leiras = $_POST['leiras'];
 
$datas['penz'] = $penz;
$datas['leiras'] = $leiras;
 
$conn = connectDb();
if(insertItem($conn, $datas)) {
    $msg = "Sikeres felvétel";
}else {
    $smg = "Hiba! A felvétel nem sikerült";
}
closeDb($conn);
 
$page =  file_get_contents('templates/felvesz.tpl');
$page = str_replace('{ msg }', $msg, $page);
echo $page;
 
echo file_get_contents('templates/foot.tpl');
templates/felvesz.tpl
<h1>Új elem felvétele</h1>
<p>{ msg }</p>
lista.php
<?php
 
include 'includes/db.php';
 
echo file_get_contents('templates/head.tpl');
echo file_get_contents('templates/menu.tpl');
 
$conn = connectDb();
$penzek = getItems($conn);
closeDb($conn);
 
$tableRows = "";
foreach($penzek as list($az, $penz, $leiras, $datum)) {
  $tableRow = file_get_contents('templates/tableRow.tpl');
  $tableRow = str_replace('{ az }', $az, $tableRow);
  $tableRow = str_replace('{ penz }', $penz, $tableRow);
  $tableRow = str_replace('{ leiras }', $leiras, $tableRow);
  $tableRow = str_replace('{ datum }', $datum, $tableRow);
  $tableRows .= $tableRow;
}
 
$page = file_get_contents('templates/lista.tpl');
$page = str_replace('{ tableRows }', $tableRows, $page);
echo $page;
 
echo file_get_contents('templates/foot.tpl');
templates/lista.tpl
<h1>Lista</h1>
<p>Bevételek, kiadások</p>
 
<table>
{ tableRows }
</table>
templates/tableRow.tpl
<tr>
  <td>{ az }</td>
  <td>{ penz }</td>
  <td>{ leiras }</td>
  <td>{ datum }</td>
</tr>