آموزش و سوال: جستجو در دیتابیس به صورت ajax live search
دراینجا یک تکنیک برای جستجوی سریع در دیتابیس قرار میدم کاربرد این تکنیک بیشتر زمانی است که شما بخواهید مثلا با وارد کردن اسم یک شخص در همون لحظه کل اسامی که با نام وارد شده در تکس باکس است لیست بشه مشکل این تکنیک اینه که با فارسی مشکل دارد و مقادیر انگلیسی را لیست میکنه اگه کسی میتونه کمک کنه تا با فارسی هم مشکلش حل بشه
کد صفحه index.html
<!DOCTYPE html>
<html>
<head>
<title>مثال کاربرد Ajax در PHP</title>
<script type="text/javascript">
function showHint(str) {
var xmlhttp;
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
}
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "search.php?q=" + str, true);
xmlhttp.send();
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="text-align: right; direction: rtl">
<h3>
کاراکتری را در جدول زیر وارد نمایید ( به زبان انگلیسی ) :</h3>
<form action="">
نام :
<input type="text" id="txt1" onkeyup="showHint(this.value)" />
</form>
<p>
پیشنهادات : <span id="txtHint"></span>
</p>
</body>
کد صفحه search.php
<?php
require_once("../../../include/membersite_config.php");
software_connection($username,$password,$software_ database);
mysql_query('SET NAMES \'utf8\'');
$sql=mysql_query('select * from `product_services` where `name_family` LIKE %'.$q.'% ORDER BY `product_id` DESC');
// لیست نام های مثال
while($row = mysql_fetch_array($sql))
{
$a[]=$row['name_family'];
}
// از صفحه مبدا q دریافت پارامتر
$q = $_GET["q"];
// جستجو برای نام مورد نظر در صورت وارد کردن مقداری از سوی کاربر
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint==" ")
{
$hint=$a[$i];
}
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}
// اگر نتیجه ای پیدا نشد ، عبارت بدون نتیجه تعیین شود
// یا اینکه جواب خروجی ارسال شود
if ($hint == "")
{
$response="موجود نیست";
}
else
{
$response=$hint;
}
// ارسال نتیجه خروجی به صفحه مبدا - دستور ایجکس
echo $response;
?>
نقل قول: آموزش و سوال: جستجو در دیتابیس به صورت ajax live search
فک نمیکنم تو فارسی مشکلی داشته باشه، ضمن ایینکه برای این کارا بهتره از جیکوئری استفاده کنی
نقل قول: جستجو در دیتابیس به صورت ajax live search
نقل قول:
نوشته شده توسط
فرزند کوروش
فک نمیکنم تو فارسی مشکلی داشته باشه، ضمن ایینکه برای این کارا بهتره از جیکوئری استفاده کنی
من رو سیستم چک کردم وقتی فارسی تایپ میکنم عمل نمیکنه ولی با انگلیسی عمل میکنه و هیچ مشکلی نداره
خو اگر لطف کنید با جیکوئری آموزش بدین ممنون میشم
نقل قول: آموزش و سوال: جستجو در دیتابیس به صورت ajax live search
این برنامه چطوری کار می کنه اصن?!
پارامتر ارسالی رو قبل از اینکه با متد GET بگیری تو کوئری استفاده کردی ازش.
کوئری اگر نتیجه ای نداشت نباید fetch بشه شما اول fetch کردی بعد رشته ای که وجود نداره رو اندازه اش رو بررسی کردی؟
توی کد جاوا اسکریپت هم به نظرم بهتره با هر keyup مقدار رو ارسال نکنی.من با یه تاخیر بین نیم تا یک ثانیه مقدار رو ارسال می کنم.اینطوری میشه بذاری به حساب اینکه کاربر ورودی ش رو وارد کرده و تموم شده.اینطوری بار سرور کمنر میشه.
با فارسی هم مشکل نداره.