Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Problem z sortowaniem
Forum PHP.pl > Forum > Przedszkole
pawelsz66
No więc mój problem polega na tym, że jakoś dziwnie mi się sortuje tzn ignoruje zera. Kod jakim sposobem sortuje:
Kod
$link1 = "{$_SERVER['PHP_SELF']}?sort=lna";
$link2 = "{$_SERVER['PHP_SELF']}?sort=fna";
$link3 = "{$_SERVER['PHP_SELF']}?sort=dra";

// Okre?l sposób sortowania.
if (isset($_GET['sort'])) {

    // U?yj istniej?cy sposób sortowania.
    switch ($_GET['sort']) {
        case 'lna':
            $order_by = 'Miejsc ASC';
            $link1 = "{$_SERVER['PHP_SELF']}?sort=lnd";
            break;
        case 'lnd':
            $order_by = 'Miejsc DESC';
            $link1 = "{$_SERVER['PHP_SELF']}?sort=lna";
            break;
        case 'fna':
            $order_by = 'cena ASC';
            $link2 = "{$_SERVER['PHP_SELF']}?sort=fnd";
            break;
        case 'fnd':
            $order_by = 'cena DESC';
            $link2 = "{$_SERVER['PHP_SELF']}?sort=fna";
            break;
        case 'dra':
            $order_by = 'pow ASC';
            $link3 = "{$_SERVER['PHP_SELF']}?sort=drd";
            break;
        case 'drd':
            $order_by = 'pow DESC';
            $link3 = "{$_SERVER['PHP_SELF']}?sort=dra";
            break;
                    case 'dre':
    $order_by = 'registration_date DESC';
            $link4 = "{$_SERVER['PHP_SELF']}?sort=dre";
            break;
        default:
            $order_by = 'registration_date DESC';
            break;
    }
jak ktoś nei zrozumiał problemu to: np 9999 wyżej plasuje niż np 1000000 za to przy takiej samej ilości liczb normalnie sortuje
nospor
pewnie dales dla pola varchar.... pole z liczbą ma byc polem liczbowym a nie tekstowym
altruista2
Widze nospor wyjaśnił Ci w czym leży problem

Ale żeby nie było że wchodzę tutaj "z pustymi rękami" to trzymaj troszkę bardziej elegancki sposób:
  1. $pola = Array('miejsc','cena','pow','registration_date');
  2. $jak = Array('asc','desc');
  3. $linki = Array();
  4.  
  5. $sort = intval($_GET['sort']);
  6. $by = intval($_GET['by']);
  7.  
  8. if(!(($sort >= 0) || ($sort < count($pola)))) $sort = 0;
  9. if(!(($by >= 0) || ($by <= 1))) $by = 0;
  10.  
  11. for($v=0;$v<count($pola);$v++) {
  12. $linki[$v] = $_SERVER['PHP_SELF']."?sort=$sort&by=";
  13. if($sort == $v) {
  14. $linki[$v] .= (1 - $by);
  15. }else{
  16. $linki[$v] .= $by; // lub ew. "0"
  17. }
  18. }
  19.  
  20. $order_by = $pola[$sort].' '.$jak[$by];

smile.gifsmile.gif
pawelsz66
Miałeś racje smile.gif teraz dałem FLOAT i wszytko gra
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.