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

question-closed Kategorie w sklepie

Object Storage Arubacloud
0 głosów
267 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 91 wizyt
pytanie zadane 15 września 2016 w PHP przez Mistrz0000000 Bywalec (2,780 p.)
0 głosów
1 odpowiedź 2,243 wizyt
pytanie zadane 1 lutego 2016 w PHP przez fusemul Użytkownik (710 p.)
+1 głos
5 odpowiedzi 235 wizyt
pytanie zadane 23 listopada 2021 w PHP przez BarSki13 Obywatel (1,250 p.)

92,620 zapytań

141,469 odpowiedzi

319,794 komentarzy

62,002 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...