• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Kategorie w sklepie

VPS Starter Arubacloud
0 głosów
315 wizyt
pytanie zadane 5 września 2016 w PHP przez Mistrz0000000 Bywalec (2,780 p.)
zamknięte 7 września 2016 przez Mistrz0000000

WItam, mam mały problem. Robię filtrowanie produktów w swoim systemie sklepowym i filtrowanie z ceną od najniższej, lub najwyższej to nie problem. Problem robi się gdy chcę dodać do tego kategorie produktów. Mam taki kod do wyciągania z mysql i działa, ale tylko sortowanie od najniższej lub najwyższej ceny, a kiedy wybiorę kategorię to error:

    switch($_POST['category'])
    {
        case'coins':
            $category = $_POST['category'];
            break;
        case'testy':
            $category = $_POST['category'];
            break;
        default:
            break;
    }

    switch($_POST['filter'])
    {
        case'najmniejsza':
            if(isset($category))
            {
                $phpro_category = filter_var($category, FILTER_SANITIZE_STRING);
                $stmt = getDBH()->prepare("SELECT * FROM products WHERE category=:category ORDER BY price LIMIT $strona,8");
                $stmt->bindParam(':category', $phpro_category, PDO::PARAM_STR);
                $stmt->execute();
            }else{
                $stmt = getDBH()->prepare("SELECT * FROM products ORDER BY price LIMIT $strona,8");
                $stmt->execute();
            }
            break;
        case'najwieksza':
            if(isset($category))
            {
                $phpro_category = filter_var($category, FILTER_SANITIZE_STRING);
                $stmt = getDBH()->prepare("SELECT * FROM products WHERE category=:category ORDER BY price DESC LIMIT $strona,8");
                $stmt->bindParam(':category', $phpro_category, PDO::PARAM_STR);
                $stmt->execute();
            }else{
                $stmt = getDBH()->prepare("SELECT * FROM products ORDER BY price DESC LIMIT $strona,8");
                $stmt->execute();
            }
            break;
        default:
            if(!isset($category))
            {
                $stmt = getDBH()->prepare("SELECT * FROM products ORDER BY price LIMIT $strona,8");
                $stmt->execute();
            }
            break;

    }
while ($r = $stmt->fetch(PDO::FETCH_ASSOC))
{
}

a taki error:

Fatal error: Call to a member function fetch() on null in /home/u546298435/public_html/functions/mysql_using.php on line 64

komentarz zamknięcia: Rozwiązane za pomocą sesji

1 odpowiedź

0 głosów
odpowiedź 5 września 2016 przez Wojtek Brzeziński Nowicjusz (170 p.)
edycja 5 września 2016 przez Wojtek Brzeziński
Wydaje mi się, że zapytanie zwraca pustą wartość, bo tak czy siak to zapytanie się wykona, nieważne, czy zmienna $category jest ustawiona, czy nie jest. Jeżeli zapytanie się wykonuje (a więc ustawia się też zmienna $stmt), i zmienna ta ma wartość NULL w momencie wywołania funkcji fetch(), to znaczy, że zapytanie wykonało się niepoprawnie. Jesteś pewny, że w bazie danych nie ma żadnych niedociągnięć?

Mam jeszcze jedno pytanie, jeśli można :) istnieje default'owa opcja przy sortowaniu ceny i wykona się tylko jeżeli klient nie wybrał kategorii produktu. A co by się stało, gdyby ktoś nie wybrał filtrowania ceny w żaden sposób, ani nie wybrał też kategorii?
komentarz 5 września 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Teraz zauważyłem że kiedy w switchu z kategorią wyświetlam echo $_POST['category'] to się wyświetla, a gdy robię to w switchu z sortowaniem ceny to nic. Chyba dane nie przechodzą z switcha z kategoriami do tego z cenami, ale własnie nie rozumiem, w którym miejscu lezy problem.

A co do tego default w sortowaniu ceny, to poprostu wyświetli wszystkie produkty, ze wszystkich kategori.
komentarz 5 września 2016 przez Wojtek Brzeziński Nowicjusz (170 p.)
A da się nie wybrać żadnej opcji z filtrowania ceny? Gdyby tak było, to wybierając dowolną kategorię, nic by się i tak nie wykonało, bo default dla sortowania ceny działa tylko, gdy kategoria jest nieustawiona.
komentarz 5 września 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Teraz dałeś mi trochę do myślenia, ale najpierw to ja muszę to doprowadzić do tego stopnia, żeby działało
komentarz 5 września 2016 przez Wojtek Brzeziński Nowicjusz (170 p.)
Nigdy nie łączyłem się w ten sposób z bazą danych, może w zapytaniu między dwukropkiem a znakiem równości powinna być spacja?
komentarz 5 września 2016 przez Abel Mądrala (5,140 p.)

a nie powinno by przypadkiem 

( category) VALUES (:category)

dla zapytania INSERT do bazy własnie w ten sposób to robie

komentarz 5 września 2016 przez Wojtek Brzeziński Nowicjusz (170 p.)
Mògłbyś pokazać, jak by wyglądało wtedy dokładnie zapytanie w kodzie autora?
komentarz 6 września 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Ale takie zapytanie jest tylko dla inserta, a poza rym przy innych selectach mam podobne zapytania

Podobne pytania

0 głosów
0 odpowiedzi 94 wizyt
pytanie zadane 15 września 2016 w PHP przez Mistrz0000000 Bywalec (2,780 p.)
0 głosów
1 odpowiedź 2,401 wizyt
pytanie zadane 1 lutego 2016 w PHP przez fusemul Użytkownik (710 p.)
+1 głos
5 odpowiedzi 271 wizyt
pytanie zadane 23 listopada 2021 w PHP przez BarSki13 Obywatel (1,250 p.)

93,018 zapytań

141,982 odpowiedzi

321,283 komentarzy

62,365 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...