Author © Net_CZ
<?php
/**
*
* @author Net_CZ
* @date 15.12.2009
*
* Use this file freely, just keep my copy
*
*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="description" content="Database collator :)" />
<meta name="keywords" content="Collate or not to collate?" />
<meta name="author" content="Net_CZ" />
<title>Database collator</title>
<?php
/*
* Some settings
*/
$back_button_top = 10;
?>
<style type="text/css">
*
{
font-family: Verdana, Arial, Sans;
font-size: 14px;
}
body
{
background-color: white;
}
a#back
{
position: fixed;
_position: absolute; /* IE 6 hack */
right: 10px;
top: <?php echo $back_button_top; ?>px;
display: block;
text-decoration: none;
border: 2px outset black;
padding: 5px;
color: black;
font-weight: bold;
}
a#back:hover
{
background-color: gray;
color: white;
}
form
{
width: 358px;
margin: 0 auto;
}
form fieldset
{
border: 2px solid gray;
}
form td
{
width: 50%;
}
form td.centerer
{
text-align: center;
}
div
{
float: left;
font-size: 10px;
}
.success
{
color: green;
}
.fail
{
color: red;
}
</style>
<!-- if IE 6, use this script -->
<!--[if lt IE 7.]>
<script type="text/javascript">
/* <![CDATA[ */
window.onload = function()
{
var timer = setInterval("reposition()", 20);
};
function reposition()
{
var viewportwidth;
var viewportheight;
// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
if (typeof window.innerWidth != 'undefined')
{
viewportwidth = window.innerWidth;
viewportheight = window.innerHeight;
}
//IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
else if (typeof document.documentElement != 'undefined'
&& typeof document.documentElement.clientWidth !=
'undefined' && document.documentElement.clientWidth != 0)
{
viewportwidth = document.documentElement.clientWidth;
viewportheight = document.documentElement.clientHeight;
}
var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
var dsoctop=document.all? iebody.scrollTop : pageYOffset;
var back = document.getElementById("back");
back.style.top = (dsoctop + <?php echo $back_button_top; ?>) + "px";
}
/* ]]> */
</script>
<![endif]-->
</head>
<body>
<?php
if(empty($_POST) || empty($_POST["collate_server"]) ||
empty($_POST["collate_user"]) || empty($_POST["collate_password"]) ||
empty($_POST["collate_database"]) || empty($_POST["collate_encoding"]))
{
?>
<div>
Database collator:<br />
============<br />
by Net_CZ<br />
Copyright © 2oo9<br /><br />
How to use:<br />
========<br />
- set your database auth information<br />
- select which database to collate<br />
- select encoding<br />
- click Collate button<br />
</div>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<fieldset>
<legend>Settings</legend>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Server</td>
<td><input type="text" name="collate_server" value="localhost" /></td>
</tr>
<tr>
<td>User</td>
<td><input type="text" name="collate_user" value="root" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="collate_password" value="password" /></td>
</tr>
<tr>
<td>Database</td>
<td><input type="text" name="collate_database" value="database" /></td>
</tr>
<tr>
<td>Encoding</td>
<td>
<select name="collate_encoding">
<optgroup title="ARMSCII-8 Armenian" label="armscii8">
<option title="Arménština, Binární " value="armscii8_bin">armscii8_bin</option>
<option title="Arménština, nerozlišovat velká a malá písmena" value="armscii8_general_ci">armscii8_general_ci</option>
</optgroup>
<optgroup title="US ASCII" label="ascii">
<option title="Západní Evropa (mnohojazyčný), Binární " value="ascii_bin">ascii_bin</option>
<option title="Západní Evropa (mnohojazyčný), nerozlišovat velká a malá písmena" value="ascii_general_ci">ascii_general_ci</option>
</optgroup>
<optgroup title="Big5 Traditional Chinese" label="big5">
<option title="Tradiční čínština, Binární " value="big5_bin">big5_bin</option>
<option title="Tradiční čínština, nerozlišovat velká a malá písmena" value="big5_chinese_ci">big5_chinese_ci</option>
</optgroup>
<optgroup title="Binary pseudo charset" label="binary">
<option title=" Binární " value="binary">binary</option>
</optgroup>
<optgroup title="Windows Central European" label="cp1250">
<option title="Střední Evropa (mnohojazyčný), Binární " value="cp1250_bin">cp1250_bin</option>
<option title="Chorvatština, nerozlišovat velká a malá písmena" value="cp1250_croatian_ci">cp1250_croatian_ci</option>
<option title="Čeština, rozlišovat velká a malá písmena" value="cp1250_czech_cs">cp1250_czech_cs</option>
<option title="Střední Evropa (mnohojazyčný), nerozlišovat velká a malá písmena" value="cp1250_general_ci">cp1250_general_ci</option>
</optgroup>
<optgroup title="Windows Cyrillic" label="cp1251">
<option title="Cyrilika (mnohojazyčný), Binární " value="cp1251_bin">cp1251_bin</option>
<option title="Bulharština, nerozlišovat velká a malá písmena" value="cp1251_bulgarian_ci">cp1251_bulgarian_ci</option>
<option title="Cyrilika (mnohojazyčný), nerozlišovat velká a malá písmena" value="cp1251_general_ci">cp1251_general_ci</option>
<option title="Cyrilika (mnohojazyčný), rozlišovat velká a malá písmena" value="cp1251_general_cs">cp1251_general_cs</option>
<option title="Ukrajinština, nerozlišovat velká a malá písmena" value="cp1251_ukrainian_ci">cp1251_ukrainian_ci</option>
</optgroup>
<optgroup title="Windows Arabic" label="cp1256">
<option title="Arabština, Binární " value="cp1256_bin">cp1256_bin</option>
<option title="Arabština, nerozlišovat velká a malá písmena" value="cp1256_general_ci">cp1256_general_ci</option>
</optgroup>
<optgroup title="Windows Baltic" label="cp1257">
<option title="Baltické (mnohojazyčný), Binární " value="cp1257_bin">cp1257_bin</option>
<option title="Baltické (mnohojazyčný), nerozlišovat velká a malá písmena" value="cp1257_general_ci">cp1257_general_ci</option>
<option title="Litevština, nerozlišovat velká a malá písmena" value="cp1257_lithuanian_ci">cp1257_lithuanian_ci</option>
</optgroup>
<optgroup title="DOS West European" label="cp850">
<option title="Západní Evropa (mnohojazyčný), Binární " value="cp850_bin">cp850_bin</option>
<option title="Západní Evropa (mnohojazyčný), nerozlišovat velká a malá písmena" value="cp850_general_ci">cp850_general_ci</option>
</optgroup>
<optgroup title="DOS Central European" label="cp852">
<option title="Střední Evropa (mnohojazyčný), Binární " value="cp852_bin">cp852_bin</option>
<option title="Střední Evropa (mnohojazyčný), nerozlišovat velká a malá písmena" value="cp852_general_ci">cp852_general_ci</option>
</optgroup>
<optgroup title="DOS Russian" label="cp866">
<option title="Ruština, Binární " value="cp866_bin">cp866_bin</option>
<option title="Ruština, nerozlišovat velká a malá písmena" value="cp866_general_ci">cp866_general_ci</option>
</optgroup>
<optgroup title="SJIS for Windows Japanese" label="cp932">
<option title="Japonština, Binární " value="cp932_bin">cp932_bin</option>
<option title="Japonština, nerozlišovat velká a malá písmena" value="cp932_japanese_ci">cp932_japanese_ci</option>
</optgroup>
<optgroup title="DEC West European" label="dec8">
<option title="Západní Evropa (mnohojazyčný), Binární " value="dec8_bin">dec8_bin</option>
<option title="Švédština, nerozlišovat velká a malá písmena" value="dec8_swedish_ci">dec8_swedish_ci</option>
</optgroup>
<optgroup title="UJIS for Windows Japanese" label="eucjpms">
<option title="Japonština, Binární " value="eucjpms_bin">eucjpms_bin</option>
<option title="Japonština, nerozlišovat velká a malá písmena" value="eucjpms_japanese_ci">eucjpms_japanese_ci</option>
</optgroup>
<optgroup title="EUC-KR Korean" label="euckr">
<option title="Korejština, Binární " value="euckr_bin">euckr_bin</option>
<option title="Korejština, nerozlišovat velká a malá písmena" value="euckr_korean_ci">euckr_korean_ci</option>
</optgroup>
<optgroup title="GB2312 Simplified Chinese" label="gb2312">
<option title="Zjednodušená čínština, Binární " value="gb2312_bin">gb2312_bin</option>
<option title="Zjednodušená čínština, nerozlišovat velká a malá písmena" value="gb2312_chinese_ci">gb2312_chinese_ci</option>
</optgroup>
<optgroup title="GBK Simplified Chinese" label="gbk">
<option title="Zjednodušená čínština, Binární " value="gbk_bin">gbk_bin</option>
<option title="Zjednodušená čínština, nerozlišovat velká a malá písmena" value="gbk_chinese_ci">gbk_chinese_ci</option>
</optgroup>
<optgroup title="GEOSTD8 Georgian" label="geostd8">
<option title="Gruzínština, Binární " value="geostd8_bin">geostd8_bin</option>
<option title="Gruzínština, nerozlišovat velká a malá písmena" value="geostd8_general_ci">geostd8_general_ci</option>
</optgroup>
<optgroup title="ISO 8859-7 Greek" label="greek">
<option title="Řečtina, Binární " value="greek_bin">greek_bin</option>
<option title="Řečtina, nerozlišovat velká a malá písmena" value="greek_general_ci">greek_general_ci</option>
</optgroup>
<optgroup title="ISO 8859-8 Hebrew" label="hebrew">
<option title="Hebrejština, Binární " value="hebrew_bin">hebrew_bin</option>
<option title="Hebrejština, nerozlišovat velká a malá písmena" value="hebrew_general_ci">hebrew_general_ci</option>
</optgroup>
<optgroup title="HP West European" label="hp8">
<option title="Západní Evropa (mnohojazyčný), Binární " value="hp8_bin">hp8_bin</option>
<option title="Anglicky, nerozlišovat velká a malá písmena" value="hp8_english_ci">hp8_english_ci</option>
</optgroup>
<optgroup title="DOS Kamenicky Czech-Slovak" label="keybcs2">
<option title="Čeština/Slovenština, Binární " value="keybcs2_bin">keybcs2_bin</option>
<option title="Čeština/Slovenština, nerozlišovat velká a malá písmena" value="keybcs2_general_ci">keybcs2_general_ci</option>
</optgroup>
<optgroup title="KOI8-R Relcom Russian" label="koi8r">
<option title="Ruština, Binární " value="koi8r_bin">koi8r_bin</option>
<option title="Ruština, nerozlišovat velká a malá písmena" value="koi8r_general_ci">koi8r_general_ci</option>
</optgroup>
<optgroup title="KOI8-U Ukrainian" label="koi8u">
<option title="Ukrajinština, Binární " value="koi8u_bin">koi8u_bin</option>
<option title="Ukrajinština, nerozlišovat velká a malá písmena" value="koi8u_general_ci">koi8u_general_ci</option>
</optgroup>
<optgroup title="cp1252 West European" label="latin1">
<option title="Západní Evropa (mnohojazyčný), Binární " value="latin1_bin">latin1_bin</option>
<option title="Dánština, nerozlišovat velká a malá písmena" value="latin1_danish_ci">latin1_danish_ci</option>
<option title="Západní Evropa (mnohojazyčný), nerozlišovat velká a malá písmena" value="latin1_general_ci">latin1_general_ci</option>
<option title="Západní Evropa (mnohojazyčný), rozlišovat velká a malá písmena" value="latin1_general_cs">latin1_general_cs</option>
<option title="Německy (slovník), nerozlišovat velká a malá písmena" value="latin1_german1_ci">latin1_german1_ci</option>
<option title="Německy (adresář), nerozlišovat velká a malá písmena" value="latin1_german2_ci">latin1_german2_ci</option>
<option title="Španělština, nerozlišovat velká a malá písmena" value="latin1_spanish_ci">latin1_spanish_ci</option>
<option title="Švédština, nerozlišovat velká a malá písmena" value="latin1_swedish_ci">latin1_swedish_ci</option>
</optgroup>
<optgroup title="ISO 8859-2 Central European" label="latin2">
<option title="Střední Evropa (mnohojazyčný), Binární " value="latin2_bin">latin2_bin</option>
<option title="Chorvatština, nerozlišovat velká a malá písmena" value="latin2_croatian_ci">latin2_croatian_ci</option>
<option title="Čeština, rozlišovat velká a malá písmena" value="latin2_czech_cs">latin2_czech_cs</option>
<option title="Střední Evropa (mnohojazyčný), nerozlišovat velká a malá písmena" value="latin2_general_ci">latin2_general_ci</option>
<option title="Maďarština, nerozlišovat velká a malá písmena" value="latin2_hungarian_ci">latin2_hungarian_ci</option>
</optgroup>
<optgroup title="ISO 8859-9 Turkish" label="latin5">
<option title="Turecky, Binární " value="latin5_bin">latin5_bin</option>
<option title="Turecky, nerozlišovat velká a malá písmena" value="latin5_turkish_ci">latin5_turkish_ci</option>
</optgroup>
<optgroup title="ISO 8859-13 Baltic" label="latin7">
<option title="Baltické (mnohojazyčný), Binární " value="latin7_bin">latin7_bin</option>
<option title="Estonština, rozlišovat velká a malá písmena" value="latin7_estonian_cs">latin7_estonian_cs</option>
<option title="Baltické (mnohojazyčný), nerozlišovat velká a malá písmena" value="latin7_general_ci">latin7_general_ci</option>
<option title="Baltické (mnohojazyčný), rozlišovat velká a malá písmena" value="latin7_general_cs">latin7_general_cs</option>
</optgroup>
<optgroup title="Mac Central European" label="macce">
<option title="Střední Evropa (mnohojazyčný), Binární " value="macce_bin">macce_bin</option>
<option title="Střední Evropa (mnohojazyčný), nerozlišovat velká a malá písmena" value="macce_general_ci">macce_general_ci</option>
</optgroup>
<optgroup title="Mac West European" label="macroman">
<option title="Západní Evropa (mnohojazyčný), Binární " value="macroman_bin">macroman_bin</option>
<option title="Západní Evropa (mnohojazyčný), nerozlišovat velká a malá písmena" value="macroman_general_ci">macroman_general_ci</option>
</optgroup>
<optgroup title="Shift-JIS Japanese" label="sjis">
<option title="Japonština, Binární " value="sjis_bin">sjis_bin</option>
<option title="Japonština, nerozlišovat velká a malá písmena" value="sjis_japanese_ci">sjis_japanese_ci</option>
</optgroup>
<optgroup title="7bit Swedish" label="swe7">
<option title="Švédština, Binární " value="swe7_bin">swe7_bin</option>
<option title="Švédština, nerozlišovat velká a malá písmena" value="swe7_swedish_ci">swe7_swedish_ci</option>
</optgroup>
<optgroup title="TIS620 Thai" label="tis620">
<option title="Thajština, Binární " value="tis620_bin">tis620_bin</option>
<option title="Thajština, nerozlišovat velká a malá písmena" value="tis620_thai_ci">tis620_thai_ci</option>
</optgroup>
<optgroup title="UCS-2 Unicode" label="ucs2">
<option title="Unicode (mnohojazyčný), Binární " value="ucs2_bin">ucs2_bin</option>
<option title="Čeština, nerozlišovat velká a malá písmena" value="ucs2_czech_ci">ucs2_czech_ci</option>
<option title="Dánština, nerozlišovat velká a malá písmena" value="ucs2_danish_ci">ucs2_danish_ci</option>
<option title="Esperanto, nerozlišovat velká a malá písmena" value="ucs2_esperanto_ci">ucs2_esperanto_ci</option>
<option title="Estonština, nerozlišovat velká a malá písmena" value="ucs2_estonian_ci">ucs2_estonian_ci</option>
<option title="Unicode (mnohojazyčný), nerozlišovat velká a malá písmena" value="ucs2_general_ci">ucs2_general_ci</option>
<option title="Maďarština, nerozlišovat velká a malá písmena" value="ucs2_hungarian_ci">ucs2_hungarian_ci</option>
<option title="Islandština, nerozlišovat velká a malá písmena" value="ucs2_icelandic_ci">ucs2_icelandic_ci</option>
<option title="Lotyština, nerozlišovat velká a malá písmena" value="ucs2_latvian_ci">ucs2_latvian_ci</option>
<option title="Litevština, nerozlišovat velká a malá písmena" value="ucs2_lithuanian_ci">ucs2_lithuanian_ci</option>
<option title="Perština, nerozlišovat velká a malá písmena" value="ucs2_persian_ci">ucs2_persian_ci</option>
<option title="Polština, nerozlišovat velká a malá písmena" value="ucs2_polish_ci">ucs2_polish_ci</option>
<option title="Západní Evropa, nerozlišovat velká a malá písmena" value="ucs2_roman_ci">ucs2_roman_ci</option>
<option title="Rumunština, nerozlišovat velká a malá písmena" value="ucs2_romanian_ci">ucs2_romanian_ci</option>
<option title="Slovenština, nerozlišovat velká a malá písmena" value="ucs2_slovak_ci">ucs2_slovak_ci</option>
<option title="Slovinština, nerozlišovat velká a malá písmena" value="ucs2_slovenian_ci">ucs2_slovenian_ci</option>
<option title="Tradiční španělština, nerozlišovat velká a malá písmena" value="ucs2_spanish2_ci">ucs2_spanish2_ci</option>
<option title="Španělština, nerozlišovat velká a malá písmena" value="ucs2_spanish_ci">ucs2_spanish_ci</option>
<option title="Švédština, nerozlišovat velká a malá písmena" value="ucs2_swedish_ci">ucs2_swedish_ci</option>
<option title="Turecky, nerozlišovat velká a malá písmena" value="ucs2_turkish_ci">ucs2_turkish_ci</option>
<option title="Unicode (mnohojazyčný), nerozlišovat velká a malá písmena" value="ucs2_unicode_ci">ucs2_unicode_ci</option>
</optgroup>
<optgroup title="EUC-JP Japanese" label="ujis">
<option title="Japonština, Binární " value="ujis_bin">ujis_bin</option>
<option title="Japonština, nerozlišovat velká a malá písmena" value="ujis_japanese_ci">ujis_japanese_ci</option>
</optgroup>
<optgroup title="UTF-8 Unicode" label="utf8">
<option title="Unicode (mnohojazyčný), Binární " value="utf8_bin">utf8_bin</option>
<option title="Čeština, nerozlišovat velká a malá písmena" value="utf8_czech_ci">utf8_czech_ci</option>
<option title="Dánština, nerozlišovat velká a malá písmena" value="utf8_danish_ci">utf8_danish_ci</option>
<option title="Esperanto, nerozlišovat velká a malá písmena" value="utf8_esperanto_ci">utf8_esperanto_ci</option>
<option title="Estonština, nerozlišovat velká a malá písmena" value="utf8_estonian_ci">utf8_estonian_ci</option>
<option title="Unicode (mnohojazyčný), nerozlišovat velká a malá písmena" value="utf8_general_ci" selected="selected">utf8_general_ci</option>
<option title="Maďarština, nerozlišovat velká a malá písmena" value="utf8_hungarian_ci">utf8_hungarian_ci</option>
<option title="Islandština, nerozlišovat velká a malá písmena" value="utf8_icelandic_ci">utf8_icelandic_ci</option>
<option title="Lotyština, nerozlišovat velká a malá písmena" value="utf8_latvian_ci">utf8_latvian_ci</option>
<option title="Litevština, nerozlišovat velká a malá písmena" value="utf8_lithuanian_ci">utf8_lithuanian_ci</option>
<option title="Perština, nerozlišovat velká a malá písmena" value="utf8_persian_ci">utf8_persian_ci</option>
<option title="Polština, nerozlišovat velká a malá písmena" value="utf8_polish_ci">utf8_polish_ci</option>
<option title="Západní Evropa, nerozlišovat velká a malá písmena" value="utf8_roman_ci">utf8_roman_ci</option>
<option title="Rumunština, nerozlišovat velká a malá písmena" value="utf8_romanian_ci">utf8_romanian_ci</option>
<option title="Slovenština, nerozlišovat velká a malá písmena" value="utf8_slovak_ci">utf8_slovak_ci</option>
<option title="Slovinština, nerozlišovat velká a malá písmena" value="utf8_slovenian_ci">utf8_slovenian_ci</option>
<option title="Tradiční španělština, nerozlišovat velká a malá písmena" value="utf8_spanish2_ci">utf8_spanish2_ci</option>
<option title="Španělština, nerozlišovat velká a malá písmena" value="utf8_spanish_ci">utf8_spanish_ci</option>
<option title="Švédština, nerozlišovat velká a malá písmena" value="utf8_swedish_ci">utf8_swedish_ci</option>
<option title="Turecky, nerozlišovat velká a malá písmena" value="utf8_turkish_ci">utf8_turkish_ci</option>
<option title="Unicode (mnohojazyčný), nerozlišovat velká a malá písmena" value="utf8_unicode_ci">utf8_unicode_ci</option>
</optgroup>
</select>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td colspan="2" class="centerer"><input type="submit" value="Collate" /></td>
</tr>
</table>
</fieldset>
</form>
<?php
}
else
{
/*
* Server connection
*/
$link = mysql_connect($_POST["collate_server"], $_POST["collate_user"], $_POST["collate_password"]) or die("Can't connect to database");
/*
* DB selection
*/
$db = $_POST["collate_database"];
mysql_select_db($db) or die("Can't select database");
/*
* Encoding parse
*/
$enc = explode("_", $_POST["collate_encoding"]);
$enc = $enc[0];
/*
* Changing DB encoding
*/
$DB_ENC = @mysql_query("ALTER DATABASE $db CHARACTER SET utf8 COLLATE utf8_general_ci");
/*
* Changing tables encoding
*/
$query = mysql_query("SHOW TABLES") or die("Can't list database tables");
while($o = mysql_fetch_array($query))
{
$table = $o[0];
$TABLE_ENC[$table] = @mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET $enc COLLATE " . $_POST['collate_encoding']);
}
/*
* Disconnect from server
*/
mysql_close($link);
/*
* Showing result
*/
echo '<a id="back" href="' . basename(__FILE__) . '" title="Back to form">Back to form</a>';
if($DB_ENC) echo 'Changing encoding of database <em><strong>' . $db . '</strong></em> was <span class="success">successfull</span>.';
else echo 'Changing encoding of database <em><strong>' . $db . '</strong></em> <span class="fail">failed</span>.';
echo "<br />";
foreach($TABLE_ENC as $table => $result)
{
if($result) echo 'Changing encoding of table <em><strong>' . $table . '</strong></em> was <span class="success">successfull</span>.';
else echo 'Changing encoding of tabe <em><strong>' . $table . '</strong></em> <span class="fail">failed</span>.';
echo "<br />";
}
}
?>
</body>
</html>