Помогите с транслитерацией

G
На сайте с 04.01.2012
Offline
35
736

Нашел в интернете скрипт доски объявлений. Хотел переделать его. Все переделал, но возникла проблема. Скрипт англоязычный и выводит категории на английском. Если категорию называешь по русски он ее не выводит. Нашел скрипт транслитерации, как его вставить в мой скрипт. Создал поле alt_cat_name, мне нужно, чтобы результат транслитерации записывался это поле.

Помогите пожалуйста с с правильной реализацией данного действа в php. Или может быть, по другому сделать?

скрипт транлитерации

<?php
function rus2translit($string) {
$converter = array(
'а' => 'a', 'б' => 'b', 'в' => 'v',
'г' => 'g', 'д' => 'd', 'е' => 'e',
'ё' => 'e', 'ж' => 'zh', 'з' => 'z',
'и' => 'i', 'й' => 'y', 'к' => 'k',
'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r',
'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
'ь' => '\'', 'ы' => 'y', 'ъ' => '\'',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',

'А' => 'A', 'Б' => 'B', 'В' => 'V',
'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z',
'И' => 'I', 'Й' => 'Y', 'К' => 'K',
'Л' => 'L', 'М' => 'M', 'Н' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R',
'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'',
'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya',
);
return strtr($string, $converter);
}
function str2url($str) {
// переводим в транслит
$str = rus2translit($str);
// в нижний регистр
$str = strtolower($str);
return $str;
}
?>

И мой исходный код:


<?

include_once("configure.php");
include_once("authorize.php");
include "language.php";

function main()
{
include($_SESSION['lang'].".php");
if ( isset( $_REQUEST["cid"] ) && $_REQUEST["cid"]!="" )
{
$cid=$_REQUEST["cid"];
}
else
{
$cid=0;
}
$catname="";


?>
<table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"> <table width="100%" border="0" cellpadding="1" cellspacing="1" >
<tr>
<td valign="top">
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>
<td valign="top">

<table width="100%" border="0" align="center" cellpadding="2" cellspacing="1">
<tr align="left">
<td height="25" colspan="2">
<?

$errcnt=0;
$showform="";

$mailid="";
$fromid="";
$subject="";
$mail="";

if ( count($_POST)!=0 )
{

if ( !isset( $_REQUEST["cat_name"] ) || $_REQUEST["cat_name"]=="" )
{
$errs[$errcnt]="$Category_name_must_be_provided";
$errcnt++;
}
elseif(preg_match ("/[;]/", $_REQUEST["cat_name"]))
{
$errs[$errcnt]="$Category_name_can_not_have_semi_colon (;) ";
$errcnt++;
}
else
{
if (!get_magic_quotes_gpc()) {
$cat_name=str_replace('$', '\$',addslashes($_REQUEST["cat_name"]));
}
else
{
$cat_name=str_replace('$', '\$',$_REQUEST["cat_name"]);
}

$par_cat=mysql_fetch_array(mysql_query("select * from star_trade_categories where es_cat_name='".$cat_name."' and es_pid=".$_REQUEST["cid"]));
if($par_cat)
{
$errs[$errcnt]="$Category_with_name <b>".$_REQUEST["cat_name"]."</b> $already_exists.";
$errcnt++;
}
}

$num_ques=0;
$num_ques+=mysql_num_rows(mysql_query("select * from star_trade_offer_cats where es_cid=".$_REQUEST["cid"]));
$num_ques+=mysql_num_rows(mysql_query("select * from star_trade_offer_cats_buy where es_cid=".$_REQUEST["cid"]));
$num_ques+=mysql_num_rows(mysql_query("select * from star_trade_product_cats where es_cid=".$_REQUEST["cid"]));
$num_ques+=mysql_num_rows(mysql_query("select * from star_trade_profile_cats where es_cid=".$_REQUEST["cid"]));
$num_ques+=mysql_num_rows(mysql_query("select * from star_trade_biz_directory where es_cid=".$_REQUEST["cid"]));

if( $num_ques>0)
{
$errs[$errcnt]="$This_category_contains_some_listings_you_have_to_shift_all_these_listings_to_any_other_category_before_adding_a_subcategory.";
$errcnt++;
}
}
if (count($_POST)<>0)
{
if ( $errcnt==0 )
{
if (!get_magic_quotes_gpc()) {
$cat_name=str_replace('$', '\$',addslashes($_REQUEST["cat_name"]));
}
else
{
$cat_name=str_replace('$', '\$',$_REQUEST["cat_name"]);
}

$sql="Insert into star_trade_categories (es_cat_name,es_pid,es_visit_sell,es_visit_buy,es_visit_product,es_visit_profile) values ('$cat_name',".$_REQUEST["cid"].",0,0,0,0)";
$rs=mysql_query( $sql);
$cat_name="";
$sql="select max(es_order_index) from star_trade_categories";
if( $rs_t1=mysql_fetch_array(mysql_query($sql) ))
{
$val=$rs_t1[0] + 1;
}
else
{
$val=0;
}

$sql="select max(es_id) from star_trade_categories";
if( $rs_t1=mysql_fetch_array(mysql_query($sql) ))
{
$sql="UPDATE star_trade_categories SET es_order_index=$val Where es_id= ".$rs_t1[0];
mysql_query($sql);
}

?><font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif"><?php echo $Category_has_been_Added; ?></font><?
$showform="No";
}
else
{
$cat_name=$_REQUEST["cat_name"];


?>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td colspan="2"><font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif"><?php echo $Your_Add_Category_Request_cannot_be_processed_due_to_following_Reasons; ?></font></td>
</tr>
<?

for ($i=0;$i<$errcnt;$i++)
{
?>
<tr valign="top">
<td width="6%"><font color="#FF0000"><?php echo $i+1; ?></font></td>
<td width="94%"><font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif">
<?php echo $errs[$i]; ?>
</font></td>
</tr>
<?
}//end for
?>
</table>
<?
}
}
?>
</td>
</tr>
<tr align="left">
<td height="25" colspan="2" class="titlestyle"><strong>&nbsp;<?php echo $Add_New; ?>
<? if($cid<>0) { echo "Subcategory";} else { echo "Category";}?>
</strong></td>
</tr><form name="form2" method="post" action="add_cat.php">
<tr>
<td width="50%" align="right" class="innertablestyle"> <div align="right"><strong><?php echo $Category_Name; ?>:&nbsp;</strong></div></td>
<td width="448"><font size="2" face="Arial, Helvetica, sans-serif">
<input name="cat_name" type="text" value="<? echo $catname;?>" size="40">
</font></td>
</tr>
<tr>
<td align="right" class="innertablestyle"> <div align="right"><strong><?php echo $Parent_Category; ?>:&nbsp;</strong></div></td>
<td><font face="Arial, Helvetica, sans-serif" size="2">
<select name="cid" id="select" >
<option value="0">root</option>
<?
$rs_query=mysql_query("select * from star_trade_categories order by es_pid");

while($rst=mysql_fetch_array($rs_query))
{
$cat_path="";
$child=mysql_fetch_array(mysql_query("select * from star_trade_categories where es_pid=".$rst["es_id"]));

$cat_path.=$rst["es_cat_name"];
$par=mysql_query("select * from star_trade_categories where es_id=".$rst["es_pid"]);
while($parent=mysql_fetch_array($par))
{
$cat_path=$parent["es_cat_name"].">".$cat_path;
$par=mysql_query("select * from star_trade_categories where es_id=".$parent["es_pid"]);
}
?>
<option value="<? echo $rst["es_id"];?>" <?php
if ( $rst["es_id"]==$cid )
{
echo " selected ";
}
?>><? echo $cat_path;?></option>
<?
}
?>
</select>
</font> </td>
</tr>
<tr>
<td class="innertablestyle">&nbsp;</td>
<td><font face="Arial, Helvetica, sans-serif" size="2">
<input type="submit" name="Submit" class="button" value="<?php echo $Add; ?>">
</font></td>
</tr></form>
</table>
</td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
<?
} //End of main
include_once("template.php");
?>

