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

Sortowanie ceny nic nie wyświetla

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
284 wizyt
pytanie zadane 24 grudnia 2016 w PHP przez Mistrz0000000 Bywalec (2,780 p.)

Witam, mam taki problem, że jest sortowanie produktów po kategorii i cenie. Kategorie w pełni działają, za to kiedy wybiera się od najniższej lub od najwyższej ceny to nic się nie wyświetla. oto kod tej funkcji:

    $_SESSION['category'] = $_POST['category'] == 'wszystko' ? null : $_POST['category'];
    $sort_type = $_POST['filter'] == 'najwieksza' ? 'DESC' : 'ASC';

    echo "<p>".$sort_type."</p>";

    if(isset($_SESSION['category']))
    {
        $phpro_search_name = filter_var($_SESSION['product_search'], FILTER_SANITIZE_STRING);
        $phpro_category = filter_var($_SESSION['category'], FILTER_SANITIZE_STRING);
        $stmt = getDBH()->prepare("SELECT * FROM products WHERE name LIKE :search_name AND category=:category ORDER BY price $sort_type LIMIT $strona,8");
        $stmt->bindValue(':search_name','%'.$phpro_search_name.'%');
        $stmt->bindParam(':category', $phpro_category, PDO::PARAM_STR);
        $stmt->execute();
    }else{
        $phpro_search_name = filter_var($_SESSION['product_search'], FILTER_SANITIZE_STRING);
        $stmt = getDBH()->prepare("SELECT * FROM products WHERE name LIKE :search_name ORDER BY price $sort_type LIMIT $strona,8");
        $stmt->bindValue(':search_name','%'.$phpro_search_name.'%');
        $stmt->execute();
    }



    echo '<div class="text5">Wyniki wyszukiwania dla: &nbsp;'.$_SESSION['product_search'].'</div>';
    while ($r = $stmt->fetch(PDO::FETCH_ASSOC)) {

        echo'
    	<div class="col-sm-6 col-md-3">
	<input type="hidden" name="id" value="'.$r['id'].'">
    <input type="hidden" name="price" value="'.$r['price'].'">
    <input type="hidden" name="count" value="'.$r['name'].'">
		<div class="thumbnail">
			<img src="../graph/'.$r['picture'].'" alt="" class="img-responsive">
			<div class="caption">
				<h3 class="text-left">'.$r['name'].'</h3>
				<p class="text-left">Cena: '.$r['price'].'zł</p>
				<div class="btn-toolbar text-center">
					<button type="submit" name="buy_product" class="btn btn-primary pull-right">Szczegoły</button>
				</div>
			</div>
		</div>
	</div>';
    }
    echo '</div>';
}

1 odpowiedź

0 głosów
odpowiedź 24 grudnia 2016 przez operator Stary wyjadacz (10,920 p.)
Czym jest zmienna $strona?

"Witam, mam taki problem, że jest sortowanie produktów po kategorii i cenie." To faktycznie problem ;)
komentarz 24 grudnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
$strona jest do paginacji, więc tego nie tykajmy. I może nie czepiajmy się mojego braku umiejętności pisania. Skupmy się raczej na problemie bo narazie na żadnym forum nikt nie pomógł jeszcze
komentarz 24 grudnia 2016 przez operator Stary wyjadacz (10,920 p.)

$stmt->bindValue(':search_name','%'.$phpro_search_name.'%');

W linii powyżej czegoś brakuje, a podpowiedź jest tutaj http://php.net/manual/en/pdostatement.bindvalue.php

komentarz 24 grudnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)

Dodałem i dalej nic 

    if(isset($_SESSION['category']))
    {
        $phpro_search_name = filter_var($_SESSION['product_search'], FILTER_SANITIZE_STRING);
        $phpro_category = filter_var($_SESSION['category'], FILTER_SANITIZE_STRING);
        $stmt = getDBH()->prepare("SELECT * FROM products WHERE name LIKE :search_name AND category=:category ORDER BY price $sort_type LIMIT $strona,8");
        $stmt->bindValue(':search_name','%'.$phpro_search_name.'%' , PDO::PARAM_STR);
        $stmt->bindParam(':category', $phpro_category, PDO::PARAM_STR);
        $stmt->execute();
    }else{
        $phpro_search_name = filter_var($_SESSION['product_search'], FILTER_SANITIZE_STRING);
        $stmt = getDBH()->prepare("SELECT * FROM products WHERE name LIKE :search_name ORDER BY price $sort_type LIMIT $strona,8");
        $stmt->bindValue(':search_name','%'.$phpro_search_name.'%' , PDO::PARAM_STR);
        $stmt->execute();
    }

A poza tym, w funkcji, którą właśnie przerabiam na to co jest teraz mam tak samo i działa.

komentarz 24 grudnia 2016 przez operator Stary wyjadacz (10,920 p.)
Wykonaj zapytanie( to które jest wynikiem sklejania napisów w kodzie ) w panelu bazy danych i zobacz czy wynik zgadza się z oczekiwanym.
komentarz 24 grudnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
O to chodzi ?

SELECT * FROM products WHERE name LIKE 00 ORDER BY price ASC LIMIT 0,8

Jeśli tak to nic nie zwraca
komentarz 24 grudnia 2016 przez operator Stary wyjadacz (10,920 p.)
No to tu jest chyba problem, nie?
komentarz 24 grudnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)

Odkryłem problem ale nei umiem go naprawić.

Chodzi o to:

                <select class="form-control menus selectpicker" name="category" onchange="this.form.submit();">
                    <option name="option" value="kategoria">Kategoria</option>
                    <option name="option" value="wszystko">Wszystko</option>
                    <option name="option" value="coins">Coinsy</option>
                    <option name="option" value="testy">Testy</option>
                </select>

A mianowicie gdy wybieram sorotwanie ceny, to nie zostaje wybrana żadna kategoria i formularz wysyła do funkcji poprostu "Kategoria". Wcześniej się coś takiego nie zdarzało bo wszystkie kategorie były w switchu i przy jakichś innych nic się nie ustawiało.

komentarz 24 grudnia 2016 przez operator Stary wyjadacz (10,920 p.)
Czy to <option name="option" value="kategoria">Kategoria</option> nie powinno być gdzieś wyżej? Rozumiem, że jest to tytuł?
komentarz 24 grudnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
No tytuł listboxa, ale jak umieścić to wyżej ?
komentarz 24 grudnia 2016 przez operator Stary wyjadacz (10,920 p.)
To właśnie wygląda jak opcja a nie tytuł.

<div class="selector">

<div class="title">Kategorie</div>

<select>...</select>

</div>
komentarz 24 grudnia 2016 przez Mistrz0000000 Bywalec (2,780 p.)
Teraz problem jest taki że jak wybieram z listy Wszystko to kategoria się nie zmienia, a powinno się robić null, a gdy ustawiam sortowanie ceny to niezależnie jaka kategoria była to ustawia się właśnie wszystko czyli null

Podobne pytania

0 głosów
1 odpowiedź 303 wizyt
pytanie zadane 28 października 2017 w PHP przez Kacper Mieliński Użytkownik (600 p.)
–1 głos
3 odpowiedzi 1,650 wizyt
0 głosów
4 odpowiedzi 269 wizyt

93,110 zapytań

142,091 odpowiedzi

321,614 komentarzy

62,452 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 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...