هل ممكن تعدلون على الكود التالي من اجل جعله يبحث في عدة جداول وليس في جدول واحد :
مثال عندي جداول: products,car,wod,sellhome,وووو فكيف اضيف الجداول هذه في الكود من اجل البحث في داخلهم بدل في جدول واحد فقط؟
<section class="products" style="padding-top: 0; min-height:100vh;">
<div class="box-container">
<?php
if(isset($_POST['search_btn'])){
$search_box = $_POST['search_box'];
$search_box = filter_var($search_box, FILTER_SANITIZE_STRING);
$select_products = $conn->prepare("SELECT * FROM `products` WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%' OR details LIKE '%{$search_box}%'");
$select_products->execute();
if($select_products->rowCount() > 0){
while($fetch_products = $select_products->fetch(PDO::FETCH_ASSOC)){
?>
<form action="" class="box" method="POST" id="shop">
<div class="price">السعر:<span><?= $fetch_products['price']; ?></span></div>
<div class="moheeb1"><?= $fetch_products['date']; ?></div>
<a href="viewpage.php?pid=<?= $fetch_products['id']; ?>">
<img src="uploaded_img/<?= $fetch_products['image']; ?>" style="max-width:30%;height: auto;border-radius:20px;width:50;height:50;" alt="">
</a>
<a href="viewpage.php?pid=<?= $fetch_products['id'];?>"><div class="moheeb2"><?= $fetch_products['name']; ?></div></a>
<input type="hidden" name="pid" value="<?= $fetch_products['id']; ?>">
<input type="hidden" name="p_name" value="<?= $fetch_products['name']; ?>">
<input type="hidden" name="p_price" value="<?= $fetch_products['price']; ?>">
<input type="hidden" name="p_image" value="<?= $fetch_products['image']; ?>">
</form>
<?php
}
}else{
echo '<p class="empty">ليس هناك إعلان بالذي بحثت عنه</p>';
}
};
?>
</div>
</section>
التعليقات
هل الجداول جميعها لها نفس عدد وأسماء الاعمدة ؟
يمكنك استخدام UNION Opertaor فى الامر الخاص بقاعدة البيانات وهو ما يتيح لك تجميع جميع النتائج فى متغير واحد
وهذ هو الكود إذا كانت جميع الاسماء واحده . وبهذا يكون لديك جميع البينات من جميع الجداول فى المتغير selected_products$
$select_products = $conn->prepare("SELECT id,name,image,price,date FROM `products`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `car`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `sellhome`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `wod`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
");
هذه هي الجداول تبعي في قاعدة البيانات فهل الكود صحيح
$select_products = $conn->prepare("SELECT * FROM `products`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `car`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `sellhome`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `alic`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `shos`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `moto`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `big`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `tool`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `job`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `honey`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `tmr`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `mid`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `acses`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
UNION
SELECT id,name,image,price,date FROM `jmla`
WHERE name LIKE '%{$search_box}%' OR category LIKE '%{$search_box}%'
OR details LIKE '%{$search_box}%'
");
نعم ولكن فى اول سطر لا تستخدم SELECT * ولكن استخدم ال SELECT كما فى باقى الجداول لان UNION تستلزم
ان يكون عدد الاعمدة واحد مثلا اذا اردت استرجاع 4 اعمدة من جدول products فيجب ايضا ان تسترجع 4 اعمدة فى جميع الجداول لا اقل ولا اكثر وايضا بالترتيب .
لان UNION تقوم بتجميع البيانات من جميع الجداول وتضعهم فى ناتج واحد فيجب ان يكون عدد وترتيب الاعمدة واحد فى جملة SELECT
واياكم اللهم آمين .
نعم يمكنك اضافة اى جداول اخرى ولا يهم الترتيب إن كانت فى بداية او نهاية الكود الحالى .
ولكن حاول ألا تكثر من الجداول حتى لا يتم استخدام موارد الجهاز كثيرا و يؤدى الى بطئ الموقع .
يمكنك ان تضيف مثلا input تحدد من خلاله أى جدول يقوم بالبحث من خلاله .
مفهوم حاضر اخي في الله
-ممكن خدمة اخرى صغنونة ولك الاجر باذن الله تعالى وهي نفس المشكلة ولكن في خاصية العرض:
انا استعمل لعرض المنتجات من جدول واحد فقط ولهذا بعد اريد ان اعرض من اي جدول يستدعي لي البيانات
ممكن تعدل عليه واسال الله ان يحشرك في زمرة الانبياء:
<section class="quick-view">
<h1 class="title">عرض الإعلان</h1>
<?php
$pid = $_GET['pid'];
$select_products = $conn->prepare("SELECT * FROM `products` WHERE id = ? ORDER BY id DESC");
$select_products->execute([$pid]);
if($select_products->rowCount() > 0){
while($fetch_products = $select_products->fetch(PDO::FETCH_ASSOC)){
?>
<form action="" class="box" method="POST">
<div class="price">السعر:<span><?= $fetch_products['price']; ?></span></div>
<div class="moheeb1"><?= $fetch_products['date']; ?></div>
<img src="uploaded_img/<?= $fetch_products['image']; ?>" style="max-width:100% ;height: 300px;width:150;"alt="">
<div class="name"><h2 class="moheeb2"><?= $fetch_products['name1']; ?><?= $fetch_products['name']; ?></h2></div>
<center>
<table class="center">
<tr>
<td>
<div class="moheeb3"><?= $fetch_products['place']; ?></div>
</td>
<td>
<img src="icon/map.png" style="max-width:100% ;height: 30px;width:3020;"alt="">
</td>
</tr>
</table>
</center>
<br>
<h6>التفاصيل<h6>
<div class="details"><h1><?= $fetch_products['name2']; ?></h1><?= $fetch_products['details']; ?></div>
<input type="hidden" name="pid" value="<?= $fetch_products['id']; ?>">
<input type="hidden" name="p_name" value="<?= $fetch_products['name']; ?>">
<input type="hidden" name="p_price" value="<?= $fetch_products['price']; ?>">
<input type="hidden" name="p_image" value="<?= $fetch_products['image']; ?>">
<a dir="rtl" href="https://wa.me//<?php echo $fetch_products['city'];?><?php echo $fetch_products['number'];?>?text= [الموقع:www.soqhrag.com]
السلام عليكم ورحمة الله وبركاته
[أنا أريد شراء الذي أعلنت عنه في الموقع]]
اسم السلعة: <?php echo $fetch_products['name']; ?>
المكان : <?php echo $fetch_products['place']; ?>
السعر: <?php echo $fetch_products['price']; ?>
التفاصيل: <?php echo $fetch_products['details']; ?>
رابط الإعلان: $fetch_products['id']; ?>">
<img src="icon/whatsapp.png"style="max-width:100%;height: auto;border-radius:10px;width:180;height: 80px;px"></a>
<a href="https://api.whatsapp.com/se... لهذا الإعلان أريد أن اشاركه معك وأظنه سوف يعجبك كثيراً $fetch_products['id']; ?>"><img src="icon/whatsap.png"style="max-width:100%;height: auto;border-radius:10px;width:180;height: 80px;px"></a><br>
<a href="uploaded_img/<?= $fetch_products['image']; ?>" download="<?= $fetch_products['image']; ?>"><img src="icon/down.png" style="max-width:100%;height: auto;border-radius:10px;width:60px;;;height: 60px;;;" alt="no Inter NeT"><h1>اضغط لتحميل صورة الإعلان</h1></a>
</form>
<?php
}
}else{
echo '<p class="empty">ليس هناك إعلانات</p>';
}
?>
</section>
لا يهمك أخى فى الله إن شاء الله انا فى مساعدتك ما دمت قادرا على ذلك وحشرنا الله واياكم فى الفردوس جميعا .
لا أخى لا أحبذ هذه الطريقة حسث يجب ان يكون العرض خاص بجدول واحد فقط .
حيث يمكن ان يحدث مشاكل إذا صادف وكان هناك اكثر من جدول يحتوى على نفس ال id
الافضل ان تنشئ ملف مختلف لكل جدول وتضعه فى مسار مختلف حيث يبقى عنوان ال url مثل هذا .
product.php?pid=1
car?pid=1
وفى كل ملف تغير فقط اسم الجدول .
نعم ممكن ان ترسل اسم الجدول الذى تريد البحث فيه ولكن لا يمكن ان تبحث فى اكثر من جدول وهذا هو الكود .
$pid = $_GET['pid'];
$table = $_GET['table'];
$select_products = $conn->prepare("SELECT * FROM ? WHERE id = ? ORDER BY id DESC");
$select_products->execute([$table,$pid]);
ولكن لا افضل هذه الطريقة حيث يمكن ان تحتوى على ثغرات امنيه