Sortowanie za pomocą kliknięcia w nagłówek kolumny - nie działa

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?

W poniż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..

    <?php
    $InvDateNextOrder = "asc";
    $parent = "user";
     
    ?>
     
    <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>
     
    <?php
<!-- Poniższa funkcja dla uproszczenia tutaj tylko wyświetla otrzymane zapytanie, natomiast w oryginalnym kodzie generuje tabelę na podstawie danych z bazy -->
    function show($query_disp){
     
        echo $query_disp;
    }    
    ?>  
    <!--Tutaj w oryginalnym skrypcie znajduje się <body> tabeli html-->
     
     
    <?php
     
    		if(isset($_POST['dwyst'])){
     
    		 $sort = $_POST['datew'];
     
    			if($sort=="asc"){
    		      /$GLOBALS['InvDateNextOrder'] = "desc";	
    		      //global $InvDateNextOrder;
    	             $InvDateNextOrder = "desc";	
     
    			}    
     
                	if($sort=="desc"){
     
    			//$GLOBALS['InvDateNextOrder'] = "asc";	
    			//global $InvDateNextOrder;
    			 $InvDateNextOrder = "asc";	
     
     
     
    			}
     
    			var_dump($InvDateNextOrder);
    			$query_disp = "SELECT * FROM jos_program_invoice WHERE owner='$parent' ORDER BY invoice_date ".$sort;	
    		show($query_disp);	
     
            }
    ?> 
0
 $query_disp = "SELECT * FROM jos_program_invoice WHERE owner='$parent' ORDER BY ".$sort;   

Spróbuj tak.

0

Czy probowałeś tak

$query_disp = "SELECT * FROM jos_program_invoice WHERE owner='$parent' ORDER BY invoice_date DESC";

czy tak

$query_disp = "SELECT * FROM jos_program_invoice ORDER BY invoice_date DESC";

W "owner" istnieje "user"?

0
tadeusz_gda napisał(a):

Czy probowałeś tak

$query_disp = "SELECT * FROM jos_program_invoice WHERE owner='$parent' ORDER BY invoice_date DESC";

czy tak

$query_disp = "SELECT * FROM jos_program_invoice ORDER BY invoice_date DESC";

W "owner" istnieje "user"?

Próbowałam tak:

$query_disp = "SELECT * FROM jos_program_invoice WHERE owner='$parent' ORDER BY invoice_date DESC";

przy czym DESC(lub ASC) pochodzi ze zmiennej $sort a invoice_date to nazwa kolumny tabeli w bazie, po której mają zostać posortowane rekordy.
User istnieje,

0
$query_disp = "SELECT * FROM jos_program_invoice WHERE owner='.$parent.' ORDER BY invoice_date DESC";
0
bacha napisał(a):

Próbowałam tak:

$query_disp = "SELECT * FROM jos_program_invoice WHERE owner='$parent' ORDER BY invoice_date DESC";

przy czym DESC(lub ASC) pochodzi ze zmiennej $sort a invoice_date to nazwa kolumny tabeli w bazie, po której mają zostać posortowane rekordy.
User istnieje,

Może lepiej tak zrób, żeby wykluczyć "sql injection"?

if($sort=="desc"){
  $sort_new = "DESC";    
 }    
else{
   $sort_new = "ASC"; 
}
var_dump($InvDateNextOrder);
$query_disp = "SELECT * FROM jos_program_invoice WHERE owner='$parent' ORDER BY invoice_date ".$sort_new;

Działa?

0
$query_disp = "SELECT * FROM jos_program_invoice WHERE owner=".$parent." ORDER BY invoice_date DESC";

Wtedy wstawisz do zapytania zmienną, a nie nazwę "$parent", kropki oddzielają cudzysłów od wartości zmiennej.

0
Zimny Wąż napisał(a):
$query_disp = "SELECT * FROM jos_program_invoice WHERE owner=".$parent." ORDER BY invoice_date DESC";

Wtedy wstawisz do zapytania zmienną, a nie nazwę "$parent", kropki oddzielają cudzysłów od wartości zmiennej.

$query_disp = "SELECT * FROM jos_program_invoice WHERE owner='".$parent."' ORDER BY invoice_date DESC";

Albo tak

1 użytkowników online, w tym zalogowanych: 0, gości: 1