1

Téma: Přechod na PunBB 1.3 z nižších verzí - chybné zobrazení znaků v MySQL

Pokud máte standardně nastavenou databázi MySQL na porovnání latin1_swedish_ci je dosti pravděpodobné, že bude s přechodem na verzi 1.3 problém.

Nyní jak postupovat:

  • Proveďte aktualizaci PunBB (Windows 1250) obdobně jak je uvedeno zde až do bodu číslo 5.

  • Nyní zadejte do Enable conversion "cp1252"

  • Proveďte upgrade databáze MySQL

  • Prostřednictvím phpMyAdmina se přihlaste (se znakovou sadou UTF-8) a zkontrolujte, zda je všude (tabulky i sloupce) nastaveno porovnání utf8_general_ci (případně utf8_czech_ci pokud chcete české řazení znaků). Pokun není, nastavte.

  • Stáhněte si náš soubor cp1252toutf8.php a nahrajte ho do kořenového adresáře.

  • Spusťte tento soubor prostřednictvím prohlížeče (HTTP protokolu) a vyčkejte na úpravy, které provede

  • Nyní by měla být vše kromě základního nastavení fóra převedeno do češtiny. Soubor cp1252toutf8.php smažte.

Kód souboru cp1252toutf8.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Převod znaků v PunBB</title>
</head>
<body>
<?php
include ("config.php");
function trans($s)
{
    static $tbl = array("ø"=>"ř","Ø"=>"Ř","ù"=>"ů","è"=>"č","È"=>"Č","ì"=>"ě","ò"=>"ň",""=>"ť","ï"=>"ď","¾"=>"ľ","Ï"=>"Ď");
    return strtr($s, $tbl);
}

$db = mysql_connect("$db_host","$db_username","$db_password") or die ("Nemohu otevřít databázi.");
mysql_query("SET NAMES 'utf8';");
mysql_select_db ("$db_name") or die (mysql_error());

echo "Převod znaků zahájen...<br>";
echo "Tato operace může trvat i několik minut - záleží na velisti databáze.<br><br>";

$result = mysql_query ("SELECT id,message FROM ".$db_prefix."posts");
while ($data = mysql_fetch_array ($result))
{
    $postid = $data['id'];
    $post = $data['message'];
    $post = trans($post);
    mysql_query ("UPDATE ".$db_prefix."posts SET message='$post' WHERE id='$postid'");
}

echo "Úprava příspěvků provedena...<br>";

$result2 = mysql_query ("SELECT id,subject FROM ".$db_prefix."topics");
while ($data2 = mysql_fetch_array ($result2))
{
    $topid = $data2['id'];
    $sub = $data2['subject'];
    $sub = trans($sub);
    mysql_query ("UPDATE ".$db_prefix."topics SET subject='$sub' WHERE id='$topid'");
}

echo "Úprava témat provedena...<br>";

$result3 = mysql_query ("SELECT id,signature FROM ".$db_prefix."users");
while ($data3 = mysql_fetch_array ($result3))
{
    $uid = $data3['id'];
    $sig = $data3['signature'];
    $sig = trans($sig);
    mysql_query ("UPDATE ".$db_prefix."users SET signature='$sig' WHERE id='$uid'");
}

echo "Úprava podpisů provedena...<br>";

$result4 = mysql_query ("SELECT id,word FROM ".$db_prefix."search_words");
while ($data4 = mysql_fetch_array ($result4))
{
    $swid = $data4['id'];
    $sword = $data4['word'];
    $sword = trans($sword);
    mysql_query ("UPDATE ".$db_prefix."search_words SET word='$sword' WHERE id='$swid'");
}

echo "Úprava hledaných slov provedena...<br>";

$result4 = mysql_query ("SELECT id,cat_name FROM ".$db_prefix."categories");
while ($data4 = mysql_fetch_array ($result4))
{
    $cid = $data4['id'];
    $cn = $data4['cat_name'];
    $cn = trans($cn);
    mysql_query ("UPDATE ".$db_prefix."categories SET cat_name='$cn' WHERE id='$cid'");
}

echo "Úprava kategorií provedena...<br>";

$result5 = mysql_query ("SELECT id,forum_name,forum_desc FROM ".$db_prefix."forums");
while ($data5 = mysql_fetch_array ($result5))
{
    $fid = $data5['id'];
    $fname = $data5['forum_name'];
    $fname = trans($fname);
    $fdesc = $data5['forum_desc'];
    $fdesc = trans($fdesc);
    mysql_query ("UPDATE ".$db_prefix."forums SET forum_name='$fname',forum_desc='$fdesc' WHERE id='$fid'");
}

echo "Úprava fór provedena...<br>";

echo "<strong>Hotovo</strong>";
?>
<p><a href="http://punbb.er.cz/">Více informací lze nalézt na stránkách české podpory PunBB (punbb.er.cz)</a></p>
</body>
</html>

Funkci trans lze upravit dle znaků, které jsou zobrazeny po updatu ve Vaší databázi.

Oficiální zástupce české a slovenské podpory PunBB, aneb jsme tu pro Vás...