Mam oto następującą zagadkę.
Zacząłem sobie pisać małą aplikację, do własnego użytku i dla poćwiczenia, ale chciałbym, aby kod był zrobiony wg. prawideł. No i dzieje się rzecz dziwna, bo kod się realizuje, strona wyświetla się prawidłowo, ale w źródle strony zwraca tylko pierwsze include i wartość "die" pierwszego zapytania update z poniższego kodu.
1. Sprawdziłem wartość wszystkich zmiennych pobieranych z formularza, lub też z bazy danych za pomocą var_dump() i zwracają one wartości żądane.
2. Mało tego, wszystkie zapytania realizują się prawidłowo, wszystko ląduje w bazie danych tak, jak tego oczekuję.
Chciałem tylko dodać, że kod nie jest skończony, chciałem sobie najpierw rozpisać wszystkie zapytania, a dopiero potem go uzbroić w filtrację i całą resztę.
3. Idąc zgodnie z tym, co podaje wikibooks w temacie PDO(pierwszy raz próbuje zastosować to rozwiązanie) powstawiałem po każdym query(); poniższe polecenia:
$stmt -> closeCursor();
unset($stmt);
kod testowany z nimi i bez nich. Rezultat nadal taki sam.
4. Przetestowałem każde z zapytań w czystym sql podstawiając wartości zmiennych używanych w zapytaniach, również nie zwracają żadnego błędu.
Kod
<?php
include('../templates/header.tpl');
$pdo = new PDO('mysql:host=localhost;dbname=cash', 'root', 'hasło') or die('zonk');
/*przychody*/
/*Wycią gam id kategorii przychody potrzebne do tabeli revenues*/
$stmt = $pdo -> query("SELECT id_revenue_category FROM revenue_categories WHERE revenue_name='{$_POST['revenue_name']}'") or die('zły select przzychody');
$row= $stmt->fetch();
$id_revenue_category=$row[0];
/*wstawiam wartości, z formularzy przychodów, do bazy danych tabela "revenues" */
$stmt = $pdo -> exec("INSERT INTO revenues VALUES('','{$_POST['revenue_enter_date']}','{$row[0]}','{$_POST['revenue_value']}','{$_POST['revenue_description']}')") or die('zły insert przychodów');
/*Wyciągam wielkość przychodu z tabeli categorii w celu dodania do niej kolejnej*/
$stmt = $pdo -> query("SELECT revenue_category_value FROM revenue_categories WHERE revenue_name='{$_POST['revenue_name']}'") or die('zĹy select kosztĂłw');
$row=$stmt->fetch();
$revenue_category_value=$row[0]+$_POST['revenue_value'];
/*robię update wysokości przychody przy nazwach kosztów w tabeli categorie przychodów*/
$stmt= $pdo -> exec("UPDATE revenue_categories SET revenue_category_value='{$revenue_category_value}' WHERE id_revenue_category='{$id_revenue_category}'") or die('zĹy update przychodów ');
/*koszty*/
/*Wyciągam id kategorii koszty potrzebne do tabeli "costs*/
$stmt = $pdo -> query("SELECT id_cost_category FROM cost_categories WHERE cost_name='{$_POST['cost_name']}'") or die('zĹy select kosztĂłw');
$row= $stmt->fetch();
$id_cost_category=$row[0];
/*wstawiam wartości, z formularzy przychodów, do bazy danych tabela "costs*/
$stmt = $pdo -> exec("INSERT INTO costs VALUES('','{$_POST['cost_enter_date']}','{$id_cost_category}','{$_POST['cost_value']}','{$_POST['cost_description']}')") or die('zły insert kosztów');
/*Wyciągam wielkość kosztu z tabeli categorii w celu dodania do niej kolejnej*/
$stmt = $pdo -> query("SELECT cost_category_value FROM cost_categories WHERE cost_name='{$_POST['cost_name']}'") or die('zły select kosztów');
$row=$stmt->fetch();
$cost_category_value=$row[0]+$_POST['cost_value'];
/*robię update wysokości kosztów przy nazwach kosztów w tabeli categorie kosztów*/
$stmt= $pdo -> exec("UPDATE cost_categories SET cost_category_value='{$cost_category_value}' WHERE id_cost_category='{$id_cost_category}'") or die('zĹy update koszty');
echo 'dobrze';
include('../templates/footer.tpl');
?>
include('../templates/header.tpl');
$pdo = new PDO('mysql:host=localhost;dbname=cash', 'root', 'hasło') or die('zonk');
/*przychody*/
/*Wycią gam id kategorii przychody potrzebne do tabeli revenues*/
$stmt = $pdo -> query("SELECT id_revenue_category FROM revenue_categories WHERE revenue_name='{$_POST['revenue_name']}'") or die('zły select przzychody');
$row= $stmt->fetch();
$id_revenue_category=$row[0];
/*wstawiam wartości, z formularzy przychodów, do bazy danych tabela "revenues" */
$stmt = $pdo -> exec("INSERT INTO revenues VALUES('','{$_POST['revenue_enter_date']}','{$row[0]}','{$_POST['revenue_value']}','{$_POST['revenue_description']}')") or die('zły insert przychodów');
/*Wyciągam wielkość przychodu z tabeli categorii w celu dodania do niej kolejnej*/
$stmt = $pdo -> query("SELECT revenue_category_value FROM revenue_categories WHERE revenue_name='{$_POST['revenue_name']}'") or die('zĹy select kosztĂłw');
$row=$stmt->fetch();
$revenue_category_value=$row[0]+$_POST['revenue_value'];
/*robię update wysokości przychody przy nazwach kosztów w tabeli categorie przychodów*/
$stmt= $pdo -> exec("UPDATE revenue_categories SET revenue_category_value='{$revenue_category_value}' WHERE id_revenue_category='{$id_revenue_category}'") or die('zĹy update przychodów ');
/*koszty*/
/*Wyciągam id kategorii koszty potrzebne do tabeli "costs*/
$stmt = $pdo -> query("SELECT id_cost_category FROM cost_categories WHERE cost_name='{$_POST['cost_name']}'") or die('zĹy select kosztĂłw');
$row= $stmt->fetch();
$id_cost_category=$row[0];
/*wstawiam wartości, z formularzy przychodów, do bazy danych tabela "costs*/
$stmt = $pdo -> exec("INSERT INTO costs VALUES('','{$_POST['cost_enter_date']}','{$id_cost_category}','{$_POST['cost_value']}','{$_POST['cost_description']}')") or die('zły insert kosztów');
/*Wyciągam wielkość kosztu z tabeli categorii w celu dodania do niej kolejnej*/
$stmt = $pdo -> query("SELECT cost_category_value FROM cost_categories WHERE cost_name='{$_POST['cost_name']}'") or die('zły select kosztów');
$row=$stmt->fetch();
$cost_category_value=$row[0]+$_POST['cost_value'];
/*robię update wysokości kosztów przy nazwach kosztów w tabeli categorie kosztów*/
$stmt= $pdo -> exec("UPDATE cost_categories SET cost_category_value='{$cost_category_value}' WHERE id_cost_category='{$id_cost_category}'") or die('zĹy update koszty');
echo 'dobrze';
include('../templates/footer.tpl');
?>
Efekt w html wygląda następująco:
Kod
<html>
<head>
<meta name="description" content="Warsztat programisty" />
<meta name="keywords" content="warsztat programisty,programowanie" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="Stylesheet" type="text/css" href="../templates/style.css" />
<title>Workshop</title>
</head>
<body>
<div id="all">
<div id="header"><h1>Panel sterowania</h1>
</div>zły update przychodów
<head>
<meta name="description" content="Warsztat programisty" />
<meta name="keywords" content="warsztat programisty,programowanie" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="Stylesheet" type="text/css" href="../templates/style.css" />
<title>Workshop</title>
</head>
<body>
<div id="all">
<div id="header"><h1>Panel sterowania</h1>
</div>zły update przychodów
gdzie sam plik header kończy się na </div> zły update przychodów, to komunikat z die('zły update przychodów'); pochodzący z pierwszego zapytania update.
Gdy odwróciłem kolejność i dałem najpierw blok z kosztami, sytuacja była analogiczna.
Nie mam pojęcia już dlaczego źródło strony pokazuje błąd a sama strona i zapytania działają prawidłowo.