Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Krzaczki w MySQL
coder()
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 3.05.2007

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


Witam.
1.
Mam formularz do którego dodaję tekst. Jest on nastepnie obrabiany i każdy wyraz z tego ciągu dłuższy od 3 znaków jest wsadzany do bazy danych. Cały skrypt, mysql i html używają systemu UTF-8.
Niestety mimo tego do bazy danych wpadają krzaki. Oczywiście gdy wyciągne te rekordy z bazy danych to przeglądarka wyswietli mi je normalnie. Jednak jeśli do MySQL dodam jakiś rekord ręcznie to normalnie rekordy są przetrzymywane z żąśółćńę itp.
Jak zrobić żeby przez sam skrypt tak się dodawało automatycznie??

Tekst jest poddawany obróbce przez nastepujące funkcje w niezmienionej postaci:
  1. <?php
  2. $text = stripslashes(&_POST['text']);
  3. $text = preg_replace('/[.,?!`~;:_\"'()ab\t\nfre]/','',$text);
  4. $tablica = explode(' ', $text);
  5. $tablica = array_unique($tablica);
  6. $tablica = sort($tablica);
  7.  
  8. //to jest w pętli
  9. $tablica[$i] = mb_strtolower($tablica[$i], "UTF-8");
  10.  
  11. //Następnie każdy wiersz tablicy jest poddawany dodatkowej obróbce która wyciąga z
     niego pierwszą literę i zamienia na dużą.
  12. $litery = str_split($tablica[$i], 1);
  13. $pierwsza_litera = mb_strtoupper($litery[0], "UTF-8");
  14.  
  15. //TERAZ ZMIENNE $pierwsza_litera i $tablica[$i] są wysyłane kolejno do bazy danych
    .
  16. ?>


Która z tych funkcji coś zawala?? i na co wymienić zeby nie było krzaków w MySQL

2.
Drugi problem dotyczy tego że z do innego formularza jestem przekierowywany z jakiegoś tam linku. W linku tym jest zawarta zmienna (a więc tablica GET). Zmienna zawiera jedną literę alfabetu. Nie ma żadnego problemu jesli nie będzie to litera z ogonkiem. Jak zczytać z tej zmiennej GET tą litere żeby normalnie mi ją przekonwertowało do UTF-8 i nie powstały żadne krzaki??

Aktualnie używam funkcji html_entity_decode()" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
coder()
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 3.05.2007

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


Witam.
Odświerzam temat ponieważ zainstalowałem sobie na własnym komputerze Apache 2.2 + Mysql 5 + php5
Teraz mam wieksze pole do popisu przy ustawianiu kodowania.
i tak:
tworze prosty skrypt w PHP zawierający zapytanie do bazy danych które mi doda polskie znaki do jakiejś tam tabeli.
Oto ustawienia dla poszczególnych elementów:
Baza Danych: utf8_polish_ci
Tabela: utf8_polish_ci
Wiersz: utf8_polish_ci
System porównań dla połączenia MySQL: utf8_general_ci
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

I dla zmiennych:
  1. character_set_client utf8
  2. character_set_connection utf8
  3. character_set_database latin1
  4. character_set_filesystem BINARY
  5. character_set_results utf8
  6. character_set_server latin1
  7. character_set_system utf8
  8. character_sets_dir C:\WebServer\MySQL5\share\charsets\


W php i html mam ustawione również utf-8

Krzaki powstają mimo wszystko

Jak widać zmienne character_set_database oraz[/b] character_set_server [/b] mają kodowanie latin ale niestety mimo iż wykonuje zapytania
  1. SET ***="utf8";
i zapytanie wykona się poprawnie to i tak zmienne te nie zostają zmienione.
Czy to jest powodem powstawania krzaczków??
Dodam ze w phpmyadmin gdy dodaję rekordy ręcznie jest wszystko w porządku. Tylko w przypadku gdy wysyłam zapytanie z pliku php występuje ten problem.

Ten post edytował coder() 12.01.2008, 14:19:45
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 - 20:11