💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۷ حامد زالوند
سوال در مورد ajax
جامعه برنامه نویسی وب ایجاد شده در ۰۷ دی ۱۴۰۲

سلام وقت بخیر 

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

مثلا نوشتم موبایل تو فرم جستجو لیست موبایل‌ها رو نشون بده 

ممنون میشم تو این باره توضیحات کافی رو بدی 

سلام

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

 فرم جستجو:

<!DOCTYPE html>
<html lang="fa">
<head>
   <meta charset="UTF-8">
   <title>جستجوی موبایل</title>
   <!-- اضافه کردن jQuery -->
   <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body>
   <form id="searchForm">
       <label for="searchTerm">کلمه جستجو:</label>
       <input type="text" id="searchTerm" name="searchTerm">
       <input type="submit" value="جستجو">
   </form>
   <!-- نمایش لیست نتایج -->
   <div id="searchResults"></div>
   <script>
       // jQuery برای ارسال درخواست ایجکس
       $(document).ready(function(){
           $("#searchForm").submit(function(e){
               e.preventDefault(); // جلوگیری از ارسال فرم به صفحه دیگر
               var searchTerm = $("#searchTerm").val();
               // ارسال درخواست ایجکس به فایل PHP
               $.ajax({
                   type: "POST",
                   url: "search.php",
                   data: { searchTerm: searchTerm },
                   success: function(response){
                       $("#searchResults").html(response);
                   }
               });
           });
       });
   </script>
</body>
</html>

 فایل پردازش جستجو (search.php):

داخل این فایل ما میایم به دیتابیسمون متصل میشیم و عبارتی که کاربر جست و جو کرده و توسط ایجکس به این فایل رسیده رو داخل جدول مربوط به لیست موبایل‌ها سرچ میکنیم که اگر عبارت شبیهش وجود داشت نتیجه رو برگردونه و در فایل html ما نمایش داده بشه و اومدیم توسط یک حلقه یک نتیجه بصورت html برگردوندیم که ظاهر بهتری داشته باشه. 

دقت کنید که پروژه رو روی لوکال هاست اجرا کنید و در پوشه htdocs استفاده بشه چون درخواست ایجکس باید ارسال بشه و به خطای دسترسی نخورید. 

<?php
// اتصال به دیتابیس و جستجو
$servername = "نام_سرور";
$username = "نام_کاربری";
$password = "رمز_عبور";
$dbname = "نام_دیتابیس";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
   die("اتصال به دیتابیس ناموفق بود: " . $conn->connect_error);
}
$searchTerm = $_POST['searchTerm'];
// اجرای کوئری جستجو
$sql = "SELECT * FROM mobiles WHERE mobile_name LIKE '%$searchTerm%'";
$result = $conn->query($sql);
// نمایش نتایج
if ($result->num_rows > 0) {
   while($row = $result->fetch_assoc()) {
       echo "<p>" . $row['mobile_name'] . "</p>";
   }
} else {
   echo "موبایلی یافت نشد.";
}
$conn->close();
?>
احمدرضا فاطمی کیا ۰۷ دی ۱۴۰۲، ۱۹:۲۶

سلام شرمنده شما کد‌های فرم جستجو برام فرستادین من اونا رو کپی کردم گفتم خروجی کار چطور میشه من فقط دیتابیس‌ها رو ست کردم ولی برای من خطا داد 

ممنون میشم بگین کجا مشکل دارم اونارو اصلاح کنم . 

 

 

 

حامد زالوند ۰۸ دی ۱۴۰۲، ۱۰:۱۴

سلام شرمنده شما کد‌های فرم جستجو برام فرستادین من اونا رو کپی کردم گفتم خروجی کار چطور میشه من فقط دیتابیس‌ها رو ست کردم ولی برای من خطا داد 

ممنون میشم بگین کجا مشکل دارم اونارو اصلاح کنم . 

 

 

 

حامد زالوند ۰۸ دی ۱۴۰۲، ۱۰:۱۴
حامد زالوند ۰۸ دی ۱۴۰۲، ۱۰:۱۵

متوجه نشدم

به چه خطایی میخورید؟ 

دیتابیس و جدول رو ساختید؟ 

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

احمدرضا فاطمی کیا ۰۸ دی ۱۴۰۲، ۱۱:۴۰

شرمنده تو این جلسه آقای آوند دیتابیس ایران ساخته بود اونو استفاده کردم  اگه ببینی ست کردم . ولی اونجا اجرای کوئری هست باید اونو چطوری قرار بدم . 

کدی که شما دادین کپی کردم فقط دیتابیس ست کردم . ولی اسم شهر می‌نویسم مینویسه شهری یافت نشد . 

<?php
$conn = new mysqli("localhost", "root", "","iran");
if ($conn->connect_error) {
   die("اتصال به دیتابیس ناموفق بود: " . $conn->connect_error);
}
$searchTerm = $_POST['searchTerm'];
// اجرای کوئری جستجو
$sql = "SELECT * FROM province WHERE '' LIKE '%$searchTerm%'";
$result = $conn->query($sql);
// نمایش نتایج
if ($result->num_rows > 0) {
   while($row = $result->fetch_assoc()) {
       echo "<p>" . $row[''] . "</p>";
   }
} else {
   echo ";شهری یافت نشد.";
}
$conn->close();
?>
حامد زالوند ۰۸ دی ۱۴۰۲، ۱۵:۴۸

کوئری sql اشتباه نوشتید و فیلدی که باید توش سرچ بشه نزدید:

مقدار name رو با فیلدی که نام استان‌ها هست در دیتابیستون تغییر بدید. 

SELECT * FROM province WHERE name LIKE '%$searchTerm%'";
احمدرضا فاطمی کیا ۱۱ دی ۱۴۰۲، ۱۸:۲۸