PDA

View Full Version : سوال: فارسی نویسی در php



Hussein39
یک شنبه 09 فروردین 1388, 11:53 صبح
سلام دوستان
من با برنامه vertrigo یک بانک mysql ساختم این بانک شامل یک جدول به نام hassan و سه فیلد که موقع ساخت بانک collection رو با ut f8_persian_ci قرار دادم و فیلد های جدول رو بجز فیلد IDNumber رو با ut f8_persian_ci قرار دادم. حالا با همون vertrigo به بانک مقدار فارسی دادم. وقتی می خوام تو php اون مقدار فارسی رو بخونم علامت سوال به جای کارکتر های فارسی می یاد. اینم کدی که نوشتم:

<?php

$conn = mysql_connect("localhost", "root", "vertrigo");

if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}

if (!mysql_select_db("hassan")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}

$sql = "SELECT * FROM Teacher";

$result = mysql_query($sql);

if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}

if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
// then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
echo $row["Name"];
echo $row["LastName"];
echo $row["IDNumber"];

}

mysql_free_result($result);

?>


با تشکر

amirhosein
یک شنبه 09 فروردین 1388, 12:37 عصر
جستجو قبل از پرسش!

yaqubian
یک شنبه 09 فروردین 1388, 12:37 عصر
دوست عزیز
موقع ساخت جداول بانک collation رو دست نزنید. بذارید روی همون latin باشه. موقع بازیابی اطلاعات درست نمایش داده می شه!
موفق باشید

Hussein39
یک شنبه 09 فروردین 1388, 15:09 عصر
اینکارو کردم ولی حالا حتی خود برنامه vertrigo هم کاراکتر های فارسی رو با (?) نشون میده. چه برسه به PHP من می خوام اطلاعات فارسی رو تو بانک mysql ذخیره کنم و بعد اونا رو با php نشون بدم

alireza82
یک شنبه 09 فروردین 1388, 16:47 عصر
سلام
collection ها رو بزار همون ut f8_persian_ciو برای تیبل هم همینطور.
تنها کاری که باید بکنید اینه که بعد از کانکت شدن به دیتابیس


mysql_query("SET NAMES 'utf8' ");

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

cybercoder
یک شنبه 09 فروردین 1388, 18:46 عصر
دوست عزیز
موقع ساخت جداول بانک collation رو دست نزنید. بذارید روی همون latin باشه. موقع بازیابی اطلاعات درست نمایش داده می شه!

اشتباهه
قبلا در این مورد بحث شده

yaqubian
دوشنبه 10 فروردین 1388, 08:19 صبح
دوست عزیز
می شه بگید چرا اشتباهه؟؟ من تو این چند سال تا حالا به مشکل برنخوردم!
موفق باشید

Hussein39
دوشنبه 10 فروردین 1388, 12:23 عصر
آقا دستون درد نکنه مشکل رفع شد. فقط یه سوال دیگه من یه سمینار در مورد php دارم و می خوام در مورد دو تابع mysql_fetch_array و mysql_fetch_assoc توضیح بدم PHP Manual رو نگاه کردم ولی چیزی دستگیرم نشد.

alireza82
دوشنبه 10 فروردین 1388, 15:48 عصر
آقا دستون درد نکنه مشکل رفع شد. فقط یه سوال دیگه من یه سمینار در مورد php دارم و می خوام در مورد دو تابع mysql_fetch_array و mysql_fetch_assoc توضیح بدم PHP Manual رو نگاه کردم ولی چیزی دستگیرم نشد.
جفتشون یه کار رو انجام میدن با این تفاوت که mysql_fetch_assoc نتایج رو تو یه آرایه بر میگردونه که اندیس این آرایه برابر با نام اون فیلد تو دیتابیس هست اما mysql_fetch_array یه آرایه بر میگردونه سه حالت میتونه بگیره که با پارامتر دوم میتونید مشخصش کنید . اگر هیچ پارامتر دوم رو مشخص نکنید یعنی به صورت پیش فرض MYSQL_BOTH بمونه یهآرایه بر میگردونه که شکلش اینطوری هست مثلا اگر یوزر و کلمه عبور رو کشیده باشیم بیرون :


[0] => alireza [username] => alireza[1] => harchi [password] => harchi

به عبارت دیگه یه ارایه بر میگردونه که اون دو فیلد رو من به دو صورت دارم یکی اندیس عددی یکی هم اندیس هم نام با خود فیلد تو دیتا بیس اگر پارامتر دوم رو MYSQL_ASSOC بدید دقیقا مثل همونmysql_fetch_assoc عمل میکنه این تابع و اگر MYSQL_NUM بدید به عنوان پارامتر دوم فقط یه رایه عددی بر میگردون مثل:


[0] => alireza [1] => harchi

امیدوارم بفهمی چی گفتم دیگه جمله بندی بهتر از این نمیتونستم بکنم:چشمک:

Hussein39
دوشنبه 10 فروردین 1388, 16:38 عصر
قربونت برم alireza82 جون امروز خیلی بهت زحمت دادم

alireza82
دوشنبه 10 فروردین 1388, 16:45 عصر
دوست عزیز
می شه بگید چرا اشتباهه؟؟ من تو این چند سال تا حالا به مشکل برنخوردم!
موفق باشید
سلام
اشتباه نیست مشکلی هم پیش نمیاد ولی اگر از utf8_persian_ci استفاده کنید مزایای خوبی داره یکی اینکه با توجه به حروف فارسی میتونید sort داشته باشید و دیگه نیاز نیست تابعی برای اینکار بنویسید یکی دیگه هم اینکه تو phpmyadmin اطلاعات ورودی رو فارسی خواهید دید و دیگه از حروف خرچنگ قورباقه خبری نیست .
موفق باشید

zoho1381
سه شنبه 11 فروردین 1388, 10:26 صبح
سلام
collection ها رو بزار همون ut f8_persian_ciو برای تیبل هم همینطور.
تنها کاری که باید بکنید اینه که بعد از کانکت شدن به دیتابیس


mysql_query("SET NAMES 'utf8' ");
دستور بالا رو هم اجرا کنی مشکل حل میشه
موفق باشید

من هم اين كارو كردم ولي بازم فايده نداره!!!:عصبانی++:
لطفا بيشتر توضيح بدين يا راه ديگه اي اگر ميدونين به من هم بگين!