всегда готов помочь, за недорого, если что-то сделать не получается. беру на обслуживание сайты на постоянной основе. установка скриптов и модулей, обновление, принимаю благодарности в любом виде
palladin_jedi
На сайте с 13.07.2010
Offline
71
#1
Gilliboba:
И мой исходный код:

Покажите кусок в котором происходит запись в базу, лень весь этот код лопатить.

Сайт о web-разработке и прочем (http://seazo.net)||Продвижение статьями под Google (http://short.seazo.net/ght4zf) Бесплатные консультации рефералам Sape (http://www.sape.ru/r.SWfwWOblBo.php) PHP и JS скрипты на заказ, создание сайтов с нуля и на CMS.
G
На сайте с 04.01.2012
Offline
35
#2

Не силен в php, но по моему вот здесь происходит запись.


if (!get_magic_quotes_gpc()) {
$cat_name=str_replace('$', '\$',addslashes($_REQUEST["cat_name"]));
}
else
{
$cat_name=str_replace('$', '\$',$_REQUEST["cat_name"]);
}

$sql="Insert into star_trade_categories (es_cat_name,es_pid,es_visit_sell,es_visit_buy,es_visit_product,es_visit_profile) values ('$cat_name',".$_REQUEST["cid"].",0,0,0,0)";
$rs=mysql_query( $sql);
$cat_name="";
$sql="select max(es_order_index) from star_trade_categories";
if( $rs_t1=mysql_fetch_array(mysql_query($sql) ))
{
$val=$rs_t1[0] + 1;
}
else
{
$val=0;
}

$sql="select max(es_id) from star_trade_categories";
if( $rs_t1=mysql_fetch_array(mysql_query($sql) ))
{
$sql="UPDATE star_trade_categories SET es_order_index=$val Where es_id= ".$rs_t1[0];
mysql_query($sql);
}

palladin_jedi
На сайте с 13.07.2010
Offline
71
#3

В alt_cat_name где запись?

Просто записываемую переменную оберни в функцию.

$name = rus2translit($cat_name);

$sql="Insert into alt_cat_name some_name = '$name'";
$rs=mysql_query( $sql);

Как-то примерно так.

G
На сайте с 04.01.2012
Offline
35
#4

В том то и дело, что ее нет, а как это реализовать не знаю. alt_cat_name создал в базе в таблице star_trade_categories, там есть поле es_cat_name, в котором находится название категории на русском.

---------- Добавлено в 13:53 ---------- Предыдущее сообщение было в 13:44 ----------

а куда в скрипте можно добавить эту функцию rus2translit

---------- Добавлено в 13:59 ---------- Предыдущее сообщение было в 13:53 ----------

palladin_jedi, огромное спасибо надо попробовать так сделать.

palladin_jedi
На сайте с 13.07.2010
Offline
71
#5
Gilliboba:
а куда в скрипте можно добавить эту функцию rus2translit

Заинклюдить файл с функциями.

G
На сайте с 04.01.2012
Offline
35
#6

palladin_jedi, огромное спасибо еще раз.

palladin_jedi
На сайте с 13.07.2010
Offline
71
#7
Gilliboba:
palladin_jedi, огромное спасибо еще раз.

Обращайтесь...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий