Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]kodowanie UTF-8
Forum PHP.pl > Forum > Przedszkole
morarz
Witam,

Mam taki kod w PHP (wyświetla 5 wpisów z tabeli i je wyświetla) ale kodowanie coś jest zwalone i nie koduje tak jak trzeba chciałbym aby kodowanie było ustawione na UTF-8 i żeby wyświetlał tylko np. 7 słów.
Jak to zrobić questionmark.gif
Wiem że coś trzeba pokombinować z utf8_encode i substr(0,20) ale coś mi nie wychodzi...

  1. <?php
  2. function wpphpbb_topics() {
  3. $connection = mysql_connect(localhost,'***********","*********") or die("Baza błąd");
  4. $db = mysql_select_db("*********",$connection) or die("Tabela błąd");
  5. $sql = "select * from phpbb_topics order by topic_views desc limit 0,5";
  6. $result = mysql_query($sql) or die("Zapytanie błąd");
  7. for($x=1;$x<=5;$x++){
  8. $row = mysql_fetch_array($result);
  9. echo "<ul>";
  10. echo "<li><a href = \"http://www.garwolinskie.info/forum/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]\">$row[topic_title]</a><br></li>";
  11. echo "</ul>";
  12. }
  13. }
  14. mysql_close($connection);
  15. ?>

Z góry dzięki za odpowiedz.
ciekawskiii
Temat: MYSQL Polskie znaki
W zapytaniu zmieniasz limit 0,7 i w for $x<=7
morarz
Dlaczego 7 jak ustawię 7 to mi się 7 tematów wywoła a ja chce 5.

Zrobiłem tak :
  1. for($x=1;$x<=7;$x++){
  2. $row = mysql_fetch_array($result);
  3. $sql = mysql_query( "set names utf8") ;


I nadal nie działa.
muniekw
A spróbuj tak:

  1. $sql = "select * from phpbb_topics order by topic_views desc limit 0,5";
  2. mysql_query('SET NAMES utf8');
morarz
  1. mysql_query('SET NAMES utf8');


Wiesz co kapnąłem się że przed pętlą trzeba dać to. Zaraz zobacze i dam odpowiedz ale chyba sprawdzałem tak i nie działało.

To z ilością tematów to wiem tongue.gif
------------------------------------------------------------
  1. $sql = "select * from phpbb_topics order by topic_first_post_id desc limit 0,5";
  2. mysql_query('SET NAMES utf8');


Nie działa właśnie sad.gif

Nie wiem co jest nie tak.
muniekw
Rozumiem, że w bazie masz poszczególne kolumny tabeli są ustawione na kodowanie np utf8_polish_ci. ?
emajl22
co wy w ogole tu piszecie...

w bazie daj kodowanie: utf8_general_ci
w pliku: utf-8
kodowanie pliku: utf-8 bez bom

zaraz po polaczeniu z baza (mysql_connect()) daj:
mysql_query("SET NAMES UTF8");
morarz
utf8_general_ci mam tak ustawiony title czyli mam zmienić na utf8_polish_ci.?

Bo zmieniłem dla title na polisg i nadal nic.
muniekw
Niekoniecznie. Pytanie było dla pewności smile.gif
morarz
Oki więc co muszę dodać żeby dzialało i żeby nie było krzaczków :

  1. <?php
  2. function wpphpbb_topics() {
  3. $connection = mysql_connect(localhost,"*********","*********") or die("Baza błąd");
  4. $db = mysql_select_db("*************",$connection) or die("Tabela błąd");
  5. $sql = "select * from phpbb_topics order by topic_first_post_id desc limit 0,5";
  6. mysql_query('SET NAMES utf8');
  7. $result = mysql_query($sql) or die("Zapytanie błąd");
  8.  
  9.  
  10. for($x=1;$x<=5;$x++){
  11. $row = mysql_fetch_array($result);
  12. echo "<ul>";
  13. echo "<li><a href = \"http://www.garwolinskie.info/forum/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]\">$row[topic_title]</a><br></li>";
  14. echo "</ul>";
  15. }
  16. }
  17. mysql_close($connection);
  18. ?>
muniekw
Jeszcze to co mi przychodzi do głowy to kodowanie pliku z którego odpalasz skrypt.
Jeśli nie jest kodowany na utf-8 to powinno być przyczyną.
Żeby to sprawdzić najlepiej odpalić plik np Notepad ++ i sprawdzić.


edit:
Odpaliłem Twój skrypt ze swoimi danymi. Ustawiłem kodowanie pliku w Notepad++ na UTF-8 i poszło.
morarz
Plik PHP kodowanie jest ustawione na UTF-8 to jest na bank pewne. Nie wiem kurde wkurzające to kodowanie jest...

A wracajać do wyświetlania ilości słow to znalazłem taki kod ale nie wiem jak go podepnąć pod mój kod, bo zmieniam i kombinuje ale nic nie wychodzi :

  1. $topic_tit = $resultsow[topic_title];
  2. $topics_title = substr($topic_tit, 0, 60);


questionmark.gifquestionmark.gifquestionmark.gif?
muniekw
Cytat(morarz @ 28.03.2011, 14:52:23 ) *
Plik PHP kodowanie jest ustawione na UTF-8 to jest na bank pewne. Nie wiem kurde wkurzające to kodowanie jest...


A sprawdź czy na jest ustawione na UTF-8 czy na UTF-8 bez BOOM bo to jest różnica.
morarz
Jest ustawione na UTF-8 a musi być na UTF-8 bez BOM?


A tak wogóle jak ustawić w PHPMyAdmin w bazie danych w tabeli żeby też nie było krzaczków bo nawet jak jest ustawione na UTF-8 to i tak jak się doda nowy rekord do bazy z polskimi znakami to są krzaczki...
muniekw
Tak przy okazji w skrypcie masz:
  1. <?php
  2. function wpphpbb_topics() {
  3. $connection = mysql_connect(localhost,"*********","*********") or die("Baza błąd");
  4. $db = mysql_select_db("*************",$connection) or die("Tabela błąd");
  5. $sql = "select * from phpbb_topics order by topic_first_post_id desc limit 0,5";
  6. mysql_query('SET NAMES utf8');
  7. $result = mysql_query($sql) or die("Zapytanie błąd");
  8.  
  9.  
  10. for($x=1;$x<=5;$x++){
  11. $row = mysql_fetch_array($result);
  12. echo "<ul>";
  13. echo "<li><a href = \"http://www.garwolinskie.info/forum/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]\">$row[topic_title]</a><br></li>";
  14. echo "</ul>";
  15. }
  16. }
  17. mysql_close($connection);
  18. ?>


  1. mysql_close($connection);
zamykasz już poza funkcją a połączenie robisz wewnątrz funkcji.

Co do kodowania to można posprawdzać. U mnie jak w Notepad robię konwert na inne kodowanie to mam "krzaczki".
morarz
ok a kodowanie w konsoli mam ok w mysql ?


muniekw
Cytat(morarz @ 28.03.2011, 15:01:59 ) *
A tak wogóle jak ustawić w PHPMyAdmin w bazie danych w tabeli żeby też nie było krzaczków bo nawet jak jest ustawione na UTF-8 to i tak jak się doda nowy rekord do bazy z polskimi znakami to są krzaczki...


Tym że w bazie są krzaczki to nic. Moim zdaniem najważniejsze jest, aby wyświetlały się dobrze.

edit:
Ze zdjęcia wynika, że kodowanie z serwera masz na latin1, więc mogą być stąd krzaczki.
morarz
set global character_set_server=utf8

Robiąc tak nie spierdziele bazy ?
muniekw
Nigdy tak nie robiłem, ale może lepiej zrób kopię.
morarz
#1227 - Access denied; you need the SUPER privilege for this operation

No to lipa...

Ale i tak przecież jak się wyświetlają informacje z tabel na forum to są polskie znaki, ale nie wyświetlają się tylko tytuły z polskimi newsami na stronie głównej więc muszę kombinować dalej...
muniekw
Prześledź od początku wszystkie kroki tylko dla tytułów... smile.gif
morarz
Jak robię jak niżej to mi żadnych rekordów nie pokazuje tylko puste miejsce... Jakieś propozycje co zmienić ?

  1. $sql = "select * from phpbb_topics order by topic_first_post_id desc limit 0,5";
  2. $result = mysql_query( "set names utf8") ;


A jak robie tak to pokazuje się błąd zapytania do bazy...
  1. $sql = mysql_query( "set names utf8") ;
muniekw
Pokazuje błąd bo nie powinieneś robić przypisania tylko wykonać samą instrukcję:
  1. mysql_query( 'set names utf8') ;
morarz
NIc to nie daje...

Nadal krzaczki.

Temat zamknięty. Już zrobione 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.