Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [AJAX][MySQL][PHP]jqGrid sortowanie polskich znaków
cent4
post 1.02.2011, 10:44:05
Post #1





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Witam.
Używam obsługi tabel z danych branych z bazy MySql i mam problem z sortowaniem polskich znaków.
Tzn. np. jak są rekordy w bazie: a, b, c, ą - to literkę ą mam na końcu - a powinna być po a.
Niestety sortowania poprzez zapytanie SQL nie mogę wykonać - bo ten skrypt pracuje na AJAX'sie i sortować można dowolną kolumnę poprzez naciśnięcie jej nagłówka.
Proszę pomóżcie...
Go to the top of the page
+Quote Post
nospor
post 1.02.2011, 10:48:01
Post #2





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




Cytat
Niestety sortowania poprzez zapytanie SQL nie mogę wykonać - bo ten skrypt pracuje na AJAX'sie i sortować można dowolną kolumnę poprzez naciśnięcie jej nagłówka.
No i właśnie AJAX polega na tym, że leci na serwer do Twojego skryptu php gdzie wykonujesz swoje zapytanie SQL. Więc nie ma żadnego problemu z tym co chcesz zrobić bo czy stronicowanie czy sortowanie tak czy siak przechodzi przez php a co za tym idzie przez SQL


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 1.02.2011, 10:55:01
Post #3





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


No ok - tylko jak to zpiąć i gdzie szukać funkcji, która sortuje?
Bo strona korzysta tylko z biblioteki: jquery-1.4.2.min.js ?
Jakie polecenia php z MySql mam zastosować i gdzie je podpiąć?
Go to the top of the page
+Quote Post
nospor
post 1.02.2011, 10:56:05
Post #4





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




Przecież na stronie jqGRID masz masę przykładów które pokazują zarówno kod js oraz php i mysql jaki należy użyć by daną rzecz wykonać.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 1.02.2011, 14:35:34
Post #5





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Czytam i przeglądam manuala już parę godzin i nie wiem jak zrobić polskie sortowanie :-(

Czy ktoś ma pomysł jak posortować polskie znaki poprzez mysql?
Go to the top of the page
+Quote Post
nospor
post 1.02.2011, 18:03:22
Post #6





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




Jesli ci mysql nie sortuje polskich znaków, znaczy ze masz zwalone collation
Jesli uzywasz utf8 to dla kolumny po której sortujesz masz ustawic collation na utf8-polish-ci


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 1.02.2011, 22:42:13
Post #7





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Problem w tym nospor, że tak to jest ustawione...
Go to the top of the page
+Quote Post
nospor
post 2.02.2011, 07:25:41
Post #8





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




Masz to gdzies wystawione? Bo mi się nie chce wierzyć że ty przy sortowaniu ajaxa uzywasz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 3.02.2011, 15:22:21
Post #9





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Dzięki uprzejmości znajomego podłączyłem to na: http://www.infocent.pl/!projekty/cent4/myfirstgrid.html


i jak?
Go to the top of the page
+Quote Post
nospor
post 3.02.2011, 18:05:47
Post #10





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




Jest tak jak mówiłem - przy sortowaniu w ogóle nie używasz AJAXA czyli nie pobierasz rekordów bazy a są sortowanie jedynie przez js.
CZy ja nie wyraźnie mówiłem, że ma być AJAX? Ze ma być to zwracane przez mysql? Ale oczywiscie ty w zaparte ze wszystko zawsze idzie przez mysql :/
I weź tu człowieku pomagaj, jak prostej komendy nie rozumieją... Jak nie wiesz kiedy masz ajax a kiedy nie to sobie zainstaluj FIREBUG dla firefoxa bo inaczej to nawet niemamy co rozmawiać gdy ty nie wiesz kiedy masz AJAXa i kiedy używasz bazy a kiedy nie :/


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 3.02.2011, 21:57:23
Post #11





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


No ok, a tak jak to jest - przez sortowanie javascript da się to porządkować właściwie?
Go to the top of the page
+Quote Post
nospor
post 4.02.2011, 09:19:53
Post #12





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




Szczerze to nie wiem. Nie miałem potrzeby się nigdy nad tym zastanawiać. Ja używam grida do danych, których zawsze jest kilka stron. Sortowanie więc danych przez js, które zajmują kilka stron, mija się z jakimkolwiek sensem, gdyż wówczas będzie sortowana tylko dana strona a nie wszystkie dane.

Jeśli więc i ty masz zamiar mieć tam danych na kilka stron, więc lepiej włącz tryb AJAXA smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 4.02.2011, 11:00:37
Post #13





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


skoro robiłeś to w gridzie to może zdradzisz mi jak mam to zrobić z ajaxem? Bo to co zrobiłem, co wisi na stronie to wziąłem z manuala, a szczerze mówiąc nie mam pojęcia jak to zrobić poprzez ajaxa?
Tak masz rację - danych będzie kilka stron :-)
Go to the top of the page
+Quote Post
nospor
post 4.02.2011, 11:11:44
Post #14





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




To miałeś cholerny niefart, bo wziąłeś akurat przykład, który naraz ładuje wszystko tongue.gif
Z dziesiątków przykładów u nich na stronie chyba tylko ten jeden jest taki i ty akurat musiałeś go wziąść wink.gif

loadonce:true,
albo to wywal, albo ustaw na false.

Być może jeszcze coś będziesz musiał zmienić. Nawwalałeś tych parametrów, niektóre pierwszy raz widzę na oczy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 4.02.2011, 11:19:07
Post #15





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


