Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Order by $zmienna z get'a i co jeśli ktoś ją zmieni i kolumny nie będzie ?
Elber
post
Post #1





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Witam, mam sobie zapytanie w którym steruję sortowaniem poprzez link, czyli w linku mam po jakim polu ma sortować i ładnie działa, ale co zrobić gdy ktoś sobie zmieni tą zmienną ? Wtedy wywala mi albo błąd Warning: mysql_fetch_array() .... albo jak dam w kodzie po zapytaniu or die(...); to wyświetla. Moja pytanie co zrobić aby sortowało po ID bądź czymś innym co jest w bazie ale żeby nie sortowało po tym jak ktoś sobie sam zmieni w linku na złą kolumnę ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
untorched
post
Post #2





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

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


Czyli tylko dla tego chcesz zmuszać zwykłego użytkownika do rzucania nim po stronach, zawalania bazy błędami itd? Nie lepiej pobrać nazwy komórek w tabeli i porównać je z tą, wg. której chcemy sortować?

  1. $dozwolone = array(); // pola wg. których dozwolone jest sortowanie
  2.  
  3. $query = 'describe `nazwa_tabeli`;';
  4. $sql = mysql_query($query, $conn);
  5.  
  6. while($ret = mysql_fetch_array($sql))
  7. {
  8. $dozwolone = array_merge((array)$dozwolone, (array)$ret[0]);
  9. }
  10.  
  11. $pole = mysql_real_escape_string($_GET['sortowanie']); // Nazwa pola wg. którego ma być sortowanie
  12.  
  13. if( in_array($pole, $dozwolone) === FALSE )
  14. {
  15. $pole = 'id'; // jeśli nie można sortować wg. pola podanego w zapytaniu
  16. // to ustaw domyślne pole na `id`
  17. }
  18.  
  19. mysql_query('SELECT * FROM `nazwa_tabelki` ORDER BY `'.$pole.'`'); // zapytanie..


Powinno być okej...
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 02:22