NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Neaktualizování dat

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Matěj
Člen
Avatar
Matěj :29.8.2017 22:05

Ahoj,
mám vytvořený skript na přidávání hodnot do databáze ale mám menší problém. Body se přidají, ovšem na výpisu z databáze se změna projeví až po odhlášení a přihlášení uživatele. Jak mám docílit toho, aby se data ve výpisu změnila hned?
Díky předem

<?php
session_start();
require('Db.php');
Db::connect('PRIPOJENI DO DATABAZE');
if (!isset($_SESSION['uzivatel_id']))
{
    header('Location: ../index.php?sekce=2');
    exit();
}
if (isset($_GET['odhlasit']))
{
    session_destroy();
    header('Location: ../index.php?sekce=2');
    exit();
}
if(isset($_GET["obet"]))
{
    Db::querySingle('
                        UPDATE uzivatele
                        SET obet = "Meč", body = body + 1
                        WHERE uzivatele_id = 24;
                ');
    session_cache_expire();
    header('Location: ../index.php?sekce=1');
    exit();

}
?>

<section>
    <span>Vítej v Mafii ZŠ U Lesa, jsi přihlášen jako:</span> <span id="statistika"> <?= htmlspecialchars($_SESSION['uzivatel_jmeno']) ?></span><br>
    <span>Tvou obětí aktuálně je</span> <span id="statistika"> <?= htmlspecialchars($_SESSION['uzivatel_obet']) ?> </span><span><a href="/sekce/1.php?obet">Ukaž mi oběť!</a></span><br>
    <span>Právě máš</span> <span id="statistika"> <?= htmlspecialchars($_SESSION['uzivatel_body']) ?></span><span> bodů.</span><br>
    <ul id="odhlasit">
        <li><h2><a href="/sekce/1.php?odhlasit">Odhlásit</a></h2></li>
    </ul>
</section>
 
Odpovědět
29.8.2017 22:05
Avatar
Odpovídá na Matěj
Martin Konečný (pavelco1998):29.8.2017 22:12

Ahoj,

zřejmě proto, že si ty body ukládáš do session a v nich se ti ta hodnota neupraví.
Máš dvě řešení:

  1. po UPDATE v DB tu hodnotu upravit i v sessions
  2. vyhodit ze sessions body a ukládat si do nich jen neměnné hodnoty - jako třeba ID uživatele

Osobně jsem pro možnost b).

Edit: Takový doplněk - pokud datový typ sloupce 'body' je číslo, pak to z DB nemusíš procházet funkcí htmlSpecialChars(), protože ti tam žádné nebezpečné znaky nevzniknou. Pro jistotu s počítáním bych to raději přetypoval na číslo (z DB se to defaultně vrací jako řetězec).

Editováno 29.8.2017 22:13
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
29.8.2017 22:12
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Matěj
Člen
Avatar
 
Nahoru Odpovědět
29.8.2017 22:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.