hamidhassas
دوشنبه 26 اسفند 1392, 20:09 عصر
دراینجا یک تکنیک برای جستجوی سریع در دیتابیس قرار میدم کاربرد این تکنیک بیشتر زمانی است که شما بخواهید مثلا با وارد کردن اسم یک شخص در همون لحظه کل اسامی که با نام وارد شده در تکس باکس است لیست بشه مشکل این تکنیک اینه که با فارسی مشکل دارد و مقادیر انگلیسی را لیست میکنه اگه کسی میتونه کمک کنه تا با فارسی هم مشکلش حل بشه
کد صفحه 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;
?>
کد صفحه 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;
?>