2 sprawy:
1. Dzięki wielkie - chyba już działa odpowiednio bo sortowanie się inaczej zachowuje - czy teraz wygląda Ci to w porządku?
2. Dlaczego "dziwnie sortuje" tzn. ą przed a?

3. siadło też wyszukiwanie - filtry u góry :-( - będę musiał nad tym popracować :-(
Go to the top of the page
+Quote Post
nospor
post 4.02.2011, 11:24:07
Post #16





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




ąa pewnie dlatego, ze jednak nie masz collate utf-polish-ci wink.gif
Co do filtrowania to pewnie też w zapytaniu nie uwzględniasz wyszukiwania. Do tej pory ci dzialalo, bo to js filtrowal. teraz skoro masz ajax to zapytanie ma filtrowac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 4.02.2011, 11:37:49
Post #17





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Jesteś geniuszem - poprawiłem poprzez PhpMyAdmin kodowanie i gra :-).
Wielkie dzięki.

Ale z tym filtrowaniem będę miał problem.

Dla Ciebie to będzie 2 sekundy - jak spojrzysz.

Załączamam plik php, z którego ten plik html korzysta:

  1. <?php
  2.  
  3. include("dbconfig.php");
  4. // initialization
  5.  
  6. $page = $_GET['page']; // get the requested page
  7. $limit = $_GET['rows']; // get how many rows we want to have into the grid
  8. $sidx = $_GET['sidx']; // get index row - i.e. user click to sort
  9. $sord = $_GET['sord']; // get the direction
  10. if(!$sidx) {
  11. $sidx = 1;
  12. }
  13. $totalrows = isset($_GET['totalrows']) ? $_GET['totalrows']: false;
  14. if($totalrows) {
  15. $limit = $totalrows;
  16. }
  17. // connect to the database
  18. $db = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: " . mysql_error());
  19. mysql_select_db($database) or die("Database connection error.");
  20.  
  21. //mysql_query("SET NAMES utf8");
  22. //mysql_query("SET CHARACTER SET utf8");
  23. //mysql_query("SET collation_connection = utf8");
  24. //mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  25.  
  26. //mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
  27. mysql_set_charset('utf8',$db);
  28.  
  29.  
  30. // get the count of rows
  31. $result = mysql_query("SELECT COUNT(*) AS count FROM users");
  32. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  33. $count = $row['count'];
  34. // get the required variables
  35. if( $count>0 ) {
  36. $total_pages = ceil($count / $limit);
  37. } else {
  38. $total_pages = 0;
  39. }
  40. if ($page> $total_pages) {
  41. $page = $total_pages;
  42. }
  43. if ($limit <0) {
  44. $limit = 0;
  45. }
  46. $start = $limit * $page - $limit;
  47. if ($start <0) {
  48. $start = 0;
  49. }
  50. // get the actual stuff to be displayed in the grid
  51. $SQL = "SELECT * FROM users ORDER BY $sidx $sord LIMIT $start , $limit";
  52. $result = mysql_query($SQL) or die("Could not execute query." . mysql_error());
  53.  
  54.  
  55. // create a response array from the obtained result
  56. $response->page = $page;
  57. $response->total = $total_pages;
  58. $response->records = $count;
  59. $i = 0;
  60. while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  61. $response->rows[$i]['id'] = $row['id'];
  62. $response->rows[$i]['cell'] = array($row['id'],$row['name'],$row['code'],$row['opis']);
  63. $i++;
  64. }
  65. // convert the response into JSON representation
  66. echo json_encode($response);
  67. // close the database connection
  68.  
  69. ?>
Go to the top of the page
+Quote Post
nospor
post 4.02.2011, 11:47:22
Post #18





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




Nie, poprostu ty nie czytasz co się do ciebie pisze.
Powiedziałem ci wcześniej:
Cytat
Jesli uzywasz utf8 to dla kolumny po której sortujesz masz ustawic collation na utf8-polish-ci
Na co ty mi odpowiedziałeś:
Cytat
Problem w tym nospor, że tak to jest ustawione...
To jakim cudem to mogło być tak ustawione, skoro teraz piszesz, że jednak dopiero teraz to ustawiłeś :/

u nich w przykładach masz wyszukiwanie. Poprostu przejrzyj ich przykłady, które w nazwie mają "search"
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cent4
post 4.02.2011, 11:49:50
Post #19





Grupa: Zarejestrowani
Postów: 415
Pomógł: 0
Dołączył: 24.12.2008

Ostrzeżenie: (10%)
X----


Już śpieszę z wyjaśnieniami - jak działało mi to lokalnie (na zainstalowanym w systemie WebServ'ie) - było ustawione na polish i faktycznie nie działało.

Teraz jak udostępnił mi znajomy serwer www i to powiesiłem - nie było to ustawione i dlatego to zmieniłem i teraz jest efekt.

Nie wiem, dlaczego wyeksportowana baza tego ustawienia nie miała.

Na lokalnym komputerze dalej to mam i mam ustawione polish - więc nie wiem dlaczego po pierwsze, źle się to wyeksportowało i źle zaimportowało - może to inaczej działa jako serwer lokalny a inaczej na normalnym serwerze, ale na tym się nie znam.
Go to the top of the page
+Quote Post
nospor
post 4.02.2011, 11:51:54
Post #20





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




Ok, wyjaśnienie przyjęte smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 23:13