ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ترفند فارسی سازی tableهای پایگاه داده برای نمایش فارسی داده های فرم ها



popo2po
05-24-2012, 12:23 PM
سلام
قبل از شروع از اینکه برای خیلی ها زیادی توضیح دادم پوزش، اما دوست ندارم کسی اشتباه کنه.
و بعد هم از اینکه انجمن امکان آپلود فایل رو نداد تا کد مورد نیاز رو آپلود کنم و راس و چپش به هم ریخته ...!


حتما برایتان پیش آمده که وقتی افزونه ای رو نصب می کنید، مخصوصا فرم ساز ها رو، پس از ورود اطلاعات و وقتی که می خواهید خروجی بگیرید و یا حتی قالب خود فرم در Front end سایت، نوشته های فارسی به صورت چندین ؟؟؟؟؟ نمایش داده می شوند.
در همین انجمن هم سوال هایی شده:
<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>
یا
<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>


البته راه حل این مشکل، همونطور که دوستان جواب دادن تغییر دستی charset و collation یا همون انکودینگ (ٍencoding) پایگاه داده هست.

بعلاوه، برای حل این مشکل راه سریع تر و بعلاوه ساده تری از تغییر دستی charset و collation پایگاه داده وجود دارد و اون هم اجرای یک دستور SQL هست. این دستور رو حداقل باید در PHPMyadmin و در پنل خودتون اجرا کنید اما فرقش اینه که با یک بار اجرای این دستور همه پایگاه داده شما به انکودینگ UTF8 و utf8_general_ci یا هر چیز دیگری که شما بخواهید تبدیل می شوند.

حالا این دستور رو از کجا بیاریم؟
این چیزیه که می خواهم توضیح بدم:

برای این کار لازمه یک فایل .php در یکی از فولدر های سرور ایجاد کنید و کد زیر رو بعد از انجام چند تغییر در اون قرار بدین و بعد از اجرای مسیر فایل کد برای شما ایجاد می شود. تنها کاری که باید انجام بدین کپی کردن اون کد در phpmyadmin و در تب SQL در پایگاه دادهتون هست.


در اجرای تنضیمات دقت کنید.
تنظیم نکردن نام پایگاه داده باعث تغییر انکودینگ همه پایگاه های داده میشه
که می تونه برای information_schema', 'mysql' مشکل ایجاد کنه.

کد:



<?php

//MySQL connection settings
$db_server = 'localhost';
$db_user="root";
$db_password="";

mysql_connect($db_server, $db_user, $db_password) or die(mysql_error());

//نام پایگاه داده خود را که می خواهید تغییر کند اینجا و در میان '' بنویسید. این جایی است که نباید فراموش کنید!
$dblist=array('');

//نام پایگاه داده ای که نباید دستکاری شود را اینجا قرار دهید. اگر بالایی را تنطیم کرده اید، نیازی به این نیست.
$skip_db_list = array('information_schema', 'mysql');

//Which charset to convert to?
$charset="utf8";

//Which collation to convert to?
$collation="utf8_general_ci";

//Only print queries without execution?
$printonly=true;

//Getting database names if they are not specified
$skip_db_text = '"'.implode('", "', $skip_db_list).'"';
if(count($dblist)<1) {
$sql="SELECT GROUP_CONCAT(`SCHEMA_NAME` SEPARATOR ',') AS FRST FROM `information_schema`.`SCHEMATA` WHERE `SCHEMA_NAME` NOT IN ($skip_db_text)";
$result = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc ($result);
$dblist=explode(",", $data["FRST"]);
}

//Iterating databases
foreach ($dblist as $dbname) {
$sql="SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET $charset COLLATE $collation;') as FRST FROM `information_schema`.`TABLES` t WHERE t.`TABLE_SCHEMA` = '$dbname' ORDER BY 1";

$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
echo $row["FRST"]."\r\n";
if(!$printonly) {
mysql_query($row["FRST"]) or die(mysql_error());
}
}
}
?>


قسمت های سبز را مطابق با پایگاه داده جوملای خود پر کنید.
در قسمت قرمز نام پایگاه داده جوملای خود را بگذارید. (نام database کل جوملا!)
قسمت بنقش را در صورتی که نمی خواهید قرمز را پر کنید تکمیل کنید

