PDA

View Full Version : مشکل در قسمت search box



hamed-php
چهارشنبه 15 تیر 1390, 08:57 صبح
با سلام

من یک search box ساختم و اطلاعات رو موردی میتونم از بانک پیدا کنم
مشکلی که برخوردم اینه که حروف فارسی رو نمیشناسه. و فقط عدد و حروف انگلیسی رو پیدا میکنه

db-query رو هم بصورت utf8 ست کردم .

مشکل از کجا میتونه باشه؟

MMSHFE
چهارشنبه 15 تیر 1390, 09:53 صبح
خود فايل رو چطور؟ با UTF-8 (ترجيحاً without BOM) ذخيره كردين؟ تگ META روي توي فايلتون گذاشتين كه كدگذاري صفحه رو utf-8 بگذاره؟

hamed-php
پنج شنبه 16 تیر 1390, 23:55 عصر
خود فايل رو چطور؟ با UTF-8 (ترجيحاً without BOM) ذخيره كردين؟ تگ META روي توي فايلتون گذاشتين كه كدگذاري صفحه رو utf-8 بگذاره؟

سلام

طبق راهنمایی شما انجام دادم اما کماکان به حروف فارسی هیچ واکنشی نشون نمیده

MMSHFE
شنبه 18 تیر 1390, 07:30 صبح
اگه ميشه Query مورد استفاده رو بنويسيد.

hamed-php
شنبه 18 تیر 1390, 10:13 صبح
سلام

اگه بخوام تغییرات فونت رو رو تابع بدهم به چه صورت میشه:


function db_select_db($name)
{
return mysql_select_db($name);
}

function db_query($s){

$res = array();
$res["resource"] = mysql_query($s);
if(!$res['resource']){
die( db_error()." SQL query : ".$s);
}
$res["columns"]=array();
$column_index = 0;

while($xwer = @mysql_fetch_field($res["resource"])){

$res["columns"][$xwer->name] = $column_index;
$column_index++;
}
return $res;
}

function db_fetch_row($q) //row fetching
{
$res = mysql_fetch_row($q["resource"]);
if ( $res )
{
foreach( $q["columns"] as $column_name => $column_index )
$res[$column_name] = $res[$column_index];
}
return $res;
}

MMSHFE
شنبه 18 تیر 1390, 11:23 صبح
با سلام، تابع db_select_db رو اينطوري تغيير بدين ببينيد مشكل رفع ميشه يا نه؟


function db_select_db($name)
{
$select = mysql_select_db($name);
mysql_query('SET NAMES \'utf8\'');
return $select;
}

موفق باشيد.

hamed-php
شنبه 18 تیر 1390, 12:49 عصر
متاسفانه به فونت فارسی عکس العملی نداره. فقط لاتین و عدد

hamed-php
شنبه 18 تیر 1390, 17:21 عصر
سلام
در حالت عادی فونت فارسی که در دیتابیسم ذخیره میشه بصورت کتاب Ø میباشد. جالب اینکه بدون استفاده از تابع
تابع پیشنهادی شما :

function db_select_db($name)
{
$select = mysql_select_db($name);
mysql_query('SET NAMES \'utf8\'');
return $select;
}


حروف فارسی رو در صفحه نمایش میده

اما وقتی از تابع پیشنهادی شما استفاده کردم مشکل ذخیره تو دیتا بیس حل شد و حروف فارسی رو درست تو بانک میبینم و در صفحه هم درست نمایش میده
فقط حروفی که قبلاً ذخیره شده بود (بدون استفاده از تابع جدید) رو حالا تو صفحه به صورت کتاب Ø نمایش میده .
اگر دوباره برگردم به استفاده از تابع اولیه، حالا داده هایی رو که با تابع قبلی ذخیره کرده بودیم رو بصورت ؟؟؟؟؟ نمایش میده


یه کم گیج شدم ببخشید اگه نتونستم خوب توضیح بدم

MMSHFE
یک شنبه 19 تیر 1390, 08:41 صبح
با سلام، دوست گرامي اطلاعات قبلي شما بدون سيستم يونيكد ذخيره شده. يا اونها رو بصورت دستي دوباره ذخيره كنيد يا اينكه خودتون يك تابع بنويسيد كه اطلاعات رو از جدول بدون يونيكد بخونه و بريزه توي آرايه و بعد از حذف ركوردهاي خونده شده، ديتابيس رو يونيكد كنيد و محتويات آرايه رو دوباره ذخيره كنيد.
البته قبلش از DB پشتيبان بگيرين كه اطلاعاتتون پاك نشه چون بسته به نوع كدگذاري قبلي DB، چند حالت رو بايد امتحان كنيد تا اطلاعات به شكل درست تبديل بشن. درنتيجه، اگه اطلاعات خراب شد، بتونيد دوباره به وضعيت قبلي برگردونيد.
موفق باشيد.

hamed-php
دوشنبه 20 تیر 1390, 17:39 عصر
با سلام

آیا راهی هست که اطلاعات ارسالی از یک فرم رو بصورت utf8 ارسال کرد:


<input type="text" name="searchstring" size=7
value="{$searchstring|default:""}">

MMSHFE
سه شنبه 21 تیر 1390, 17:13 عصر
کافیه فرمتون توی یک صفحه قرار گرفته باشه که خود اون صفحه با کدگذاری utf-8 ذخیره شده باشه و توسط تگ متا هم کدگذاری utf-8 رو انتخاب کنید. در این حالت، اطلاعات بصورت یونیکد ارسال خواهند شد. در نتیجه اگه توی دیتابیس اونها رو بصورت یونیکد ذخیره کنید، مشکلی پیش نخواهد اومد.
موفق باشید.