Wyciąganie danych z tabeli

0

Witam mam utworzoną tabelę uzytkownicy i chciałbym wyswietlić wartości kolumn Portfel oraz iloscProduktu kiedy użytkownik zaloguje się na swoje konto

Tutaj jest moja metoda do logowania

public function Logged(): void 
    {
        if(!isset($_SESSION['ID_LOGGED'])) {
            if(isset($_POST['NazwaUzytkownika'])) {
                $NazwaUzytkownika = filter_input(INPUT_POST, 'NazwaUzytkownika');
                $_SESSION['NazwaUzytkownika'] = $NazwaUzytkownika;
                $haslo = filter_input(INPUT_POST, 'Haslo');
                $query = $this->conn->prepare('SELECT id, Haslo FROM uzytkownicy WHERE NazwaUzytkownika = :NazwaUzytkownika');
                $query->bindValue(':NazwaUzytkownika', $NazwaUzytkownika, PDO::PARAM_STR);
                $query->execute();
                $user = $query->fetch(PDO::FETCH_ASSOC);
                if($user && password_verify($haslo,$user['Haslo'])) // Jeżeli login istnieje i dla tego rekordu hasło zgadza się z tym które mamy zahaszowane w bazie to oznacza że użytkownik zalogował się poprawnie 
                {
                    $_SESSION['ID_LOGGED'] = $user['id'];
                    unset($_SESSION['failed_attempt']); // Usuwanie już nieprawidłowego logowania
                } else {
                    $_SESSION['failed_attempt'] = true; // Nieudana próba logowania 
                    header('Location: /?action=Logowanie');
                    exit();
                }
              
            }
        }

        if(isset($_SESSION['ID_LOGGED'])) 
        { 
            header('Location: /?action=Zalogowany');
            exit();
        }

        
        
    }

A chciałbym to wyświetlić za pomocą zmiennych sesyjnych ponieważ ten kod jest w innym pliku

<ul class="navbar-nav ml-3">
					
                    <li class="nav-item active">
                    <?php 
                           echo '<span style="color:white; text-shadow: 0 0 10px #ff0000"">'." Portfel: ".'</span>'.'<span style="color:white; text-shadow: 0 0 10px #ff0000"">'.$_SESSION['Portfel'].'</span>';
                    ?>
                    </li>		
                </ul>

                <ul class="navbar-nav ml-3">
					
                    <li class="nav-item active">
                        <?php
                           echo '<span style="color:white; text-shadow: 0 0 10px #ff0000"">'." Produkty: ".'</span>'.'<span style="color:white; text-shadow: 0 0 10px #ff0000"">'.$_SESSION['iloscProduktu'].'</span>';
                         ?>
                    </li>		
                </ul>

Przeglądałem to : https://www.php.net/manual/en/pdostatement.fetch.php#refsect1-pdostatement.fetch-examples
Ale nie znalazłem odpowiedzi na moje pytanie jak mogę to zrobić Pozdrawiam

3

Adekwatnie do tego gdzie np. przypisujesz user_id do sesji. Masz tam zapytanie wykorzystujące PDO które zwraca na razie tylko od i hasło.

0

$query = $this->conn->prepare('SELECT id, Haslo, Portfel, iloscProduktu FROM uzytkownicy WHERE NazwaUzytkownika = :NazwaUzytkownika'); dodałem portfel i iloscProduktu do zapytania oraz $_SESSION['Portfel'] = $user['Portfel']; ale to nadal nie działa

2

Jak zrobisz

//...
$user = $query->fetch(PDO::FETCH_ASSOC);
var_dump($user);
die('stop script');

To co masz w zmiennej user po wykonaniu zapytania?

0

array(4) { ["id"]=> string(1) "5" ["Haslo"]=> string(60) "$2y$10$fXu7N2wddXKFEZ9OaL1dAePYs2uyXFUCY/.2eXH1kQEvFaI0D8Ln." ["Portfel"]=> string(3) "200" ["iloscProduktu"]=> string(1) "0" } stop script

1

Masz session_start na początku pliku?

0

mam tylko zakomentowałem header bo jak wpisałem to w var_dump($user);
die('stop script'); pod $user = $query->fetch(PDO::FETCH_ASSOC); to nic się nie chciało dziać

0

Zrobiłem tak jak pisałeś wyżej tylko musiałem się wylogować i dalej jest to
array(4) { ["id"]=> string(1) "5" ["Haslo"]=> string(60) "$2y$10$fXu7N2wddXKFEZ9OaL1dAePYs2uyXFUCY/.2eXH1kQEvFaI0D8Ln." ["Portfel"]=> string(3) "200" ["iloscProduktu"]=> string(1) "0" } stop script

2

Używaj tagów do wklejania kodu.

Zapytanie wykonuje się poprawnie. Wykasuj już var_dump i die bo to tylko w celach debugowania zapytania.

0

Dobra działa wpisałem $_SESSION['Portfel'] = $user['Portfel'];
$_SESSION['iloscProduktu'] = $user['iloscProduktu']; wylogowałem się i zalogowałem i działa dzięki wszystkim za pomoc

0

Mam pytanie jeszcze czy jest jakiś sposób gdy np edytuje wartość portfel np na 220 to żebym widział to od razu a nie gdy użytkownik wyloguje się z sesji logowania Pozdrawiam

1

Tak, pobieraj to zawsze po wejściu na stronę, a nie przy zalogowaniu się.

1 użytkowników online, w tym zalogowanych: 0, gości: 1