Wyświetlanie alertów- zasięg zmiennych w PHP

0

Witam serdecznie,

Proszę o pomoc w wyświetleniu alertów przy pomocy frameworku Bootstrap. Główny zarys:

  • index.php <- tutaj w górnym pasku dostępne są 3 formularze które podmieniam za pomocą JS
document.getElementById("dodawanieOcen").addEventListener("click", function() {
  document.getElementById("content").innerHTML = "<form action='dodawanieOcen.php' method='POST'><label>Imie</label>

Oraz część odpowiedzialna za wyświetlenie tego alertu:


```php
<?php 
           
           if(!empty($error_message)){
           ?>
           <div class="alert alert-danger alert-dismissible" >
              <button type="button" class="close" data-dismiss="alert">&times;</button>
             <strong>Błąd!</strong> <?= $error_message ?>
           </div>
 
 
           <?php
           }
           ?>
 
           <?php 
           
           if(!empty($success_message)){
           ?>
           <div class="alert alert-success alert-dismissible">
             <button type="button" class="close" data-dismiss="alert">&times;</button>
             <strong>Sukces!</strong> 
           </div>
           
 
           <?php
           }
           ?>

  • pliki dodawanieOcen.php w których znajduje się kod do wstawienia oceny do bazy MySQL i kod odpowiedzialny za tworzenie "wiadomości" - mojego alertu
     if (mysqli_query($conn, $sql_l)) {
     echo $success_message = "Nowy użytkownik został pomyślnie dodany. ";
 
      
} else {
    echo  $error_message =  "Wystąpił błąd: " . mysqli_error($conn);
}
 
}

Na ten moment mam tylko ten działający alert na 1 stronie aby sprawdzić jak to działa, kod PHP odpowiedzialny za wstawienie użytkownika i instrukcja IF z echo $error_message znajduje się na początku strony więc domyślam się że zostaje z problemem zasięgu zmiennych.

W jaki sposób mogę rozwiązać ten problem? Może jakiś prosty AJAX ?

1
in.in napisał(a):

instrukcja IF z echo $error_message znajduje się na początku strony więc domyślam się że zostaje z problemem zasięgu zmiennych.
W jaki sposób mogę rozwiązać ten problem? Może jakiś prosty AJAX ?

Nie opisałeś na czym polega twój problem (co chcesz uzyskać, co się dzieje / nie dzieje), więc trudno coś radzić. A na zgadywanie zbyt leniwa dziś jestem.

0

@Freja Draco: Problem polega na nie pojawianiu się alertów na stronie głównej (index.php).
Mam 3 formularze (dodawanie Ocen, rejestracja i logowanie), które idą dalej do dodajOcene.php itd.
Wyświetlają się one przy pomocy JS i innerHTML do odpowiedniego DIV, formularz działa (głównie sam insert do mysql).
W plikach gdzie działa ten PHP i SQL mam wiadomość zwrotną czy zapytanie się udało, chciałbym aby ono wyświetliło się na stronie głównej index.php.

Spróbowałem ten alert na pojedynczej stronie gdzie mam tylko 1 formularz i zmienne errorMessage i successMessage działają poprawnie wyświetlają się.

0

A to:

<form action='dodawanieOcen.php' ...

przeładowuje ci całą stronę, czy (jak mniemam) siedzi w jakimś osobnym iframe i przeładowuje tylko swoją ramkę?

Jeśli tak, to JS z twojej strony nie ma pojęcia o tym, co dzieje się na innych stronach.
Rozwiązanie na szybko: w przeładowywanej ramce umieścić wywołanie:

parent.funkcja_wyswietlajaca_alert(parametr);

Rozwiązanie bardziej przyszłościowe to faktycznie jakiś AJAX
https://www.w3schools.com/xml/ajax_intro.asp

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