PDA

View Full Version : سوال: مشکل سرچ با کدهای php در mysql



ehsan_296
چهارشنبه 17 فروردین 1390, 19:01 عصر
باسلام
یه برنامه با کدهای php نوشتم که بعد از انجام سرچ بر روی mysql نتایج انگلیسی رو نشون میده اما نتایج فارسی رو نشون نمی ده.
البته query های مربوط به فارسی نویسی رو ست کرده ام.
mysql_query("SET NAMES 'UTF8'",$con);
mysql_query("SET CHARACTER SET 'UTF8'",$con);
mysql_query("SET character_set_connection = 'UTF8'",$con);
جداول mysql هم به صورت utf8_perisan_ci تنظیم شده است.
کد برنامه به صورت زیر است
<?php
include_once 'functions.php';
if(isset($_POST['find']))
{
$user =$_POST['find'];
if ($user == "")
{
$error = "<p>You forgot to enter a search term</p>";
echo "$error";
}
else
{

$data = mysql_query("SELECT * FROM test2 WHERE (username LIKE '%'$user'%') ");


if($mytest=mysql_num_rows($data) > 0)
{

while($result = mysql_fetch_array( $data ))
{
echo $result['username'];
echo " ";
echo $result['fullname'];
echo "<br>";
echo "<br>";
}
}
else if ($mytest == 0)
{

echo "Sorry, but we can not find an entry to match your query<br><br>";
echo "<b>Searched For:</b> " .$user;
}
}
}
echo <<<_END
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
<HTML><head>
</head><body>
<h2>Search</h2>
<form name="search" method="post" action="search.php">
Seach for: <input type="text" name="find" /> in
<Select NAME="field">
<Option VALUE="username">username</option>
<Option VALUE="fullname">fullname</option>
</Select>
<input type="submit" name="search" value="Search" />
</form> </body></html>
_END;
?>

$ M 3 H R D A D $
چهارشنبه 17 فروردین 1390, 19:07 عصر
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $con);

MMSHFE
چهارشنبه 17 فروردین 1390, 19:18 عصر
با سلام، دوست گرامي، فقط يكي از اين دستورات رو بنويسيد، بعضيهاشون با هم تداخل دارن:


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

موفق باشيد.

ehsan_296
پنج شنبه 18 فروردین 1390, 07:26 صبح
سلام
اینو امتحان کردم نشد.
فکر می کنم اصلا به این ربطی نداشته باشه.
یعنی به نظرم وقتی داده از html وارد php میشه یا وقتی که از فایل php کلمه میخواد در پایگاه داده سرچ بشه اشکال پیش میاد.
$data = mysql_query("SELECT * FROM test2 WHERE (username LIKE '%'$user'%') "); مثلا اینجا
شاید نحوه فرستاد در اینجا اشتباه باشه؟؟؟

MMSHFE
پنج شنبه 18 فروردین 1390, 08:22 صبح
با سلام، اينو امتحان كنيد:


$data = mysql_query("SELECT * FROM test2 WHERE (`username` LIKE '%$user%')");

موفق باشيد.

ehsan_296
پنج شنبه 18 فروردین 1390, 10:18 صبح
سلام
این هم جواب نداد.
به نظر شما مشکل می تونه از کجاها باشه؟
با تشکر

ehsan_296
پنج شنبه 18 فروردین 1390, 11:46 صبح
سلام مجددددددد
به جای دستور
$data = mysql_query("SELECT * FROM test2 WHERE (`username` LIKE '%$user%')");
یه دستور select * نوشتم که یک فیلد فارسی موجود در دیتا بیس رو اینطوری برگردوند:
ط­ط³غŒظ†

chaown
پنج شنبه 18 فروردین 1390, 15:02 عصر
collation های تویه دیتابیس از نوعه utf8_persian_ci باشه و قبل از هر کوئری تویه صفحه این کد رو بزار

mysql_query("set names utf8");

راستی کد html صفحه هم باید utf8 رو بشناسه
اینو تویه تگها head بذار

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

ehsan_296
پنج شنبه 18 فروردین 1390, 15:45 عصر
پیام تشکر
باسلام
بالاخره با راهنمایی های مفید دوستان برنامه نویس مشکل ما با موفقیت حل شد.
از زحمات شما متشکرم.