Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 22.01.2008 Skąd: Tarnobrzeg Ostrzeżenie: (0%)
|
Sprawa jest taka że.
CMS MemHT Portal oraz MemHT PolishPack 1 mają kodowanie znaków ustawione na ISO natomiast wersja MemHT PolishPack 2 na utf i tu powstaje problem. Przy czystej instalacji pp2 niema problemów z kodowaniem natomiast gdy ktoś zaaktualizuje z innej wersji do PolishPack 2 pojawiają się krzaczki. Ja widzę tutaj 2 rozwiązania lecz niemam na nie już pomysłu. 1. Zrobić skrypt do konwersji bazy który będzie się uruchamiał podczas aktualizacji. 2. Zrobić skrypt który będzie podczepiony do metody query w klasie database. Co do 1 niemam pomysłu całkowicie jak zrobić skrypt aby nie wykraczył się z większą bazą. Co do 2 to: Zrobiłem funkcję do konwersji znaków i nic pokazywało komunikat o tym że nie może znaleść tabeli w bazie... Użyłęm funkcji iconv() => Kod <b>Warning</b>: iconv() expects parameter 3 to be string, resource given in <b>...</b> Używałem także unicode_decode() oraz utf8_encode() i wszystko na co napotkałem się w manualu ale z tym naprawdę niemogę sobie poradzić. Nie oczekuje gotowego skryptu oczekuje natomiast pewnych wskazówek które pomogły by mi w rozwiązaniu problemu. Wstyd mi pisać bo jeśli zajmuje się stroną kodową MemHT PolishPack powiniennem sobie z tym bez problemu poradzić a jednak nigdy nie spodkałem się z tym problemem i stoję w miejscu... |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 22.01.2008 Skąd: Tarnobrzeg Ostrzeżenie: (0%)
|
A no tak. Jednak przydało by się jeszcze użyć funkcji serialize" title="Zobacz w manualu PHP" target="_manual i unserialize" title="Zobacz w manualu PHP" target="_manual
Aby przekonwerterować array na sting i potem string na array. Przy takim użyciu jak napisałeś też pokazuje błąd związany z tym ze do funkcji iconv przekazywana jest tablica a nie ciąg. Nawet przy użyciu serialize" title="Zobacz w manualu PHP" target="_manual nie osiągam odpowiedniego rezultatu. Będę musiał pisać funkcję konwersji znaków ręcznie z tego co widzę. Kod class database { var $dblink; var $host = "localhost"; var $user = "root"; var $pass; var $name; //PHP5 Constructor function __construct() { global $db_host,$db_user,$db_pass,$db_name; $this->host = $db_host; $this->user = $db_user; $this->pass = $db_pass; $this->name = $db_name; } //PHP4 Constructor function database() { global $db_host,$db_user,$db_pass,$db_name; $this->host = $db_host; $this->user = $db_user; $this->pass = $db_pass; $this->name = $db_name; } function iso2utf ( $array ) { $string = serialize ( $array ); $result_string = iconv ( "ISO-8859-2" , "UTF-8" , $string ); $array = unserialize ( $result_string ); return $array; } function connect() { $this->dblink = @mysql_connect($this->host,$this->user,$this->pass) or die("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"pl\" lang=\"pl\"> <head><meta http-equiv=\"Content-type\" content=\"text/html; charset=UTF-8\" /> <title>Komunikat</title></head> <body><div style=\" padding: 2px; border: 1px solid #999; background-color: #EEE; font-family: Verdana; font-size: 10px; margin:0 auto;\"> <b>Błą</b> Nie można połaczyć się z serwerem MySQL ! </div></body></html>"); @mysql_select_db($this->name,$this->dblink) or die("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"pl\" lang=\"pl\"> <head><meta http-equiv=\"Content-type\" content=\"text/html; charset=UTF-8\" /> <title>Komunikat</title></head> <body><div style=\" padding: 2px; border: 1px solid #999; background-color: #EEE; font-family: Verdana; font-size: 10px; margin:0 auto;\"> <b>Błąd:</b> Nie można wybrać bazy ! </div></body></html>"); } function disconnect() { @mysql_close($this->dblink); } function ping() { if (!mysql_ping($this->dblink)) { $this->disconnect(); $this->connect(); } } function query($query) { $result = mysql_query($query,$this->dblink); return $result; } function get_row($query) { $result = $this->query($query); $returned = @mysql_fetch_assoc($result); //$returned = $this->iso2utf($returned); @mysql_free_result($result); return $returned; } function get_list($query) { $returned = array(); $result = $this->query($query); while ($row = mysql_fetch_assoc($result)) { //$row = $this->iso2utf($row); $returned[] = $row; } @mysql_free_result($result); return $returned; } function get_num($query) { $result = $this->query($query); $num = mysql_num_rows($result); @mysql_free_result($result); return $num; } //Do not print errors function get_num_noerr($query) { $result = @$this->query($query); $num = @mysql_num_rows($result); @mysql_free_result($result); return $num; } function optimize($gfx=false) { global $db_name; if ($gfx) { echo "<b>"._OPTIMIZINGDATABASE_."</b><br /><br />"; } $result = mysql_list_tables($db_name); $i = 0; $toopt = array(); while ($i < mysql_num_rows($result)) { $name_table = mysql_table_name($result, $i); if ($gfx) { echo "<img src='images/check-green.gif' title='"._TABLE_." $name_table "._OPTIMIZED_."' border='0' alt='Ok' /> $name_table<br />"; } $toopt[] = $name_table; $i++; } $sql = "OPTIMIZE TABLE ".implode(",",$toopt); if ($result_set = @mysql_query($sql)) { if ($gfx) { echo "<br /><b>"._OPTIMIZINGDATABASEFINISHED_."</b>"; } return true; } else { return false; } mysql_free_result($result_set); } function affected_rows(){ return mysql_affected_rows(); } } Nic pomyślę może sobie poradzę... muszę sobie poradzić ;p |
|
|
|
adminik Kodowanie znaków 9.07.2008, 22:32:55
scanner Ja bym zrobił dump bazy na dysk, skonwertował go n... 9.07.2008, 23:42:24
adminik Tak ale jak pisałem już wyżej musi być to automaty... 9.07.2008, 23:47:51
scanner No tak, nie doczytałem, sorki.
Zainteresował mnie... 9.07.2008, 23:50:15
adminik Nie używałem nigdy tego typu funkcji lec... 10.07.2008, 12:05:57
scanner Pierwsze primo - mysql_query" title="Zobacz w manu... 10.07.2008, 23:47:56
scanner Chłopie, jaka serializacja? Co ty za herezje ... 11.07.2008, 17:45:20
adminik Ups. prawie dzięki wielkie nie spotkałem się z tą ... 12.07.2008, 13:07:42 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 08:19 |