Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter] Sortowanie
Forum PHP.pl > Forum > PHP > Frameworki
reptilerex
Chcę zrobić w code igniterze sortowanie i mam pytanie.
Przekazuję parametry metodzie sort GET'em (sort/pole w tabeli/typ sortowania)

np: sort/title/desc

Ale mam wątpliwości co do tego, ponieważ przy błędnym wpisaniu nazwy pola np: titledjasbhdj
Code Igniter generuję błąd "Unknown Field" no i słusznie bo takie pole nie istnieje + wyświetla to błędne zapytanie do bazy danych.
To jest niebezpieczne i niepowołane działanie bo po co ktoś ma widzieć z jakiej tabeli pobierane są wyniki itd.

Czy jest jakiś inny sposób, aby stworzyć takie sortowanie ?
A jeżeli nie, to czy może istnieje jakiś sposób, aby nie pokazywać tego błędu tylko np przekierować redirectem?
szok
Przypisz sobie opcje sortowania na stałe.

Kod
if($wybor == 'wiek')
{
    $this->db->order_by('wiek', 'desc');
}
elseif($wybor == 'kolor')
{
    $this->db->order_by('kolor', 'desc');
}


Jak niema to leci sortowanie jakieś domyślne.
reptilerex
Nie mogę tak zrobić ponieważ to jest klasa, która generuję widok w postaci Tabelki HTML itd, więc nie jestem w stanie przewidzieć jakie pola bazy danych użytkownik tej klasy wprowadzi.
szok
Ok, kuknij czy to będzie dobre. W klasie database w CI jest opcja sprawdzenia czy takie pole w danej tabeli istnieje.

  1. public function sort($field = 'id', $order = 'desc')
  2. {
  3. if($this->db->field_exists($field, 'www_klienci'))
  4. {
  5. $this->db->order_by($field, $order);
  6. }
  7. $res = $this->db->get('www_klienci', 20, 0);
  8. echo '<pre>';
  9. print_r($res->result_array());
  10. echo '<pre>';
  11. }


I wtedy w adresie:
index.php/controller/sort/mojepole/desc tak jak pisałeś wyżej.
Do tego można sprawdzać czy $order ma którąś z wartości 'asc', 'desc' żeby jakiegoś błędu nie było.
reptilerex
Ooo jak jest funkcja do sprawdzania czy pole istnieje to super.
Dzięki wielkie, co do asc/desc racja, warto.. ale z tego co sprawdzałem nie generuję błędu.
szok
I gra gitara, ale ja dla pewności jednak dał bym zabezpiczenie, bo to jednak zawsze jakaś treść w zapytani SQL którą można wrzucić, a tak się przed tym obronisz. smile.gif
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.