Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak prawidłowo sprawdzać i wyświetlać dane przekazywane metodą GET
Forum PHP.pl > Forum > Przedszkole
darney
Chce aby skrypt wyświetlał dane z bazy względem tematu=liczbie oraz tematu=liczbie&lekcji=liczbie i na razie testuje same warunki if z wyświetleniem zwykłego tekstu i tutaj mam problem. Do końca nie rozumiem mechanizmu sprawdzania tych warunków. Zacznijmy może od poniższego kodu który wyświetla diva z poszczególnymi dostępnymi lekcjami.


Wyświetlanie tematów
  1. $dbc = mysqli_connect('localhost', 'xxx', 'xxx', 'xxx');
  2. mysqli_set_charset($dbc, "utf8");
  3. $query = "SELECT * FROM lesson_cat";
  4. $result = mysqli_query($dbc, $query);
  5. while ($row = mysqli_fetch_array($result)) {
  6.  
  7. $mid = $row['id'];
  8. $lesson = $mid;
  9. $category = $row['category'];
  10.  
  11. echo "<div id=\"lesson_subjects\"><div class=\"lesson_sub\">
  12. <a href=\"http://testxxxtest.pl/test_kurs2.php?lekcja=$mid\">$category</a></div></div>";
  13.  
  14. }
  15.  
  16.  
  17. if($lekcja == $lesson) {
  18.  
  19. echo "wyswietl tylko zawartosc z bazy ktora ma wartosc lesson";
  20.  
  21. }
  22.  


Niestety powyższe sprawdzenie nie działa. Proszę o podpowiedź jak sprawdzać prawidłowo zmienne GET dopisujące się w adresie.
thek
A $lekcja to niby ile ma? Wyczarowana z kapelusza czy to jakiś magik pokroju Coperfielda? :)Nie licz na fakt, że register globals będziesz miał wszędzie na serwerach włączone. Co więcej to będzie nawet na odwrót, bo ta dyrektywa jest uznawana za niebezpieczną. Nigdzie nie masz jej wtedy, więc porównanie nigdy nie zajdzie. $lekcja ustawi się na 0 a na bank $lesson w żadnym wypadku tyle nie przyjmie. Ogólnie po co cudować z
$mid = $row['id'];
$lesson = $mid;
?
Skoro masz już $mid to po co jeszcze jedna zmienna z tym samym w środku?
Inna sprawa, że if ma być wewnątrz while. Inaczej przelecisz całą pętlę a dopiero potem zrobisz porównanie. I niby do czego? Ostatniej wartości jaką w pętli przyjmie $lesson?
darney
Lekcja posiada wartość z otrzymania z GET . test_kurs2.php?lekcja=$mid

Poza pętlą to działa
  1. if(isset($lekcja)) {
  2.  
  3.  
  4.  
  5. echo "wyswietl tylko zawartosc z bazy ktora ma wartosc lesson";
  6. echo "lekcja to $lekcja<BR>";
  7.  
  8. }


Czy powinienem inaczej kierować zapytanie ?
thek
I co z tego, że maszi się Ci wyświetla...
Wiesz jak działają pętle? Jeśli nie to Ci pokażę na przykładzie Twojego kodu. Masz w bazie 10 lekcji od 1 do 10 ponumerowanych. odpalasz skrypt, który sobie leci w pętli przez wszystkie rekordy. Zmienna $lesson, $mid i $category zmieniają się jak należy, linki się tworzą. Ostatni rekord to przypuśćmy 10, Ogólna
I takie dane wyjdą z pętli jako $mid, $lesson i $category () o ile wyjdą, bo istnieje coś takiego jak "zasięg zmiennych"
Teraz masz swojego if, gdzie wyświetlić chcesz choćby 3 lekcję. Porównuje Ci więc 3 do 10 lub 0 (jeśli zmienne "zniknęły po wyjściu z pętli"). Głupota, nieprawda, fałsz. Zwał jak zwał. Skoro w kółko zamieniasz te dane to nigdy nie dostaniesz tego co chcesz. Musisz inaczej to rozwiązać. Albo zapisujesz wszystko w pętli jako tablica i potem odwołujesz do konkretnego indeksu, albo if robisz wewnątrz pętli while i tam wyświetlasz. Zawiodła u Ciebie logika skryptu... Nie samo porównanie. Daj ten if wewnątrz pętli while a sam zobaczysz smile.gif
darney
Rozwiązałem już powyższy problem. Mam teraz końcowe pytanie.

Jak najlepiej sprawdzać aktualnie otwartą stronę. Chcę do aktualnie otwartej strony dodać do klasy zmienna z wartością "_active".

Poniższy kod wyświetla menu z kategoriami i dostępnymi tematami dla danej kategorii.
Chodzi o klasa dla <li> "lesson_alisto$active". Chce aby zmienna $active po kliknieciu w temat otrzymała wartość tylko w tym jednym temacie a nie we wszystkich.
Jak powinienem poprawnie skierować zapytanie. Porównując URL ? czy inaczej?

  1. $query = "SELECT * FROM lesson_cat";
  2. $result = mysqli_query($dbc, $query);
  3. while ($row = mysqli_fetch_array($result)) {
  4.  
  5. $mid = $row['id'];
  6. $lesson = $mid;
  7. $category = $row['category'];
  8. $lekcja = $_GET['lekcja'];
  9. $temat = $_GET['temat'];
  10.  
  11. echo "<div id=\"lesson_subjects\"><div class=\"lesson_sub\">
  12. <a href=\"http://xxxxcccccc/test_kurs2.php?lekcja=$mid\">$category</a></div></div>";
  13.  
  14. if($lekcja == $lesson){
  15. $dbc3 = mysqli_connect('localhost', 'xxx', 'xxx', 'xxx');
  16. mysqli_set_charset($dbc, "utf8");
  17. $query3 = "SELECT * FROM lesson_sub WHERE mid = '$mid'";
  18. $result3 = mysqli_query($dbc3, $query3);
  19. $active = '_active';
  20. while ($row = mysqli_fetch_array($result3)) {
  21.  
  22. $subject = $row['subject'];
  23. $id = $row['id'];
  24.  
  25. [b]$active = '_active';[/b]
  26. echo "<ul class=\"lesson_subj_ul\">
  27. <li class=\"lesson_listo\"><a href=\"http://xxxxxcccccc/test_kurs2.php?lekcja=$mid&temat=$id\" class=\"lesson_alisto$active\">$subject</a></li>
  28. </ul>";
  29. }
  30. echo "<div id=\"lesson_subjects_end\"></div>";
  31. }
  32.  
  33.  
  34.  
  35.  
  36. }


Tak wygląda adres url w przeglądarce w trakcie przeglądania przykładowej lekcji.

  1. http://ccccccxxxxx/test_kurs2.php?lekcja=15&temat=9
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.