Obrázek   
Přihlášení
Uživatelské jméno:

Heslo:

Pamatovat si mne



Zapomenuté heslo

Nová registrace
Kam dále?
Hledání
Vzhled

(3 vzhledů)
Kdo je Online
29 uživatel(ů) je online (10 uživatel(ů) si prohlíží Články a povídání)

Uživatelé: 0
Hosté: 29

více...
Noví uživatelé
POKEC
POKEC
21.03.2024
Luigi
Luigi
14.03.2024
zirafak
zirafak
26.02.2024
rorejs
rorejs
27.12.2023
maroš
maroš
07.11.2023
vlada
vlada
17.09.2023
VIKIRYCH
VIKIRYCH
28.12.2022
jiang
jiang
13.12.2022
panezi
panezi
08.09.2022
BigLadin
BigLadin
25.07.2022
Kdo za co může
Administrátorka
Žirafka
Žirafka
Žirafička
Žirafička
Redaktoři
bernard
bernard
IvanH
IvanH
 
Emeritní
KatyH
KatyH

Zápisník pojídačky koláčů pro Xoops - Řešení problémů s kódováním databáze v systému XOOPS

snad definitivní řešení
Napsal/a Žirafka v 14. 05. 2008 v 16:30 (přečtení 3936×) Další články tohoto autora
Zápisník pojídačky koláčů pro Xoops
     Jestli něco opravdu z duše nemám ráda, jsou to různá kódování. Chápu, že v dobách dávno minulých bylo potřeba nějak znaky kódovat. Paměti bylo málo a byla drahá. Proto se šetřilo, jak to jen šlo. Ale v dnešní době mi to připadá poněkud překonané.

     Jenže různá kódování tu jsou, a ještě nějakou dobu určitě budou. Takže je nutné s nimi žíti. Xoops komunikuje s databází. V drtivé většině případů je to MySQL. Do relativně nedávné doby nebylo nic složitého zálohovat a přenášet tabulky. Jenže poslední dobou to problém je. Tedy pokud se neupraví, "nehackne", část systému.

     Takže pokud máte odvahu, můžeme se ponořit do hlubin Xoopsu a něco s těmi kódováními udělat. Vzhůru dolů

     Nejprve je potřeba najít soubor mysqldatabase.php. Ten se nachází v adresáři CLASS / DATABASE. Ze všeho nejprve je potřeba udělat jeho zálohu. Ono je to vždy lepší. Soubor pak otevřeme v libovolném textovém editoru, který neukládá formátování. Ideální je Poznámkový blok z Windows, nebo ConTEXT či PsPad.

     Když je soubor otevřený, je třeba najít tuto část:

function connect($selectdb = true)
{
if ( !extension_loaded( 'mysql' ) ) {
trigger_error( 'notrace:mysql extension not loaded', E_USER_ERROR );
return false;
}
if (XOOPS_DB_PCONNECT == 1) {
$this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
} else {
$this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
}

if (!$this->conn) {
$this->logger->addQuery('', $this->error(), $this->errno());
return false;
}
if($selectdb != false){
if (!mysql_select_db(XOOPS_DB_NAME)) {
$this->logger->addQuery('', $this->error(), $this->errno());
return false;
}
}
return true;
}

a před poslední return true vložit tyto řádky

mysql_query('SET character_set_results="WINDOWS-1250"');
mysql_query("SET CHARACTER SET WINDOWS-1250");
mysql_query("SET NAMES 'WINDOWS-1250'");

nebo použít Xoopsí způsob přístupu k databázi:

$set = @mysql_query("SET character_set_results='WINDOWS-1250'", $this->conn);
$set = @mysql_query("SET CHARACTER SET WINDOWS-1250", $this->conn);
$set = @mysql_query("SET NAMES 'WINDOWS-1250'", $this->conn);

     První způsob je funkční a bez potíží. Ten druhý používá přímo prostředků Xoopsu k přístupu k databázi. Takže je vlastně správnější. Rozhodnutí o tom nebo onom způsobu je na každém správci. Oba fungují dobře.

Místo kódování WINDOWS-1250 lze pochopitelně vložit téměř cokoli. Jen je potřeba mít všude stejnou hodnotu a také toto kódování pak používat. Žirafoviny používají právě kódování Windows 1250. Proto je i v tomto příkladě.

     Tímto jednoduchým trikem se databázi řekne, jaké kódování mají data v ní uložená a všechno bude dobře fungovat. Pokud se tyto řádky nevloží, bude všechno fungovat také. Ale jen do okamžiku obnovení databáze z nějaké zálohy.

     Nebo do pokusu překopírovat databázi na jiný server za účelem pokusů. Takto to mám například já doma. Na počítači běží Apache + PHP + MySQL a dělám si s Xoopsem pokusy. Když je všechno v pořádku, udělám totéž i zde. Jenže občas po pokusech je databáze nepoužitelná a proto je nutné ji obnovit.

      A také chci mít oba servery stejné, pokud možno, takže z tohoto serveru udělám zálohu a vložím ji do mé databáze doma. Bez popsané úpravy je to zlá můra a skoro to není možné udělat. S touto úpravou to jde snadno  (někdy...)

Hodnocení: 0,00 (0 hlasů) - Ohodnotit -
Formátovat pro tisk Poslat známému Vytvořit z článku PDF
Komentář je vlastnictvím svého autora. Vyjadřuje jeho názory, ne názory redakce nebo provozovatele webu či serveru.
Napsal/a Vlákno
Obrázek Obrázek
ObrázekObrázekObrázekObrázekObrázek
Obrázek
Redakční systém XOOPS 2.5.10
Obsah © 2008-2020 Žirafoviny