Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie za pomocą kliknięcia w nagłówek kolumny - nie działa
Amakesh
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 26.06.2014

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


Witam!
Mam tabelę, w której wyświe tlam rekordy z bazy danych. W nagłówku każdej kolumny jest ukryte pole ze zmienną mającą wartość "asc" lub "desc" i przycisk. Po kliknięciu przycisku wartość z ukrytego pola ma zostać pobrana do zmiennej $sort i wstawiona do zapytania(query, z którym później wywołujemy funkcję) a wartość zmiennej z pola nadpisana na przeciwną(asc na desc i odwrotnie). Niestety nie działa nawet jeśli użyję zmiennej globalnej - wartość zmiennej w polu zostaje pobrana poprawna ale potem się nie nadpisuje.
Co jest nie tak?

http://main.xfiddle.com/a6897120/sort.php

W powyższym skrypcie dla uproszczenia jest tylko jeden nagłówek tabeli/przycisk a funkcja tylko wyświetla otrzymane zapytanie.
Po każdym kliknięciu przycisku typ sortowania powinien się ustawiać na na przemian asc/desc, jednak tak nie jest..
Go to the top of the page
+Quote Post
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Pokaż kod bo z tego example nic nie wynika poza tym, że nie działa.


--------------------
Go to the top of the page
+Quote Post
Amakesh
post
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 26.06.2014

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


  1. <?php
  2. $InvDateNextOrder = "asc";
  3. $parent = "user";
  4.  
  5. ?>
  6.  
  7. <form method="post"><input type="hidden" name="datew" value="<?php echo $InvDateNextOrder; ?>" /><input type="submit" value="Data wystawienia" name="dwyst" class="button" style="width:150px;"></form>
  8.  
  9. <?php
  10. function show($query_disp){
  11.  
  12. echo $query_disp;
  13. }
  14. ?>
  15. <!--Tutaj w oryginalnym skrypcie znajduje się <body> tabeli html-->
  16.  
  17.  
  18. <?php
  19.  
  20. if(isset($_POST['dwyst'])){
  21.  
  22. $sort = $_POST['datew'];
  23.  
  24. if($sort=="asc"){
  25. /$GLOBALS['InvDateNextOrder'] = "desc";
  26. //global $InvDateNextOrder;
  27. $InvDateNextOrder = "desc";
  28.  
  29. }
  30.  
  31. if($sort=="desc"){
  32.  
  33. //$GLOBALS['InvDateNextOrder'] = "asc";
  34. //global $InvDateNextOrder;
  35. $InvDateNextOrder = "asc";
  36.  
  37.  
  38.  
  39. }
  40.  
  41. var_dump($InvDateNextOrder);
  42. $query_disp = "SELECT * FROM jos_program_invoice WHERE owner='$parent' ORDER BY invoice_date ".$sort;
  43. show($query_disp);
  44.  
  45. }
  46. ?>


Ten post edytował Amakesh 17.02.2017, 02:05:54
Go to the top of the page
+Quote Post
markonix
post
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Przekombinowane.

Pisane z palca:

  1. <?php
  2. $currentSort = 'asc';
  3. if (!empty($_POST['sort'])) {
  4. $currentSort = $_POST['sort'];
  5. }
  6. ?>
  7. <form method="post">
  8. <input type="hidden" name="sort" value="<?= $currentSort == 'asc' ? 'desc' : 'asc'; ?>">
  9. <input type="submit" value="SUBMIT">
  10. </form>


--------------------
Go to the top of the page
+Quote Post
Amakesh
post
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 26.06.2014

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


Niestety nie działa - kiedy próbuję uruchomić skopiowany kod z phpfiddle.org lub z serwera, po kliknięciu przycisku nic się nie dzieje. Natomiast jeśli zamienię w swoim kodzie to
  1. <input type="hidden" name="datew" value="<?php echo $InvDateNextOrder; ?>" />
na
  1. <input type="hidden" name="sort" value="<?= $currentSort == 'asc' ? 'desc' : 'asc'; ?>">
(oczywiście z właściwą nazwą zmiennej) efekt jest taki jak w pierwszym poście.
Go to the top of the page
+Quote Post
markonix
post
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Ale Ty masz cały kod zastosować, a nie tylko jego fragment.
Wszystko działa jak powinno:
http://ebizo.pl/test.php


--------------------
Go to the top of the page
+Quote Post
lukas333
post
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 1.02.2017

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


Warunek w linii 20. 'dwyst' zamień na 'datew'
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 Aktualny czas: 20.08.2025 - 13:44