Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z drzewkiem kategorii w php
Paul149
post 5.11.2020, 17:32:16
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

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


Witam jak w temacie
Posiadam 2 tabele, kategorie i ogloszenia

kategorie to:
-id
parent_id
-link

ogloszenia to
-id
-cat
-title
-display

problem jest tego typu że jak wyświetlam ogłoszenia z display = 1 to ok ale jak pojawiają się równirż ogłoszenia z display = 0 ... czy ktoś mógłby mi pomóc żeby nie pojawiało się display = 0 ?
  1. $data = $_GET['data'];
  2. $parent = mysqli_query($mysql,"SELECT * FROM `Category` WHERE `id` = '$data'");
  3. $v = $parent->fetch_assoc();
  4.  
  5. $kat_name = $v['title'];
  6. $kat_info = $v['Link'];
  7. $kat_id = $v['id'];
  8. $parent_id = $v['parent_id'];
  9.  
  10. //var_dump();
  11.  
  12. if(!$parent->num_rows)
  13. {
  14. header('Location: /');
  15. }
  16. $limit = $s['ListCat']; //Ilość ogłoszeń
  17. if (isset($_GET["page"])) {
  18. $page = $_GET["page"];
  19. }
  20. else{
  21. $page=1;
  22. };
  23. $start_from = ($page-1) * $limit;
  24. $result = mysqli_query($mysql,"SELECT c.parent_id, a.* FROM Category as c INNER JOIN annoncement as a ON c.id=a.cat WHERE `cat` = '$data' OR `parent_id` = '$kat_id' AND `Display` = '1' ORDER BY id DESC LIMIT $start_from, $limit");
  25.  
  26. $result_db = mysqli_query($mysql,"SELECT COUNT(*) FROM Category as c INNER JOIN annoncement as a ON c.id=a.cat WHERE `cat` = '$data' OR `parent_id` = '$kat_id' AND `Display` = '1'");
  27. $row_db = mysqli_fetch_row($result_db);
  28. $total_records = $row_db[0];
  29. $total_pages = ceil($total_records / $limit);
  30. /* echo $total_pages; */
  31. $pagLink = "<span class='pages'>";
  32. for ($i=1; $i<=$total_pages; $i++) {
  33. $pagLink .= "<a class='page-link' href='".$adres."/".$shop_category."/".$v['id']."/".$kat_info."/page-".$i.".html'>".$i."</a>";
  34. }
  35. echo "</span>";
Go to the top of the page
+Quote Post
SmokAnalog
post 5.11.2020, 17:56:06
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Błąd polega na tym, że używasz AND i OR bez nawiasu. Twoje `cat` = x OR `parent_id` = y AND `Display` = 1 zostaje zinterpretowane jako `cat`= x OR (`parent_id` = y AND `Display` = 1) zamiast (`cat` = x OR `parent_id` = y) AND `Display` = 1.

Innymi słowy, u Ciebie dopasowana kategoria jest wystarczającym kryterium do uwzględnienia rekordu. Dodaj nawias:

  1. ... WHERE (`cat` = '$data' OR `parent_id` = '$kat_id') AND `Display` = '1' ORDER BY ...
Go to the top of the page
+Quote Post
Paul149
post 5.11.2020, 18:02:13
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 4.10.2012

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


Dzieki wielkie ... zapomniałem o nawiasach ... ale babol haha.gif
Go to the top of the page
+Quote Post
SmokAnalog
post 5.11.2020, 18:06:07
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


No babolek smile.gif Lepiej zawsze używać nawiasów jak jest AND i OR w zapytaniu, bo jest czytelniej. W SQL AND ma wyższy priorytet niż OR i niektórym ta informacja wystarczy, żeby pisać zapytania bez nawiasów, ale moim zdaniem czytanie tego za bardzo męczy makówkę biggrin.gif
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 Wersja Lo-Fi Aktualny czas: 23.04.2024 - 16:01