PDA

View Full Version : مبتدی: نمایش علامت سؤال به جای مقدار موجود در دیتابیس



Jarvis
پنج شنبه 27 تیر 1392, 22:48 عصر
سلام و درود
من توی ساخت دیتابیس خودم charset رو روی utf8_persian_ci گذاشتم ... یعنی توی دیتابیس با حروف فارسی مشکلی نداره ...
حالا این کد رو ببینید :

<?php
require 'database.config.php';
$query = "select * from users";
$query_run = mysql_query($query) or die('db error!');
$query_row = mysql_fetch_assoc($query_run);
//while ($query_row = mysql_fetch_assoc($query_run)){
$username = $query_row['username'];
$firstname = $query_row['firstname'];
$surname = $query_row['surname'];
echo $username.' '.$firstname;
//}
?>
توی این کد وقتی من میام از دیتابیس اطلاعات بگیرم ، مثلا اون firstname یه فیلد محتوی عبارت فارسی هستش که به صورت علامت سؤال نشونش میده ...

دوستان ممنون میشم راهنمایی کنن.

shahriyar3
پنج شنبه 27 تیر 1392, 22:55 عصر
قبل از کوئریت اینو بزار

mysql_query("SET CHARACTER SET utf8 ");

mtnam1372
پنج شنبه 27 تیر 1392, 23:09 عصر
سلان عزیزم
اول اینکه باید کارکتز پیشفرض صفحتو utf8 بزاری
دوم جداولتم باید utf8باشن
قبل از خوندن از پایگاه داده هم این کوئری رو اجرا کن

mysql_query("SET CHARACTER SET utf8 ");

parsboy
پنج شنبه 27 تیر 1392, 23:15 عصر
باسلام دوست عزیز این سوال ها جزومطالب تکراری هست!
http://barnamenevis.org/showthread.php?356992-%D9%BE%D8%B1%D8%B3%D8%B4%D9%87%D8%A7%DB%8C-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C
موفق باشید.

Jarvis
جمعه 28 تیر 1392, 11:36 صبح
از همه دوستان ممنون ... من تمام کارهایی که توی تاپیک گفته شده رو انجام دادم ... ولی هنوز کاراکترهای عجیب و غریب رو نشون میده

ابوذر محمودی
جمعه 28 تیر 1392, 11:43 صبح
اینو تست کن:

mysql_query("set names 'utf8'");

Jarvis
جمعه 28 تیر 1392, 11:53 صبح
اینو ببینید :
107519
اون دستوری هم که فرمودید نوشتم ... Encoding ـه صفحاتم رو هم به Unicode Without-BOM تغییر دادم ...
ولی هنوز حروف عجیب نشون میده...!

ابوذر محمودی
جمعه 28 تیر 1392, 12:03 عصر
ساختار بانکت مشکلی نداره ، قبل کوئریتون یه متن فارسی اکو کنین ببینین اونو درست نمایش میده.

Jarvis
جمعه 28 تیر 1392, 12:13 عصر
اگه Encoding ـه صفحه رو بزارم روی UTF-8 آره ... اکو میکنم درست نشون میده ... ولی اگه روی UTF-8 Without BOM باشه .. خرچنگ قورباقه نشونم میده

Javidhb
جمعه 28 تیر 1392, 12:13 عصر
چون بقیه کارا رو کردی اینم امتحان کن:

توی تب sql در phpmyAdmin:


ALTER TABLE users
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
;




