PDA

View Full Version : حرفه ای: فارسی نوشتن در رکوردهای myySQl از طریق فرم PHP



h.alizadeh
سه شنبه 15 تیر 1389, 18:53 عصر
سلام،

چطوری می تونم در بانک mysql از طریق phpرکورد فارسی وارد کنم؟
من یه بار بانک ایجاد کردم و بانک و جدول و فیلدا همه رو ازنوعutf8_persian_ci قرار دادم و اما وقتی از طریق فرمم در php مییام رکورد اضافه میکنم بصورت خرچنگ قورباغه در بانک میریزه!!!

یه بارم بانک و جدول و فیلدها همه رو در همان لحظه ساخت از نوعutf8_unicode_ci تعریف کردم اما مثه بالا نشد بازم خرچنگ قورباغه نشون میده

فایلای پی اچ پی ام هم اینطوریه:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

/////

چکار کنم؟

ممنون

//
البته موقعی که از بانک میخونم و توی PHP نمایش میدم درست نشون میده ، ولی توی بانک خرچنگ قورباغه س:اشتباه:

البته اینم اضافه کنم وقتی موع عریف بانک نوعشو utf8_persian_c تعریف میکنم باز مییام میبینم خودش latin1_swedish_ci کرده که من باز ویرایش میکنم و بعد درست میشه.

ممنون

funpatogh
سه شنبه 15 تیر 1389, 22:12 عصر
از این کلاس استفاده کن برای کانکت


<?php
class Connect{
public $link;
public $host;
public $user;
public $pass;
public $db;
function __construct($host,$user,$pass,$db){
$this->host=$host;
$this->user=$user;
$this->pass=$pass;
$this->db=$db;
$this->link=mysql_connect($this->host,$this->user,$this->pass)or die(mysql_error());
mysql_select_db($this->db,$this->link);
mysql_query("SET NAMES UTF8");
mysql_set_charset("utf8");
}


}
$obj=new Connect("localhost","root","1364","portal");
?>

walker
سه شنبه 15 تیر 1389, 23:48 عصر
سلام.نوع فیلد رو latin1_bin کن.

eshpilen
چهارشنبه 16 تیر 1389, 13:04 عصر
باید کوئری SET NAMES 'utf8' رو بعد از هر کانکشن به دیتابیس اجرا کنی (قبل از اجرای کوئری درج داده ها).

eshpilen
چهارشنبه 16 تیر 1389, 15:05 عصر
اون mysql_set_charset("utf8"); رو بردار. احتمال داره مشکل از همین باشه.

mohkami
چهارشنبه 16 تیر 1389, 15:32 عصر
Collation مربوط به اون Field جدولتون باید همون utf8_persian_ci باشه.
بعد از انتخاب دیتابیستون توی صفحه php تون این خط رو باید اضافه کنید.



mysql_query("SET NAMES UTF8");
از زمانی که این خط رو اضافه میکنید اطلاعات صحیح وارد میشوند ولی اطلاعاتی که از قبل وارد شدند دیگه تغییری نمیکنند.

mohammadHN
چهارشنبه 16 تیر 1389, 16:28 عصر
شما نه لازم هست که بری از یک کلاس مخصوص استفاده کنی نه چیزهای دیگه!
توی برنامه‌ی خودت بعد از کانکت شدن به دیتابیس این رو بنویس:

mysql_set_charset("utf8");
منم قبلا به این مشکل برخورد کرده بودم!
این کار رو کردم درست شد.
معمولا این مشکل روی سرور برطرف میشه و روی لوکال خرچنگ قورباغه هست!

h.alizadeh
چهارشنبه 16 تیر 1389, 23:01 عصر
ممنونم funpatogh ، مشکلم حل شد.
راستی کد شما در Wamp server 2.0اجرا کردم درست بود ولی خونه با wamp5اجرا میکنم این اررور رو میده:
Fatal error: Call to undefined function mysql_set_charset()

funpatogh
پنج شنبه 17 تیر 1389, 00:46 صبح
این فانکشن توی php5 اضافه شده مطمئن هستی که ورژن php شما 5 هست؟

h.alizadeh
جمعه 18 تیر 1389, 01:01 صبح
Apache/2.0.59 (Win32) PHP/5.2.0 Server at localhost Port 81اینو پایین لوکالم نوشته