Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ Problem z drzewkiem kategorii w php

Napisany przez: Paul149 5.11.2020, 17:32:16

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. http://www.php.net/header('Location: /');
  15. }
  16. $limit = $s['ListCat']; //Ilość ogłoszeń
  17. if (http://www.php.net/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 = http://www.php.net/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. http://www.php.net/echo "</span>";

Napisany przez: SmokAnalog 5.11.2020, 17:56:06

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 ...

Napisany przez: Paul149 5.11.2020, 18:02:13

Dzieki wielkie ... zapomniałem o nawiasach ... ale babol haha.gif

Napisany przez: SmokAnalog 5.11.2020, 18:06:07

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)