Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [MySQL][PHP]Alfabetyczne sortowanie a polskie znaki
Rookie
post 19.08.2009, 10:32:31
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


Witam,
Gdy dodaję na stronie wpisy do tabeli mysql z polskimi znakami, do bazy zapisywane są zamiast nich "krzaczki".
Podczas odczytywania ich z bazy, na stronie na szczęście pokazują się polskie znaki smile.gif.
Jednak niestety, kiedy włączam sortowanie alfabetyczne wpisów w tabeli w polu "tytul" mam np 6 a,b,c,p,ś,z(alfabetycznie)
i je wyświetlę, to ładnie sortuje alfabetycznie, ale jak na początku tytułu jest polski znak, to wywala go do przodu, czyli: ś,a,b,c,p,z
Mogę jakoś zrobić, aby polskie znaki były, że tak powiem, na swoim miejscu?
Wiem, jest temat, jak zrobić polskie znaki w bazie, ale mam wszystko jak trzeba.
Oto skrypt odczytujący dane z tabeli mysql i sortujący je alfabetycznie:
  1. <?php
  2. require('conn.php');
  3. $sql=mysql_query("SELECT * FROM filmy ORDER BY tytul") or die(mysql_error());
  4. $ile=mysql_num_rows($sql);
  5. $nr = 1;
  6. while ($nr <= $ile)
  7. {
  8. while($dane = mysql_fetch_assoc($sql)) {
  9. echo '
  10. <tr>
  11. <td valign="top" class="trescc">
  12. '.$nr.'
  13. </td>
  14. <td valign="top" class="trescc">
  15. '.$dane[tytul].'
  16. </td>
  17. <td valign="top" class="trescc">
  18. '.$dane[ilosc].'
  19. </td>
  20. <td valign="top" class="trescc">
  21. '.$dane[pochodzenie].'
  22. </td>
  23. <td valign="top" class="trescc">
  24. '.$dane[typ].'
  25. </td>
  26. <td valign="top" class="trescc">
  27. '.$dane[rodzaj].'
  28. </td>
  29. </tr>';
  30. $nr += 1;
  31. }
  32. ;}
  33. ?>


Ten post edytował Rookie 19.08.2009, 10:34:01
Go to the top of the page
+Quote Post
jmail
post 19.08.2009, 10:50:48
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 53
Dołączył: 10.08.2009

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


a ten plik conn php można obejrzeć? w jakim kodowaniu masz pliki? jakie kodowanie jest w bazie? jakie kodowanie masz ustawione na połączeniu?
Go to the top of the page
+Quote Post
marian2299
post 19.08.2009, 11:03:28
Post #3





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


Cytat
na początku tytułu jest polski znak, to wywala go do przodu,

To chyba dobrze.


--------------------
film edit student
Go to the top of the page
+Quote Post
kfc4
post 19.08.2009, 11:05:27
Post #4





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

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


Dokładnie, musisz się zdecydować na jedno kodowanie. Baza, dodawanie do bazy, wyciąganie z bazy, wyświetlanie oraz kod HTML musi być w jednym kodowaniu. Osobiście polecam utf-8.
Go to the top of the page
+Quote Post
erix
post 19.08.2009, 11:19:08
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
i je wyświetlę, to ładnie sortuje alfabetycznie, ale jak na początku tytułu jest polski znak, to wywala go do przodu, czyli: ś,a,b,c,p,z

Ustaw kodowanie dla kolumny utf8_polish_ci, wtedy po polskich krzakach będzie sortowało poprawnie.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Rookie
post 19.08.2009, 12:08:41
Post #6





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


mam utf_polish_ci
a w htmlu mam tak:
  1. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />

Mam nadzieję, że dobrze, ktoś prosił o conn.php, więc proszę:
  1. <?php
  2. define('DB_HOST','localhost');
  3. define('DB_USER','user'); //wpisz nazwę użytkownika bazy danych
  4. define('DB_PASS','haslo'); //wpisz hasło dla tego użytkownika
  5. define('DB_DB','baza');
  6.  
  7. $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS)
  8. OR die('Nie udało połączyc się z bazą danych. '.mysql_error());
  9.  
  10. mysql_select_db(DB_DB,$connect)
  11. ?>
Go to the top of the page
+Quote Post
Fifi209
post 19.08.2009, 12:17:35
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Zmieniasz kodowanie pliku na utf-8 (ściągnij notepad++ i zapisz w kodowaniu utf-8 bez BOM)
W meta też ustawiasz utf-8

