PDA

View Full Version : جستجو ایجکسی در یک فیلد



رضا قربانی
یک شنبه 03 آبان 1394, 23:01 عصر
سلام و خسته نباشید خدمت همگی دوستان

من یک تکس باکس دارم و قراره داخلش شماره تلفن وارد بشه و من می خوام زمانی که یک شماره تلفن وارد شد اگر شماره در بانک وجود داشت بدون اینکه صفحه رفرش بشه کنار تکس باکس شماره نمایش داده شه که مثلا این شماره وجود داره.

دوستان اگر کمکی از دستتون بر میاد ممنون میشم راهنماییم کنید

با برنامه نویسی که جستجو کنه و از بانک بخونه مشکلی ندارم . من مشکلم روی ایجکسی بودنه .

با تشکر

Unique
دوشنبه 04 آبان 1394, 01:11 صبح
با زهم نگفتی کجاش مشکل درای ولی من برای چنین input ها و سناریو هایی از autocomplete استفاده میکنم. این یک نمونه خوبش (https://github.com/devbridge/jQuery-Autocomplete). خودش ajax را برات مدیریت میکنه. کافیه خروجی json یا text درست با header مناسب توی فایل php برگردونی. مثال هم داره.

رضا قربانی
دوشنبه 04 آبان 1394, 15:52 عصر
با زهم نگفتی کجاش مشکل درای ولی من برای چنین input ها و سناریو هایی از autocomplete استفاده میکنم. این یک نمونه خوبش (https://github.com/devbridge/jQuery-Autocomplete). خودش ajax را برات مدیریت میکنه. کافیه خروجی json یا text درست با header مناسب توی فایل php برگردونی. مثال هم داره.

کلشو مشکل دارم.
یه فیلدی که وقتی همزمان که شماره رو داخلش وارد می کنی همزمان جستجو می کنه که در بانک وجود داره یا نه و اگر وجود داشت شماره مورد نظر رو کنار فیلد لینک کنه که مثلا مدیر بره اطلاعاتشو ببینه .

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

Unique
سه شنبه 05 آبان 1394, 00:52 صبح
این چیزی که شما دادید از پیش تعریف شده و رکوردهایی که جستجو می کنه از فایل JS میخونه
نه آقا رضا اینطوری نیست، شما وقتی چنین js ی را فعال کنی :

$('#input_field_id').autocomplete({
serviceUrl: 'tel_numbers.php',
dataType: 'json',
onSelect: function (suggestion) {
$("#tel_number").html("<a href='edit.php?id=" + suggestion.data + "'>" + suggestion.value + "</a>");
}
});

حالا وقتی کاربر چیزی را تایپ کنه به آدرسی که قرار دادی پارامتری به نام query را با GET ارسال میکنه که شما اون را میگیری و توی پایگاه جستجو میکنی و مقادیری که پیدا میشه را به صورت json توی فرمت زیر بر میگردونی :


// Query was : "09121"
{
"suggestions": [
{ "value": "0912145XXXX", "data": "45" },
{ "value": "0912125XXXX", "data": "57" },
{ "value": "0912115XXXX", "data": "90" }
]
}

خیلی ساده هستش. کمی دقت میخواد.

milad_d993
چهارشنبه 06 آبان 1394, 00:10 صبح
آموزش جستجو مطالب به شیوه آژاکس (http://www.daneshjooyar.com/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%B3%D8%AA%D9%88%D8%AC%D9%88-%D9%85%D8%B7%D8%A7%D9%84%D8%A8-%D8%A8%D9%87-%D8%B4%DB%8C%D9%88%D9%87-%D8%A2%DA%98%D8%A7%DA%A9%D8%B3/) (ای جکس)

رضا قربانی
چهارشنبه 06 آبان 1394, 12:41 عصر
آموزش جستجو مطالب به شیوه آژاکس (http://www.daneshjooyar.com/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%B3%D8%AA%D9%88%D8%AC%D9%88-%D9%85%D8%B7%D8%A7%D9%84%D8%A8-%D8%A8%D9%87-%D8%B4%DB%8C%D9%88%D9%87-%D8%A2%DA%98%D8%A7%DA%A9%D8%B3/) (ای جکس)

این آموزش شما بازم یک submit وسطه و کاربر باید روش کلیک کنه تا اطلاعات ارسال بشه . راهی وجود نداره که این submit حذف بشه ؟

رضا قربانی
چهارشنبه 06 آبان 1394, 12:43 عصر
نه آقا رضا اینطوری نیست، شما وقتی چنین js ی را فعال کنی :

$('#input_field_id').autocomplete({
serviceUrl: 'tel_numbers.php',
dataType: 'json',
onSelect: function (suggestion) {
$("#tel_number").html("<a href='edit.php?id=" + suggestion.data + "'>" + suggestion.value + "</a>");
}
});

حالا وقتی کاربر چیزی را تایپ کنه به آدرسی که قرار دادی پارامتری به نام query را با GET ارسال میکنه که شما اون را میگیری و توی پایگاه جستجو میکنی و مقادیری که پیدا میشه را به صورت json توی فرمت زیر بر میگردونی :


// Query was : "09121"
{
"suggestions": [
{ "value": "0912145XXXX", "data": "45" },
{ "value": "0912125XXXX", "data": "57" },
{ "value": "0912115XXXX", "data": "90" }
]
}

خیلی ساده هستش. کمی دقت میخواد.

داداشی گلم امکانش هست استاتیکشو برام بنویسی و ضمیمه کنی ؟ :ناراحت:

mojooriass
چهارشنبه 06 آبان 1394, 14:01 عصر
برای این کار یک فیلد به صفحه html طبق مثال زیر اضافه کنید:


<input type="text" onkeyup="search()" id="search"/>
<div id="result"></div>

و یک تابع جاوا اسکریپ هم به این صورت بنویسید :


function search() {
var search = $("#search").val();
$.ajax({
type: "POST",
url: "http://yoursite.com/search.php",
data: 'search=' + search,
success: function (data) {
$('#result').html(data);
}
});
}

در اخر هم تو فایل php به کمک یه دستور ساده مقادیر از دیتابیس بگیرید و چاپ کنید مانند زیر :


$sql=$this->con->prepare('select * from test where content LIKE ?');
$sql->execute(array($_post['search']));
$res=$sql->fetchAll();
foreach($res as $rows){
echo $rows['content'];
}

milad_d993
چهارشنبه 06 آبان 1394, 14:16 عصر
این آموزش شما بازم یک submit وسطه و کاربر باید روش کلیک کنه تا اطلاعات ارسال بشه . راهی وجود نداره که این submit حذف بشه ؟

شما با جاوااسکریپت یا جی کوئری کار نکردین؟؟؟؟:اشتباه::افسرده:

رضا قربانی
چهارشنبه 06 آبان 1394, 15:51 عصر
شما با جاوااسکریپت یا جی کوئری کار نکردین؟؟؟؟:اشتباه::افسرده: من به دلیل یک سری مشکلات و شرایط بعد یک سالو نیم دارم دوباره شروع می کنم و شرمنده بابت سوال هام .
اگر امکانش هست استاتیک برام ضمیمه کنید ممنون میشم

H:Shojaei
چهارشنبه 06 آبان 1394, 16:47 عصر
این سوال شما!
اینو من توی یکی از پروژه ها به شکل دیگه انجامش داده بودم که جستجو انجام میشد و لیستی زیر کادر جستجو نشون داده میشد و میتونست طرف انتخاب کنه:

$('input[name="number"]').keyup(function (event) {
number=$(this).valu();
mthis = $(this);
if (number != '')
{
$('.popover-person').children('.popover-content').html('موردی یافت نشد...');
selectUser(mthis);
}
});
//ajax----
function selectUser(mythis)
{
ajaxStart();
$.ajax({
type: 'POST',
url: window.location.origin + '/ajaxes/invite.php',
data: {action: 'search', number: number, token: ajaxRequest},
dataType: 'json',
success: function (data) {
response=data['response'];
answer=data['answer'];
switch(response)
{
case 1:
data=data['data'];
if (data['rows'].length > 0)
{
numbers = '<div>';
for (i = 0; i < data['rows'].length; i++)
{
numbers += '<div><a class="anumber" href="" sid="' + data['rows'][i]['id'] + '" number="' + data['rows'][i]['number'] + '">' + data['rows'][i]['name'] + '</a>: </div>';
}
numbers += '</div>';
$('.popover-numbers').children('.popover-content').html(numbers);


$('.popover-person').css({'position': 'absolute ', 'left': 'auto', 'top': mthis.offset().top + 15, 'right': mthis.offset().left + 'px', 'display': 'block','padding':'10px 20px'});
}
break;
ajaxEnd();
}
},error:function(){
ajaxEnd();
myPrompt('searchUser');
}
});
}
phpش هم که مشکلی ندارید فکر کنم دیگه...

Unique
چهارشنبه 06 آبان 1394, 23:57 عصر
من به دلیل یک سری مشکلات و شرایط بعد یک سالو نیم دارم دوباره شروع می کنم و شرمنده بابت سوال هام .
چرا شرمنده ؟!،‌ اتفاقا عجیب بود یه مدت طولانی نبودین. امیدوارم همیشه با شادی و سلامتی بگذره.


اگر امکانش هست استاتیک برام ضمیمه کنید ممنون میشم
آقا رضا دیگه اونقدر هم جدید نیستی که ندونی کسی سورس کد نمینوسه توی انجمن و در حد همین مثال ها هم عموما کسی نمینویسه. مطلب جالبی برای وبلاگم میشه و حتما بهش اصافه میکنم اما متاسفانه الان امکانش نیست.

رضا قربانی
پنج شنبه 07 آبان 1394, 16:36 عصر
تشکر از دوست عزیزم mojooriass (http://barnamenevis.org/member.php?265053-mojooriass)

بهترین و ساده ترین و بهینه ترین روشو بهم پیشنهاد داد . ( فقط داخل form نمیشه ازش استفاده کرد و نمیدونم مشکلش کجاست)
و تشکر از همه دوستان:قلب:
موفق باشید