PDA

View Full Version : درست نشان ندادن فارسی در phpmyadmin (حل شد)



Sepax1
شنبه 12 مرداد 1392, 10:46 صبح
سلام به همه دوستان .
این مشکل یه چند ساعتی منو درگیر کرده .
تو پی اچ مای ادمین هر کاری می کنم حرف فارسی مربع نشون میده . تو خوده سایت درسته ها .

نمی دونم چی کار کنم .

MMSHFE
شنبه 12 مرداد 1392, 11:03 صبح
جستجو کنید (پرسشهای تکراری (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&p=1576424&viewfull=1#post1576424))

بهارجون
شنبه 12 مرداد 1392, 11:18 صبح
اگر خودتان دستی در phpmyadmin اطلاعات را وارد کردید این مشکل هست اما اگر با query زدن در محیط phpmyadmin اطلاعات را وارد جداول کنید این مشکل برطرف می شود.

Sepax1
شنبه 12 مرداد 1392, 12:30 عصر
تاپیک سولات تکراری رو قبلش خونده بودم , نشد

===========
تو خود سایت می خوام یه چیزی رو INSERT کنم . این کارم به درستی انجام میشه ولی وقتی میرم تو مای ادمین حروف مربع اومده . Collation هم utf8_bin ه .

MMSHFE
شنبه 12 مرداد 1392, 12:37 عصر
توی صفحه اصلی phpMyAdmin توی قسمت Server connection collation گزینه utf8_bin رو انتخاب کنید.

Sepax1
شنبه 12 مرداد 1392, 12:58 عصر
گفتم که bin ه .
ولی وقتی میرم تو یکی از تیبل ها مثلا" این طوری نشون میده :

http://upload7.ir/images/91903987284822207659.jpg

hamedarian2009
شنبه 12 مرداد 1392, 13:22 عصر
برای نمایش صحیح کلمات فارسی شما باید سه تا کار انجام بدین:


در قسمت head صفحه html سایت این متا تگ رو استفاده کنید:



<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


2. باید تمام فیلدهای داخل دیتابیس شما که داخلش مقادیر فارسی قرار میگیره رو utf8 تنظیم کنید.


3. در نهایت باید در هنگام اتصال به mysql و انتخاب بانک کوئری set names utf8 را هم اجرا کنید :


$link = mysql_connect('localhost','root','') or die('could not connect to mysql server:'.mysql_error());
mysql_select_db('news',$link) or die('could not connect to db:'.mysql_error());
mysql_query('set names utf8');

MMSHFE
شنبه 12 مرداد 1392, 13:23 عصر
دوست عزیز، توی صفحه اصلی phpMyAdmin رو گفتم ها. منظورم Collation خود دیتابیس نبود. اون که به احتمال زیاد درسته. البته باید کدتون رو هم ببینیم. ضمناً از صفحه Structure دیتابیس خودتون هم یک عکس بگذارین.

Sepax1
شنبه 12 مرداد 1392, 13:32 عصر
دوست عزیز , این کار هارو هم کرده بودم نمی شه .
شاید مشکل از wamp ه ؟!

=========
اینم عکس از structure :

http://upload7.ir/images/19170819581024558423.jpg

drsina
شنبه 12 مرداد 1392, 13:48 عصر
سلام !
رو utf8_general_ci هم یه امتحانی بکنید ،

Sepax1
شنبه 12 مرداد 1392, 13:54 عصر
فرقی نکرد دوست عزیز :(

drsina
شنبه 12 مرداد 1392, 14:24 عصر
خب این مشکل ماله وقتی هست که تگ های فارسی رو در اس کیو ال بین N' ' نمیزارن ! یه Value به انگلیسی و یکی دیگه به فارسی Insert کن ، اگه درست درست نشد به اونجایی که ازش سرور رو خریدی بگو ، شاید اصلا این نسخه از Apache که الان داری ازش استفاده میکنی ، utf-8 رو ساپورت نمیده !

MMSHFE
شنبه 12 مرداد 1392, 14:35 عصر
کدتون رو هم بگذارین (کد PHP که از دیتابیس میخونید و توی مرورگر درست نشون میده).

Sepax1
شنبه 12 مرداد 1392, 14:36 عصر
سروری نخریدم من . این روی wamp ه . تو خود ه کد هم بین Value ها ' ' هست .

Sepax1
شنبه 12 مرداد 1392, 14:37 عصر
اینم کد ;) . یه قطعه کد ه خیلی سادست .


<?php
$connection = mysql_connect("localhost","root","");
if(!$connection){
die("Error in Connection to the DB " . mysql_error());
}
$db_select = mysql_select_db("tash", $connection);
if(!$db_select){
die("Error in Selection DB " . mysql_error());

}
?>

<?php
$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$number = $_POST["numbers"];
$sefaresh_name = $_POST["sefaresh_name"];
$sefaresh_code = $_POST["sefaresh_code"];
$sefaresh_adad = $_POST["sefaresh_adad"];


$query = " INSERT INTO sefaresh (
first_name , last_name , number , sefaresh_name , sefaresh_code , sefaresh_adad )
VALUES ( '{$first_name}' , '{$last_name}' , {$number} ,
'{$sefaresh_name}' , '{$sefaresh_code}' , '{$sefaresh_adad}')";
$result = mysql_query($query , $connection);
if($result){
header("Location: index.php");
} else {
header("Location: sefaresh.php");
echo "<p>Error</p>";
echo mysql_error();
}
?>
<?php mysql_close($connection);?>

Sepax1
شنبه 12 مرداد 1392, 15:47 عصر
چی شد پس ؟؟؟؟

MMSHFE
شنبه 12 مرداد 1392, 15:47 عصر
دوست عزیز، شما کجای کدتون تمام مواردی که توی تاپیک پرسشهای تکراری گفته شده رو رعایت کرده بودین؟ این کد اصلاح شده شما:


<?php
if(isset(
$_POST['first_name'],
$_POST['last_name'],
$_POST['number'],
$_POST['sefaresh_name'],
$_POST['sefaresh_code'],
$_POST['sefaresh_adad']
)) {
mysql_connect('localhost', 'root', '') or die('Error in Connection to the DB');
mysql_select_db('tash') or die('Error in Selecting DB');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
$post = array_map(mysql_real_escape_string, $_POST);
$query = "
INSERT INTO `sefaresh`
(
`first_name`,
`last_name`,
`number`,
`sefaresh_name`,
`sefaresh_code`,
`sefaresh_adad`
)
VALUES (
'{$post['first_name']}',
'{$post['last_name']}',
'{$post['number']}',
'{$post['sefaresh_name']}',
'{$post['sefaresh_code']}',
'{$post['sefaresh_adad']}'
)";
$result = mysql_query($query);
if($result && mysql_affected_rows() > 0) {
mysql_close();
header('Location: index.php');
exit();
}
else {
mysql_close();
header('Location: sefaresh.php');
exit();
}
}
?>

توی کد شما، توی کدوم قسمت کوئری 'SET NAMES 'utf8 اجرا شده بود؟ لطفاً بیشتر دقت کنید.

Sepax1
شنبه 12 مرداد 1392, 16:12 عصر
من تو کوئری SET NAMES 'utf8 زده بودم ولی تغییری نکره بود . به خاطر همین پاکش کرده بودم .

الان من این کد شما رو هم گذاشتم اصلا" ری دایرکت نمیشه به صفحه ی ایندکس یا سفارش . تو همون صفحه ایی که داره INSERT می کنه میمونه .

MMSHFE
شنبه 12 مرداد 1392, 16:13 عصر
mysql_error رو چاپ کنید ببینید خطا از کجاست.

Sepax1
شنبه 12 مرداد 1392, 16:28 عصر
درست شد درست شد .
خیلی ممنون آقای شهرکی .

ایرادش این بود که من اون 2 تا کوئری ها رو باهم تست نکرده بودم . جدا جدا تست کرده بودم که حل نمیشد .

dvdlar2005
چهارشنبه 01 مرداد 1393, 13:02 عصر
آقا منم همین مشکل دارم.ولی از ویبولتین استفاده می کنم و خودم از برنامه نویسی سر در نمیارم
کسی می تونه کمکم کنه؟

dvdlar2005
چهارشنبه 01 مرداد 1393, 14:49 عصر
آقا منم همین مشکل دارم.ولی از ویبولتین استفاده می کنم و خودم از برنامه نویسی سر در نمیارم
کسی می تونه کمکم کنه؟