i przy połączeniu używasz: mysql_set_charset


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Rookie
post 19.08.2009, 12:28:42
Post #8





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


Czyli w meta ma być tak:
  1. <meta http-equiv="Content-type" content="text/html; charset=utf8" />

lub tak:
  1. <meta http-equiv="Content-type" content="text/html; charset=utf8_polish_ci" />

questionmark.gif

Ten post edytował Rookie 19.08.2009, 12:29:23
Go to the top of the page
+Quote Post
slightyboy
post 19.08.2009, 12:29:33
Post #9





Grupa: Zarejestrowani
Postów: 52
Pomógł: 12
Dołączył: 12.07.2007

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


Dla pewności zaraz po połączeniu z bazą wyślij zapytania:
Kod
SET CHARACTER SET utf8;
SET collation_connection = utf8_polish_ci;

W HTML zmień wartość "meta" z ISO-8859-2 na UTF8 (choć tak naprawdę nie ma to wpływu na sortowanie, ale chodzi tu o zastosowanie się do zasady jednolitego kodowania w całej aplikacji).

Ten post edytował slightyboy 19.08.2009, 12:32:02
Go to the top of the page
+Quote Post
Fifi209
post 19.08.2009, 12:39:09
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Rookie @ 19.08.2009, 12:28:42 ) *
Czyli w meta ma być tak:
  1. <meta http-equiv="Content-type" content="text/html; charset=utf8" />

lub tak:
  1. <meta http-equiv="Content-type" content="text/html; charset=utf8_polish_ci" />

questionmark.gif


Cytat(fifi209 @ 19.08.2009, 12:17:35 ) *
Zmieniasz kodowanie pliku na utf-8 (ściągnij notepad++ i zapisz w kodowaniu utf-8 bez BOM)
W meta też ustawiasz utf-8

Pisałem gdzieś, że na utf_polish_ci ? Nie ma czegoś takiego w html.


Cytat(fifi209 @ 19.08.2009, 12:17:35 ) *
i przy połączeniu używasz: mysql_set_charset


Cytat(slightyboy @ 19.08.2009, 12:29:33 ) *
Dla pewności zaraz po połączeniu z bazą wyślij zapytania:
Kod
SET CHARACTER SET utf8;
SET collation_connection = utf8_polish_ci;

W HTML zmień wartość "meta" z ISO-8859-2 na UTF8 (choć tak naprawdę nie ma to wpływu na sortowanie, ale chodzi tu o zastosowanie się do zasady jednolitego kodowania w całej aplikacji).

Kończ waść, wstydu oszczędź...


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Rookie
post 19.08.2009, 12:46:59
Post #11





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


Nie udało mi się tego osiągnąć jak w meta zmieniałem na utf8, to pajączek powiedział, że złe kodowanie, sprawdziłem i dodałem z poziomu funkcji programu i wpisał utf-8 ale zanim zdążyłem sprawdzić jak tam sortowanie, to wróciłem do iso, bo wtedy np, w menu na stronie "główna" było już z krzakami
Go to the top of the page
+Quote Post
Fifi209
post 19.08.2009, 12:50:49
Post #12





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Rookie @ 19.08.2009, 12:46:59 ) *
Nie udało mi się tego osiągnąć jak w meta zmieniałem na utf8, to pajączek powiedział, że złe kodowanie, sprawdziłem i dodałem z poziomu funkcji programu i wpisał utf-8 ale zanim zdążyłem sprawdzić jak tam sortowanie, to wróciłem do iso, bo wtedy np, w menu na stronie "główna" było już z krzakami

Napisałem, notepad++ tak więc użyj tego programu i dopiero zastosuj się do rady.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Rookie
post 19.08.2009, 12:55:54
Post #13





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


Mam zwykłego notepada, niestety wywalił mi po tej operacji, session_start(), że już wysłano (already sent) i na samej górze zanim jeszcze strona była jakieś dziwne krzaki, napis "główna" był normalnie ale zato już ł w słowie "Hasło" było krzaczorem,
żeby rozwiać wątpliwości, zciągnę notepada++ i sprawdzę, zaraz poszukam w google, chyba, że napiszesz mi z kąd mogę go zciągnąć
Go to the top of the page
+Quote Post
Fifi209
post 19.08.2009, 12:59:28
Post #14





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


notepad++
Pierwszy wynik.

A wyrzucił błędy bo zakodowałeś z BOM.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Spawnm
post 19.08.2009, 13:10:04
Post #15





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Temat poruszany milion razy, zamykam.
Go to the top of the page
+Quote Post

Closed 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: 7.06.2025 - 11:30