Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Problem z sortowaniem
pawelsz66
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 10.01.2010

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


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

Ten post edytował pawelsz66 17.02.2010, 22:56:14
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




pewnie dales dla pola varchar.... pole z liczbą ma byc polem liczbowym a nie tekstowym
Go to the top of the page
+Quote Post
altruista2
post
Post #3





Grupa: Zarejestrowani
Postów: 127
Pomógł: 32
Dołączył: 8.02.2010

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


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];

(IMG:style_emoticons/default/smile.gif) (IMG:style_emoticons/default/smile.gif)

Ten post edytował altruista2 17.02.2010, 23:57:49
Go to the top of the page
+Quote Post
pawelsz66
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 10.01.2010

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


Miałeś racje (IMG:style_emoticons/default/smile.gif) teraz dałem FLOAT i wszytko gra
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 05:09