Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Sortowanie po wyborze z pola select / zmienna w zapytaniu SQL?
kubax33
post 20.11.2016, 20:07:08
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 27.01.2010

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


Zastanawiam się jak wykonać poprawnie sortowanie wyników po wybraniu z selecta

  1. <select name="sortuj">
  2. <option value="1" name="sortuj">Rosnąco</option>
  3. <option value="2" name="sortuj">Malejąco</option>


Robię to teraz jak potrafię, ale wiem, że jest to niezbyt dobre rozwiązanie:

  1. if ($_POST['sortuj'] == '1')
  2. {
  3. $sql = mysql_query("SELECT * FROM tabela GROUP BY produkt ASC");
  4. }
  5. elseif ($_POST['sortuj'] == '2')
  6. {
  7. $sql = mysql_query("SELECT * FROM tabela GROUP BY produkt DESC");
  8. }


Czy przesyłać jakoś to w zmiennej i odczytywać zmienną w sql?
Jakie jest poprawne rozwiązanie?

Ten post edytował kubax33 20.11.2016, 20:07:50
Go to the top of the page
+Quote Post
nospor
post 20.11.2016, 20:09:30
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przekombinowales


  1. $sort = $_POST['sortuj'] === '1' ? 'ASC' : 'DESC'
  2. $sql = mysql_query("SELECT * FROM tabela GROUP BY produkt $sort");



--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kubax33
post 20.11.2016, 20:20:43
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 27.01.2010

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


Tylko, że mam zapytanie na prawdę tak wyglądające:

  1. $dbh = new PDO("mysql:host=$host;dbname=$base_name", $user, $pass);
  2. $sort = $_POST['sortuj'] === '1' ? 'ASC' : 'DESC'; /// dodałem średnik na końcu
  3. foreach($dbh->query('SELECT produkt ,GROUP_CONCAT(DISTINCT id ORDER BY id ASC SEPARATOR ", ") FROM tabela GROUP BY ean $sort') as $info)
  4.  
  5. {
  6. echo 'dane... '.$info['id'].'';
  7. }


i jak widzę to rozwiązanie nie funkcjonuje wywalając błąd:
  1. Warning: Invalid argument supplied for foreach()


Ten post edytował kubax33 20.11.2016, 20:23:26
Go to the top of the page
+Quote Post
trueblue
post 20.11.2016, 20:23:42
Post #4





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


....GROUP BY ean ORDER BY pole $sort'


--------------------
Go to the top of the page
+Quote Post
kubax33
post 20.11.2016, 20:28:17
Post #5





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 27.01.2010

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


Dałem

  1. foreach($dbh->query('SELECT produkt ,GROUP_CONCAT(DISTINCT id ORDER BY id ASC SEPARATOR ", ") FROM tabela GROUP BY ean ORDER BY ean $sort') as $info)


i dałej błąd
Go to the top of the page
+Quote Post
nospor
post 20.11.2016, 20:30:37
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Haha, nawet nie zwrocilem uwagi ze dales tam GROUP BY zamiast ORDER BY... no podstawy kolego wink.gif

edit: skoro masz blad, to wyswietl blad bazy to ci on wszystko powie co masz zle


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
trueblue
post 20.11.2016, 20:31:13
Post #7





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


ORDER BY ean '.$sort


--------------------
Go to the top of the page
+Quote Post
nospor
post 20.11.2016, 20:31:20
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ps: i odrozniaj ' od ". W moim przykladzie ja uzylem " i tam mozna wlozyc zmienna. W ' zmienna nie jest interpretowana :/


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kubax33
post 20.11.2016, 20:58:19
Post #9





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 27.01.2010

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


Ok dzięki za nakierowanie faktycznie chodziło ' / "

  1.  
  2. $dbh = new PDO("mysql:host=$host;dbname=$base_name", $user, $pass);
  3. $sort = $_POST['sortuj'] === '1' ? 'ASC' : 'DESC'; /// dodałem średnik na końcu
  4. foreach($dbh->query("SELECT produkt ,GROUP_CONCAT(DISTINCT id ORDER BY id ASC SEPARATOR ', ') FROM tabela GROUP BY ean $sort") as $info)
  5.  
  6. {
  7. echo 'dane... '.$info['id'].'';
  8. }
  9.  


Ale teraz mam problem z
  1. GROUP_CONCAT(DISTINCT id ORDER BY id ASC SEPARATOR ", ")


,który zmieniłem na
  1. GROUP_CONCAT(DISTINCT id ORDER BY id ASC SEPARATOR ', ')


i nie pobiera danych

ok
  1. GROUP_CONCAT(DISTINCT id ORDER BY id ASC SEPARATOR \", \")


działa
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: 4.06.2025 - 07:42