Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Jak prawidłowo sprawdzać i wyświetlać dane przekazywane metodą GET
darney
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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?


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
darney
post
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował darney 24.01.2011, 11:05:05
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
darney
post
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 21.08.2010
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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


Ten post edytował darney 24.01.2011, 19:03:07
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 09:24