حال آدرس فایل را بر روی سرور در مرورگر خود وارد کنید. اگر همه چیز را درست انجام داده باشید، یک صفحه حاوی کد مورد نطر نمایش داده می شود.
همه کد موجود در صفحه را به عنوان دستور SQL در phpmyadmin وارد کنید.


شاد باشید و همیشه بخندید.

dr.jahangard
07-02-2012, 08:03 AM
سلام دوست عزیز !! (نام database کل جوملا!) یعنی چی ؟( یعنی نام دیتا بیس هاست ) ؟ ممنون از آموزشتون

shmata
07-02-2012, 08:05 AM
سلام دوست عزیز !! (نام database کل جوملا!) یعنی چی ؟( یعنی نام دیتا بیس هاست ) ؟ ممنون از آموزشتون

یعنی اون Database رو که برای نصب جوملا ساختید و جوملا در آن نصب کردید .

dr.jahangard
07-02-2012, 11:37 AM
سلام دوست عزیز ! من صفحه حاوی کد رو دریافت می کنم و کد ها رو در قسمت Run SQL query/queries on server کپی می کنم و بعد کلید GO رو می زنم ولی هیچ اتفاقی نمی افته و هنوز که هنوزه خروجی هام به شکل ؟؟؟؟ می اد

popo2po
07-03-2012, 06:47 AM
سلام و تشکر از پاسخ دوست عزیز، shmata.



سلام دوست عزیز ! من صفحه حاوی کد رو دریافت می کنم و کد ها رو در قسمت Run SQL query/queries on server کپی می کنم و بعد کلید GO رو می زنم ولی هیچ اتفاقی نمی افته و هنوز که هنوزه خروجی هام به شکل ؟؟؟؟ می اد


دوست عزیز، شما کد رو باید در phpmyadmin خودت در SQL دیتابیستون وارد کنی.
برای این کار وقتی به صفحه phpmyadmin رفتی، ابتدا از سمت چپ صفحه، روی نام دیتابیسی که کد رو برای اون ایجاد کردی، یعنی همون دیتابیسی که در مرحله قبل سوال کردین و در تنظیمات قبلی جایگزین کردی، کلیک کنین. بعد از منوی بالا SQL برین و در قسمت Run SQL query/queries on database کد رو دوباره امتحان کنین.

اگر همه چیز به خوبی انجام شد، فراموش نکنید که امنیتش بیشتره که فایل .php که در سرور خود ایجاد کرده بودین رو هم حذف کنین.

dr.jahangard
07-03-2012, 11:18 AM
با عرض پوزش دوست عزیز ! همه این کار ها رو انجام دادم متاسفانه باز هم مشکلم حل نشد ! وقتی کلید GO رو می زنم بعد از علامت loading همه کد ها پاک می شه و توی فرم ها هیچ اتفاقی نمی افته ! راستی پیشاپیش نیمه شعبان و این عید رو بهتون تبریک می گم

popo2po
07-03-2012, 02:20 PM
با عرض پوزش دوست عزیز ! همه این کار ها رو انجام دادم متاسفانه باز هم مشکلم حل نشد ! وقتی کلید GO رو می زنم بعد از علامت loading همه کد ها پاک می شه و توی فرم ها هیچ اتفاقی نمی افته ! راستی پیشاپیش نیمه شعبان و این عید رو بهتون تبریک می گم

دو حالت داره، یا باید پیغام بده انجام شد و یا خطایی اعلام کنه! چه پیغام یا خطایی میده؟

popo2po
07-04-2012, 08:40 AM
دو حالت داره، یا باید پیغام بده انجام شد و یا خطایی اعلام کنه! چه پیغام یا خطایی میده؟

دوست من عید شما هم مبارک
من از این شیوه دوباره استفاده کردم. حق با شما هست و داده های قبلی تغییری نمی کنن. من چک کردم و دیدم که در همه جداولم، تغییر اتفاق افتاده.
داده هایی که قبلا وارد کرده بودم مثل قبل با ؟؟؟؟؟ نشون داده می شه.
داده های جدید که بعد از اجرای sql ذخیره می شه به درستی ذخیره و بازخوانی می شه.
فکر کنم شما هم مثل من نباید خیلی داده قدیمی داشته باشی که نشه اصلاحشون کرد (چون اصولا داده ها با ؟؟؟ نشون داده میشن.)