منبع (http://tympanus.net/codrops/2009/08/31/solving-php-mysql-utf-8-issues/)

Jarvis
جمعه 28 تیر 1392, 17:18 عصر
سلام عزیزم مشکل تو از سمت خودت نیست بلکه از سمت سرور هست این مشکلات معمولان زمانی رخ میدهد که سرور های پی اچ پی خودشون رو ارتقاع می دهند من هم قبلا با این مشکل بر خورد کردم و مدت ها با اجازی شما الاف می چرخیدم تا اینکه متوجه شدم مشکل از جایی است که من هاشتمو از اون گرفتم برای اطمینان کافیه که روی یک هاست دیگه تست کنی مطمئن باش که همین طوره . گتنا (http://www.gtna.net)
نخیر شما خیلی مطمئن نباش چون مشکل حل شد و از سرور هم نبود ... مشکل مربوط می شد به encoding که وقتی گذاشتم روی UTF-8 مشکلم حل شد.

MMSHFE
جمعه 28 تیر 1392, 17:42 عصر
دوست عزیز، کدگذاری فایل رو UTF-8 without BOM بگذارین، کدگذاری دیتابیس هم utf8_bin یا utf8_persian_ci باشه، موقع اتصال به دیتابیس هم این دو دستور رو بعد از mysql_connect و mysql_select_db بگذارین:


mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');

توی قسمت head صفحه هم اگه doctype مربوط به HTML5 رو میگذارین، این کد:

<meta charset="utf-8" />و اگه از نسخه های قبلی HTML استفاده میکنید، کد زیر:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />رو استفاده کنید، قطعاً مشکل حل میشه. این مسئله ارتباطی به سرور نداره. موفق باشید.

Jarvis
جمعه 28 تیر 1392, 19:08 عصر
من هم دقیقاً همین کارایی که شما فرمودید انجام دادم ... ولی وقتی یه متن فارسی رو echo میکردم درست نشون نمیداد ... اومدم Encoding رو به UTF-8 تغییر دادم .. آدم شد! :لبخند:

MMSHFE
شنبه 29 تیر 1392, 08:38 صبح
اگه میشه اطلاعات Remote Connection با TeamViewer رو برام پیام خصوصی کنید از نزدیک بررسی کنم. نباید این حالت پیش بیاد چون UTF-8 without BOM هم همون حالت UTF-8 هست با این تفاوت که Byte Order Mark ازش حذف شده. با UTF-8 معمولی توی کار با سشنها و کوکیها به مشکل بر میخورین.

Jarvis
شنبه 29 تیر 1392, 10:37 صبح
دوستان مشکل حل شد .. من چون از RapidPHP استفاده میکردم ، خروجی رو توی خوده RapidPHP میدیدم .. یعنی اشکال از RapidPHP بود ... خروجی توی مرورگر به خوبی نشون داده میشه.

ممنون از لطف همه دوستان - همگی موفق باشید.

MMSHFE
شنبه 29 تیر 1392, 13:48 عصر
دوست گرامی، از لحن صحبت شما در این تاپیک و چند تاپیک دیگه اینطور بر میاد که اینجا رو با جای دیگری اشتباه گرفتین! درصورت تکرار، مطابق قوانین شناسه کاربری شما مسدود خواهد شد.

p30online
شنبه 29 تیر 1392, 14:05 عصر
من داخل بانک نوشتم بالفرض ولی این جوری نمایش میده .باید به هر اینتر رسید بره خط بعد نمیره (فاصله های خای که در تصویر است).http://www.up.p30day.com/images3/2013/may/19511520536502264043.png

MMSHFE
شنبه 29 تیر 1392, 14:14 عصر
HTML به Enter حساس نیست، باید از تگ </ br> استفاده کنید. برای تبدیل خودکار Enter به تگ BR از تابع nl2br استفاده کنید.

ابوذر محمودی
شنبه 29 تیر 1392, 14:15 عصر
سوالتون گنگه لطفا واضح تر بپرسید ؟
گمونم اشتباهی سوالشونو اینجا مطرح کردن،چون اینجا سوالشون مطرح شده
لینک تایپک (http://barnamenevis.org/showthread.php?409613-%D8%A8%D9%87-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%B1-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-mysql-%D8%AF%D8%B1-%D8%B5%D9%81%D8%AD%D9%87-php)

p30online
شنبه 29 تیر 1392, 14:28 عصر
گمونم اشتباهی سوالشونو اینجا مطرح کردن،چون اینجا سوالشون مطرح شده
لینک تایپک (http://barnamenevis.org/showthread.php?409613-%D8%A8%D9%87-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%B1-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-mysql-%D8%AF%D8%B1-%D8%B5%D9%81%D8%AD%D9%87-php)


درسته .ببخشید عجله ای شد.قبلا داشتم این تاپیک و می خوندم و نبسته بودمش.به جای اون تاپیک اومدم داخل این تاپیک سریع تایپ کردم .از آقای MMSHFE هم خیلی ممنونم بابت پاسخشون.