Avatar
pgarsky
Člen
Avatar
pgarsky:

Ahoj, mám problém. Chtěl jsem si nastavit výpis údaje o uživatelích z DB pomocí OOP (wrapper z této sítě), avšak nic mi to nevypíše. (Ani žádnou chybovou hlášku). Díky za pomoc.
Zdrojáky:
index.php:

<?php
session_start();
require('Db.php');
require_once('tridy/Kontroly.php');
Db::connect('127.0.0.1', 'uzivatele', 'root', '');
$kontrola = new Kontrola();
$kontrola->zkontrolujSess();
echo ('
<!DOCTYPE html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="Pavel Gárský">
<meta name="keywords" content="surfování, reklama, peníze, zábava, viditelnost, čas, investice, dobrý, návštěvnost, wwwpoints">
<meta name="description" content="Reklama">
<title>Administrace</title>
<link rel="stylesheet" href="bootstrap.min.css">
<script src="jquery-3.1.0.min.js"></script>
<script src="bootstrap.min.js"></script>
<style>
#layout {
background: white;
border: 1px solid lightgray;
margin-top: 8%;
width: 1150px;
box-shadow: 3px 1px 3px lightgray;
</style>
</head>
<body style="background: lightcyan;">
<div class="container">
<div id="layout">
<img src="logo.png" class="col-lg-1">
<h1 class="col-lg-1" style="font-size: 50px;">Administrace</h1>
<h4 class="col-lg-offset-9" style="border-bottom: 1px solid black; width: 150px;">Vítejte, ' . '<strong>' . htmlspecialchars($kontrola->nactiUdaje("jmeno")) . '</strong>' . '</h4>
<h4 class="col-lg-offset-9" style="width: 150px;">Ads-kredity: ' . htmlspecialchars() . '</h4>
<h4 class="col-lg-offset-9" style="width: 150px;">Eshop-kredity: ' . htmlspecialchars() . '</h4>
</div>
</div>
</body>
</html>
');
?>

Kontroly.php:

<?php
class Kontrola
{
    public $udaj;

    public function zkontrolujSess() {
        if (!isset($_SESSION['id']))
        {
            header('Location: /webfun/index.php');
            exit();
        }
        if (isset($_GET['odhlasit']))
        {
            session_destroy();
            header('Location: /webfun/index.php?odhlaseno');
            exit();
        }
    }
    public function nactiUdaje($udaj) {
        $this->udaj = Db::queryOne('
        SELECT ?
        FROM uzivatele
        WHERE id=?
        ', $udaj, $_SESSION['id']);
    }
}
?>
 
Odpovědět 8. listopadu 18:13
Avatar
Marek Hlavčo:

nemáš vypisovanie chýb

ini_set('displa­y_errors', 1);
ini_set('displa­y_startup_error­s', 1);
error_reportin­g(E_ALL);

prípadne v php.ini

display_errors = on

 
Nahoru Odpovědět 8. listopadu 18:37
Avatar
Oxtimus
Člen
Avatar
Odpovídá na pgarsky
Oxtimus:

Není problém v tom, že metoda nactiUdaje() nic nevrací? Pouze uloží výsledek do jakési veřejné proměnné $this->udaj. Navrhuji proto upravit metodu na:

public function nactiUdaje($udaj) {
    return Db::queryOne('
    SELECT ?
    FROM uzivatele
    WHERE id=?
    ', $udaj, $_SESSION['id']);
}
Editováno 8. listopadu 19:56
 
Nahoru Odpovědět  +2 8. listopadu 19:56
Avatar
pgarsky
Člen
Avatar
Odpovídá na Oxtimus
pgarsky:

"Notice: Array to string conversion in C:\Users\Pavel\Des­ktop\webfun\ad­ministrace\ad­ministrace\tri­dy\Kontroly.php on line 25
Array"

 
Nahoru Odpovědět 8. listopadu 21:24
Avatar
Odpovídá na pgarsky
Dominik Gavrecký:

Niekde využívas pole ako string

Nahoru Odpovědět 8. listopadu 21:44
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
pgarsky
Člen
Avatar
Odpovídá na Dominik Gavrecký
pgarsky:

No jasně, z DB se to načítá jako array. Ale jak to převést na string ?

 
Nahoru Odpovědět 8. listopadu 21:49
Avatar
Oxtimus
Člen
Avatar
Odpovídá na pgarsky
Oxtimus:

Metoda queryOne nejspíš vrací pole, tudíž ve výpisu přidej ješte příslušný index:

$kontrola->nactiUdaje("jmeno")[0]

// Pokud by nefungovalo
$kontrola->nactiUdaje("jmeno")["jmeno"]
Editováno 8. listopadu 21:51
 
Nahoru Odpovědět 8. listopadu 21:50
Avatar
pgarsky
Člen
Avatar
Odpovídá na Oxtimus
pgarsky:

To první nejde vůbec, tu druhý vypisuje:
"
Notice: Undefined index: jmeno in C:\Users\Pavel\Des­ktop\webfun\ad­ministrace\ad­ministrace\in­dex.php on line 34
"

 
Nahoru Odpovědět 8. listopadu 21:55
Avatar
Odpovídá na pgarsky
Dominik Gavrecký:

Niekedy je lepšie skúšať a nie písať sem každú jednú chybu ktorú ti to vráti. Kód vymaž napíš ho znova dump premenných a určite prídeš na to kde je problém.

Nahoru Odpovědět 8. listopadu 22:12
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
pgarsky
Člen
Avatar
Odpovídá na Dominik Gavrecký
pgarsky:

Ale já jsem student, a nemám tolik času, abych mohl 3 hodiny programovat nějakou malou blbost..

 
Nahoru Odpovědět  -3 8. listopadu 22:17
Avatar
pospec
Člen
Avatar
pospec:

To ze jsi student je naprosto spatny argument. Kazdy zacinal jako student a protoze chtel, cas si nasel. Tim ze to prepises se nejvic naucis. A za SELECT bych nedaval otaznik

 
Nahoru Odpovědět  +1 8. listopadu 22:26
Avatar
Odpovídá na pgarsky
Dominik Gavrecký:

A ja som študent a riešim omnoho "ťažšie veci" ako select z DB a cez to vsetko si to rad vždy spravím sám a neotravujem všetkých na okolo ... z vlastných chýb sa učí najlepšie

Nahoru Odpovědět  +1 8. listopadu 22:42
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na pgarsky
Adam Ježek:

Když na to nemáš čas, tak se na to vykašli a jdi na brigádu do McDonalds...

Už předchozími komentáři ve mě budíš dojem toho, že tomu vůbec nerozumíš a je to úkol co musíš odevzdat. V tom případě bude potřeba sednout k počítači, pročíst si tutoriály, všechno vyzkoušet, nastudovat,... to je práce na X dní, zapomeň na 3 hodiny. A nebo na tom předmětu nemáš co dělat.

Pokud si to ale děláš pro sebe, ze své vlastní vůle, tak nic jako "nemám čas" neexistuje. Čas se vždycky najde, pokud ne, není problém to odložit. U programování musí člověk umět i chtít, což tvůj přístup rozhodně není.

Nahoru Odpovědět  +1 8. listopadu 23:36
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na pgarsky
Petr Linhart:

Metoda queryOne v místním wrapperu vrací první řádek sql dotazu jako asociativní pole, tedy pole ve tvaru [název sloupce] => "hodnota".
Ta chyba ti říká, že nemáš definovaný index "jmeno" takže buďto tvá tabulka v databázi nemá sloupec "jmeno" nebo ti dotaz nevrací žádný výsledek a proto neexistuje index v poli.

 
Nahoru Odpovědět 9. listopadu 0:34
Avatar
Jan Bezdíček
Redaktor
Avatar
Odpovídá na pgarsky
Jan Bezdíček:

To fakt ? Ja teda mel na uceni programovani cas hlavne jako student :D

 
Nahoru Odpovědět 9. listopadu 6:02
Avatar
pgarsky
Člen
Avatar
Odpovídá na Jan Bezdíček
pgarsky:

Jako mám čas, ale tenhle týden píšeme spoustu testů + 2 čtvrtletky, a já tohle potřebuji dodělat do dneska do večera :D

 
Nahoru Odpovědět 9. listopadu 6:38
Avatar
pgarsky
Člen
Avatar
Odpovídá na Adam Ježek
pgarsky:

To na Tebe fakt jenom působí. Jen tady na Itnetworku jsem dal do programování asi tak 3500 Kč. Já dělám, co můžu, ale prostě občas mě něco nenapadne. Nejsem tak pokročilý.
PS: Je mi 14, takže žádné brigády.

 
Nahoru Odpovědět 9. listopadu 7:07
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 17 zpráv z 17.