من نمیدونم که چطور باید مشکل داده های قبلی رو حل کرد. امیدوارم اگر راهی پیدا کردی به من هم نشون بدین.

موفق باشی و شاد.

dr.jahangard
07-08-2012, 02:17 AM
سلام دوست منممنون از وقتی که گذاشتی ! من تمام راهنمایی هاتونو انجام دادم و با پیغام با موفقیت انجام شد مواجه شدم اما هنوز که هنوزه حتی داده های جدید هم به شکل ؟ می آد
ممنون می شم کمکم کنین !

popo2po
07-09-2012, 12:27 PM
چه ورژنی از جوملا داری؟ چه افزونه ای رو استفاده می کنی؟ چه ورژنی؟ لینک دانلودی ازش داری؟ آیا لوکال هستی یا روی سرور؟

dr.jahangard
07-09-2012, 03:33 PM
سلام ، جوملا 1.7.2 ، بریزینگ فرم BreezingForms 1.7.3 Stable ، افزونه های دیگه = dj imageslider و کیوننا ، تا جایی که یادمه از سایت سازنده دانلود کردم ، روی سروره ، <b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b> آدرس سایت

shmata
07-09-2012, 06:50 PM
سلام ، جوملا 1.7.2 ، بریزینگ فرم BreezingForms 1.7.3 Stable ، افزونه های دیگه = dj imageslider و کیوننا ، تا جایی که یادمه از سایت سازنده دانلود کردم ، روی سروره ، <b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b> (<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>) آدرس سایت

table های مربوط به این افزونه ها را از دیتابیس نگاه کنید ببینید اطلاعاتتون در آنجا به شکل ? است یا بدرستی ذخیره شده ؟

dr.jahangard
07-13-2012, 04:51 AM
سلام table های مربوط به فرم های تکمیل شده در فرم همه فارسی هستن

dr.jahangard
07-14-2012, 07:38 AM
می شه یکی از دوستان راهنمایی کنه ؟

dr.jahangard
07-16-2012, 01:41 PM
سلام
table های مربوط به فرم های تکمیل شده در فرم همه فارسی هستن
به نظر شما مشکل از کجاست ؟

dr.jahangard
07-21-2012, 07:08 AM
سلام به تمام دوستان
یک سوال برام پیش اومده ؟
من چند تا سوال گذاشتم که بیشتر از 1 هفتست که بهشون پاسخ داده نشده ! می خوام بدونم سوال های بقیه دوستان هم همین طوره ؟

shmata
07-21-2012, 07:26 AM
سلام
table های مربوط به فرم های تکمیل شده در فرم همه فارسی هستن
به نظر شما مشکل از کجاست ؟

وقتی اطلاعات در پایگاه داده تون بدرستی (فارسی) ذخیره میشه یعنی مشکلی نیست و مشکل از سایت ( charset ) یا افزونه مورد استفاده تون است .

dr.jahangard
07-21-2012, 08:50 AM
ممنونم دوست عزیز !
تا جایی که یادمه این کامپوننت رو از سایت سازنده دانلود کردم
پیشنهادتون برای رفع مشکل چیه ؟
افزونه رو پاک کنم دوباره نصب کنم ؟

shmata
07-21-2012, 09:36 AM
ممنونم دوست عزیز !
تا جایی که یادمه این کامپوننت رو از سایت سازنده دانلود کردم
پیشنهادتون برای رفع مشکل چیه ؟
افزونه رو پاک کنم دوباره نصب کنم ؟

سایت سازنده زبان های غیر انگلیسی که از کاراکترهای utf-8 استفاده میکنند پشتیبانی میکند ؟
بعید نصب دوباره مشکلی رو حل کنه .
قبل از هر query تون باید


mysql_set_charset('utf8');

استفاده کنید .

dr.jahangard
07-22-2012, 09:43 AM
سلام ممنون از پیگیری تون
ممنون می شم کمی راهنمایی کنین آخه در این مورد مبتدی هستم :rose: