PDA

View Full Version : نحوه جستجو عبارات فارسی



vahidth
شنبه 11 مهر 1394, 09:03 صبح
سلام دوستان نحوه جستجو عبارات فارسی به چه صورته در دیتابیس

میشه یه نوع کد بزارید که یه تکس باکس باشه و اطلاعات رو بر اساس نام جستجو کنه و نمایش بده و عبارات فارسی رو هم پشتیبانی کنه

ravand
یک شنبه 12 مهر 1394, 09:42 صبح
سلام دوستان نحوه جستجو عبارات فارسی به چه صورته در دیتابیس

میشه یه نوع کد بزارید که یه تکس باکس باشه و اطلاعات رو بر اساس نام جستجو کنه و نمایش بده و عبارات فارسی رو هم پشتیبانی کنه
اینکه عبارت فارسی رو جستجو نمیکنه برای اینه که شما Collation دیتابیس را در قسمت ثبت ، نام دیتابیس utf8_persian_ci انتخاب نمیکنی.
حالا میخوای در چند فیلد جستجو کنی یا یک فیلد یا حروف شبیه را در یک فیلد جستجو کنی کدومش؟

vahidth
دوشنبه 13 مهر 1394, 14:59 عصر
اینکه عبارت فارسی رو جستجو نمیکنه برای اینه که شما Collation دیتابیس را در قسمت ثبت ، نام دیتابیس utf8_persian_ci انتخاب نمیکنی.
حالا میخوای در چند فیلد جستجو کنی یا یک فیلد یا حروف شبیه را در یک فیلد جستجو کنی کدومش؟

utf8_persian_ci این مورد در هر دو جدول ست شده
یک فیلد رو میخوام جستجو کنم و بعد از جستجو تو جدول نمایش بدم ممنون میشم کوئری شو برام بنویسید
کد سرچ رو نوشتم منتها دستوران فارسی رو پشتیبانی نمیکنه و میخوام بعد از جستجو کل اطلاعات رکورد جستجو شده رو تو جدول نمایش بدم




<?php include("config.php"); ?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
if(isset($_POST["btn"]))
{
if(empty($_POST["id"]) || empty($_POST["name"]))
{
echo"کادری خالی است";
}
else
{
$sql="select count(*) from prodact where id=? and name=?";
$resualt=$connect->prepare($sql);
$resualt->bindValue(1,$_POST["id"]);
$resualt->bindValue(2,$_POST["name"]);
$resualt->execute();
$num=$resualt->fetchColumn();

if($num==1)
{

echo"کابر مورد نظر پیدا شد";







}
else
{
echo"همچین کاربری در بانک موجود نمی باشد.";
}




}
}
?>
<form id="form1" name="form1" method="post">
<p>
<label for="textfield">id:</label>
<input type="text" name="id" id="id">
</p>
<p>
<label for="textfield2">name:</label>
<input type="text" name="name" id="name">
</p>
<p>
<input type="submit" name="btn" id="btn" value="Search">
</p>
</form>

<p>&nbsp;</p>
</body>
</html>

ravand
دوشنبه 13 مهر 1394, 15:10 عصر
دستور زیر را قبل از prepare بذار:

$connect->exec("SET CHARACTER SET utf8");

vahidth
دوشنبه 13 مهر 1394, 16:16 عصر
دستور زیر را قبل از prepare بذار:

$connect->exec("SET CHARACTER SET utf8");

مرسی داداش حالا چطور بعد از سرچ کل اطلاعات رو تو جدول(table) نشون بدم؟
بعد از دستور
echo"کابر مورد نظر پیدا شد"; چطور کل اطلاعات تو جدول prodact رو نشون بدم؟ مثال نام - نام محصول - و...

ravand
دوشنبه 13 مهر 1394, 19:10 عصر
این دستورات رو بذار قبل از حلقه:

echo '<table dir="rtl" border="1">';
echo '<tr><th>عملیات</th><th>عنوان</th><th>متن</th></tr>';

اینم بذار داخل حلقه:

echo "<tr>";
$id=$row['id'];
echo '<td><a href="update.php?id='.$row['id'].'"><img src="edit.gif"></a></td>';
$title=$row['title'];
echo "<td>$title</td>";
$msg=$row['msg'];
echo "<td>$msg</td>";
echo "</tr>";

اینم بذار بعد از حلقه:

echo "</table>";

vahidth
دوشنبه 13 مهر 1394, 22:46 عصر
داداش به این صورت نوشتم خطا میده

<?php include("config.php"); ?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
if(isset($_POST["btn"]))
{
if(empty($_POST["id"]) || empty($_POST["name"]))
{
echo"کادری خالی است";
}
else
{
$sql="select count(*) from prodact where id=? and name=?";
$connect->exec("SET CHARACTER SET utf8");
$resualt=$connect->prepare($sql);
$resualt->bindValue(1,$_POST["id"]);
$resualt->bindValue(2,$_POST["name"]);
$resualt->execute();
$num=$resualt->fetchColumn();
echo '<table dir="rtl" border="1">';
echo '<tr><th>Name</th><th>Price</th><th>Information</th></tr>';
if($num==1)
{

echo "<tr>";
$id=$num['name'];
echo "<td>$id</td>"






}
else
{
echo"همچین کاربری در بانک موجود نمی باشد.";
}




}
}
?>
<form id="form1" name="form1" method="post">
<p>
<label for="textfield">id:</label>
<input type="text" name="id" id="id">
</p>
<p>
<label for="textfield2">name:</label>
<input type="text" name="name" id="name">
</p>
<p>
<input type="submit" name="btn" id="btn" value="Search">
</p>
</form>

<p>&nbsp;</p>
</body>
</html>



از echo "<td>$id</td>"

خطا میگیره

ravand
سه شنبه 14 مهر 1394, 08:39 صبح
توی سیستم خودم امتحان کردم :

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>فرم</title>
</head>
<body>
<form id="form1" name="form1" method="post">
<p>
<label for="textfield">id:</label>
<input type="text" name="id" id="id">
</p>
<p>
<label for="textfield2">name:</label>
<input type="text" name="name" id="name">
</p>
<p>
<input type="submit" name="btn" id="btn" value="Search">
</p>
</form>
<?php
if(isset($_POST["btn"]))
{
if(empty($_POST["id"]) || empty($_POST["name"]))
{
die("کادری خالی است");
exit;
}else{
$id=$_POST["id"];
$name=$_POST["name"];
$connect = new PDO('mysql:host=localhost;dbname=test','root','');
$connect->exec("SET CHARACTER SET utf8");
$resualt=$connect->prepare("select * from `ravand` where id=:id AND name=:name");
$resualt->bindParam(':id', $id, PDO::PARAM_INT);
$resualt->bindParam(':name', $name, PDO::PARAM_STR);
$resualt->execute();
$rows = $resualt->fetchAll();
//تعداد رکوردها
$num_rows = COUNT($rows);
if($num_rows==0){
echo "مقداری وجود ندارد";
}else{
echo '<table dir="rtl" border="1">';
echo '<tr><th>شماره</th><th>نام</th><th>نام خانوادگی</th></tr>';
$resualt->execute();
foreach($resualt as $row) {
echo "<td>".$row['id']."</td>";
echo "<td>".$row['name']."</td>";
echo "<td>".$row['lastname']."</td>";
}
}
}
}
?>
</body>
</html>

vahidth
سه شنبه 14 مهر 1394, 10:24 صبح
مرسی داداش درست شد یه سوال من نمیدونم کی باید از
()fechcolumn
()fetchAll

استفاده کنم یکم در این باره توضیح میدی در کجا ها باید از اینا استفاده کرد؟
برای جستجو بین دو تاریخ باید چیکار کنم؟

ravand
سه شنبه 14 مهر 1394, 12:45 عصر
fetchColumn :
<?php
$db = new PDO('mysql:host=localhost;dbname=test','root','');
$db->exec("SET CHARACTER SET utf8");
$pics = $db->query('SELECT * FROM ravand');
$totalpics = $pics->fetchColumn(2);
echo $totalpics;
$db = null;
?>

وقتی عدد 2 بهش میدیم مقدار سومین فیلد را بهمون نشون میده.

$connect = new PDO('mysql:host=localhost;dbname=test','root','');
$connect->exec("SET CHARACTER SET utf8");
$resualt=$connect->prepare("select * from `ravand`");
$resualt->execute();
print_r($resualt->fetchAll());

تفاوت بین fetch و fetchall در pdo :
fetchall همه رکوردهای برگشتی رو یک جا به صورت ارایه برگشت می ده اما fetch در هر بار یک سطر رو برگشت می ده.

بین دو تاریخ:

SELECT * FROM `tarikh` WHERE tarikh BETWEEN :az AND :ta