Doładowanie Konta a następnie wyświetlenie wyniku od razu a nie przy wylogowaniu z sesji logowania

0

Witam mam utworzony moduł do doładowywania konta

<!-- Moduł do doladowywania konta -->
<div class="modal fade" id="Doładuj" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="ZapHas">Doładuj Konto</h5>
             </div>
             <form action="/?action=doladuj" method="post">
              <div class="modal-body">
              <div class="form-group">
                   <b style="color:#fff">Podaj Kwotę jaką chcesz doładować </b>
                </div>
                <div class="form-group">
                   <input type="number" class="form-control rounded-pill form-control-lg" name="doladuj" placeholder="Doładuj" min="1">
                </div>
             </div>
             <div class="modal-footer">
             <button type="button" data-dismiss="modal" class="btn" id="przyciskZamknijj">Zamknij</button>
             <button type="submit" class="btn" name="PotwierdzDane" id="przyciskWyślij">Doładuj</button>
            </div>
            </form>
        </div>
      </div>
    </div>
<!-- Koniec modułu do doładowywania konta  -->

Chciałbym zrobić tak gdy wprowadzę jakąś kwotę np 200 to żeby to było widoczne od razu a nie dopiero gdy wyloguję się z sesji logowania. słyszałem że można to zrobić ajaxem ale nie wiem jak to zrobić szukałem na forach i w internecie ale nikt takiego przykładu nie ma

Wyświetlenie zawartości portfela jest w zmiennej sesyjnej

<ul class="navbar-nav ml-2">
                     
                    <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'].' zł '.'</span>';
                    ?>
                    </li>     
                </ul>

funkcja która doładowywuje konto użytkownika

public function TopUpYourAccount(array $date): void
   {
       try {
           $doladuj = $this->conn->quote($date['doladuj']);
           $query = "UPDATE uzytkownicy SET uzytkownicy.Portfel = uzytkownicy.Portfel + $doladuj";
           $this->conn->exec($query);
       } catch (Throwable $e) {
           throw new StorageException('Nie udało się doładować konta, przepraszamy !!!!', 400, $e);
       }
   }

Kontroler który wykonuje operację

 public function doladujAction(): void
    {
        if($this->request->hasToPost()) {
            $Data = [
                'doladuj' => $this->request->postIndex('doladuj'),
            ];
            $this->shopModel->TopUpYourAccount($Data);
        }
        $this->view->display('doladuj', $viewParams ?? []);
    }
2

No to musisz sobie zaktualizować zmienną sesyjną:

$_SESSION['Portfel'] = ile_tam_sobie_wyiczysz;

i po przeładowaniu strony, będzie wyświetlać aktualną wartość.

0

@Freja Draco: a ta aktualizacja ma być tutaj i jak mam to zrobić ?

<ul class="navbar-nav ml-2">

                    <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'].' zł '.'</span>';
                    ?>
                    </li>     
                </ul>
0

Po przeładowaniu strony będziesz miał aktualną wartość.
Albo i od razu, jeśli aktualizacja zmiennej wystąpi w kodzie przed jej odczytem.

0

U mnie jest tak że gdy mam np wartość portfela 100 i dodaje w formularzu 1 to 101 pojawia się dopiero w momencie wylogowania z sesji użytkownika a ja bym chciał zobaczyć rezultat po wykonaniu operacji dodawania

3

No to musisz po stronie tego kontrolera dorobić funkcję która nie tylko wykona ale i zwróci wartość. Potem w JavaScript aktualizujesz sobie zawartość pola wyświetlanego z tego co zostało zwrócone.
Zobacz przykład:
https://www.w3schools.com/php/php_ajax_php.asp
Tylko pamiętaj o bezpieczeństwie. Może jakiś token zamiast id użytkownika czy nazwy przesyłać? Nie wiem jak i co tam już masz poza tym co wkleiłeś.

0

ok

0

Doklek sobie klase user.php i w niej pobieraj zawsze najnowsze dane po przeladowaniu strony, a potem kazdy plik rozszerzaj o te klase albo zalczaj jako require i po przeladowaniu strony zawsze pobeirzesz najnowsze dane do sesji.

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