عبدالله القحطاني10 نشر 8 نوفمبر 2021 أرسل تقرير نشر 8 نوفمبر 2021 (معدل) السلام عليكم وضعت كود البحث في الصفحة الرئيسية للموقع ليبحث في قاعدة البيانات ،يعمل بشكل ممتاز. اريد عند البحث عن كلمة غير موجودة في القاعدة يعطي خطا ( الكلمة غير موجودة في القاعدة ) او يرجعة للصفحة الرئيسية ! <form action="test.php" > <div class="container"> <div class="row height d-flex justify-content-center align-items-center"> <div class="col-md-8"> <div class="search"> <input type="text" name="search" class="form-control" placeholder=" كلمة البحث" > <button class="btn btn-primary">بحث </button> </div> </div> </div> </div> </form> <?php $host = "localhost"; $name = "#####"; $pass = "####"; $dbname = "###"; $connection = mysqli_connect($host,$name,$pass,$dbname); mysqli_query($connection,"set character_set_server='utf8mb4_general_ci'"); mysqli_query($connection,"set names 'utf8mb4_general_ci'"); if (!$connection) { die(); } $get_news_sql = "SELECT * FROM info WHERE Country like '". $_GET['search']."'" ; $get_news_sql = mysqli_query($connection, $get_news_sql); while ($row = mysqli_fetch_array($get_news_sql)) { $Country =$row['Country']; $Flag= $row['Flag']; $Capital= $row['Capital']; } ?> يستطيع المستخدم عند البحث باسم الدولة ايجاد المطلوب ، هل استطيع عند البحث باسم الدولة او العاصمة ايجاد المطوب وشكراً تم التعديل في 8 نوفمبر 2021 بواسطة شرف الدين2 توضيح العنوان 2 اقتباس
0 شرف الدين حفني نشر 8 نوفمبر 2021 أرسل تقرير نشر 8 نوفمبر 2021 بالنسبة للشق الأول من السؤال يمكنك وضع شرط إن كانت البيانات القادمة من قاعدة البيانات فارغة فلتقم بإعادة المستخدم إلى الصفحة الرئيسية if(empty($row)) header("Location:\\أكتب هنا مسار صفحتك الرئيسية ") بالنسبة للشق الثاني من السؤال فيمكنك تنفيذ المطلوب عبر وضع حقل إضافي في قاعدة البيانات يتم فيه تخزين العواصم وتغيير الجملة الإستعﻻمية الخاصة بقاعدة البيانات لتشمل البحث عن كلاً من الدولة والعاصمة مثلاً SELECT * FROM info WHERE Country like '". $_GET['search']." ' OR Capital like '". $_GET['search']"' اقتباس
0 عبدالله القحطاني10 نشر 8 نوفمبر 2021 الكاتب أرسل تقرير نشر 8 نوفمبر 2021 (معدل) اين اضع if(empty($row)) الشق الثاني وضعته بهذا الشكل ولم يعمل اتوقع المشكلة في علامات التنصيص على ما اضن $get_news_sql = "SELECT * FROM information WHERE Country like '". $_GET['search']."'" ' OR Capital like '". $_GET['search']" ; تم التعديل في 8 نوفمبر 2021 بواسطة ABDULLAH خطا اقتباس
0 شرف الدين حفني نشر 8 نوفمبر 2021 أرسل تقرير نشر 8 نوفمبر 2021 بتاريخ 14 دقائق مضت قال ABDULLAH: اين اضع if(empty($row)) الشق الثاني وضعته بهذا الشكل ولم يعمل اتوقع المشكلة في علامات التنصيص على ما اضن $get_news_sql = "SELECT * FROM information WHERE Country like '". $_GET['search']."'" ' OR Capital like '". $_GET['search']" ; <?php $host = "localhost"; $name = "#####"; $pass = "####"; $dbname = "###"; $connection = mysqli_connect($host,$name,$pass,$dbname); mysqli_query($connection,"set character_set_server='utf8mb4_general_ci'"); mysqli_query($connection,"set names 'utf8mb4_general_ci'"); if (!$connection) { die(); } $get_news_sql = "SELECT * FROM info WHERE Country like '". $_GET['search']."'" ; $get_news_sql = mysqli_query($connection, $get_news_sql); while ($row = mysqli_fetch_array($get_news_sql)) { if(empty($row)) header("Location:\\أكتب هنا مسار صفحتك الرئيسية ") $Country =$row['Country']; $Flag= $row['Flag']; $Capital= $row['Capital']; } ?> نضعها بهذا الشكل وبالنسبة للشق الثاني بالفعل فيه خطأ , ضعه بهذا النحو $get_news_sql = "SELECT * FROM information WHERE Country like '". $_GET['search']."'"."' OR Capital like '". $_GET['search'] ; اقتباس
0 عبدالله القحطاني10 نشر 8 نوفمبر 2021 الكاتب أرسل تقرير نشر 8 نوفمبر 2021 الشق الأول لم يعمل ووضعته قبل ?> وصار يشتغل بس حتى لو ابحث عن دولة موجودة يرجعني للصفحة التي وضعت !! $Country =$row['Country']; $Flag= $row['Flag']; $Capital= $row['Capital']; } if(empty($row)) header("Location:\\index.php "); ?> الثاني وضعت نفس المكتوب لكن لم يعد يبحث عن اي دولة ولاعاصمة ؟ وبعد ما ارجع الكود القديم يعمل على الدولة فقط . اقتباس
0 شرف الدين حفني نشر 8 نوفمبر 2021 أرسل تقرير نشر 8 نوفمبر 2021 بتاريخ 1 دقيقة مضت قال ABDULLAH: الشق الأول لم يعمل ووضعته قبل ?> وصار يشتغل بس حتى لو ابحث عن دولة موجودة يرجعني للصفحة التي وضعت !! $Country =$row['Country']; $Flag= $row['Flag']; $Capital= $row['Capital']; } if(empty($row)) header("Location:\\index.php "); ?> الثاني وضعت نفس المكتوب لكن لم يعد يبحث عن اي دولة ولاعاصمة ؟ وبعد ما ارجع الكود القديم يعمل على الدولة فقط . يجب إضافة حقل العاصمة أولاً قبل تشغيل الكود اقتباس
0 عبدالله القحطاني10 نشر 8 نوفمبر 2021 الكاتب أرسل تقرير نشر 8 نوفمبر 2021 بتاريخ 1 دقيقة مضت قال شرف الدين2: يجب إضافة حقل العاصمة أولاً قبل تشغيل الكود لم يعمل للاسف اقتباس
0 شرف الدين حفني نشر 8 نوفمبر 2021 أرسل تقرير نشر 8 نوفمبر 2021 بتاريخ الآن قال ABDULLAH: لم يعمل للاسف قم بعمل export لقاعدة البيانات وقم بوضعها مع مجلد المشروع وثم إضغطهم وإرفقهم في تعليق اقتباس
0 عبدالله القحطاني10 نشر 8 نوفمبر 2021 الكاتب أرسل تقرير نشر 8 نوفمبر 2021 https://top4top.io/downloadf-2138d2cdt1-zip.html بتاريخ منذ ساعة مضت قال شرف الدين2: قم بعمل export لقاعدة البيانات وقم بوضعها مع مجلد المشروع وثم إضغطهم وإرفقهم في تعليق 1 اقتباس
3 سامح أشرف نشر 8 نوفمبر 2021 أرسل تقرير نشر 8 نوفمبر 2021 لاحظ أن لديك بعض الأخطاء البسيطة في الملف tourist.php مثل أن إغلاق حلقة while يجب أن يكون قبل العنصر footer مباشرة، وذلك لأنك تستعمل بعض المتغيرات الخاصة بالبيانات التي يتم إحضارها من قاعدة البيانات، وذلك سيؤدي إلى ظهور العديد من الأخطاء في حالة لم يتم إيجاد أي نتيجة في قاعدة البيانات، كما في الصورة التالية: الأمر الآخر هو أن لديك خطأ في جملة SQL حيث يجب أن تكون بالشكل التالي: $get_news_sql = "SELECT * FROM information WHERE Country LIKE '%{$_GET['search']}%' OR Capital LIKE '%{$_GET['search']}%' "; لاحظ كيف تم إستخدام قيمة المعامل search مباشرة في جملة SQL، ووجود علامة % قبل وبعد المعامل في تعيمتي LIKE. بهذا الشكل سوف يتم البحث عن أي مدينة أو دولة مشابهة للاسم الذي تم البحث عنه. أيضًا قد تجد أن النتيجة عبارة عن علامات إستفهام كما في الصورة التالية: ولحل المشكلة السابقة يجب أن تقوم بإستخدام الدالة mysqli_set_charset بدلًا من الدالة mysqli_query كالتالي: mysqli_set_charset($connection, 'utf8'); // بدلُا من الكود التالي // mysqli_query($connection, "set character_set_server='utf8mb4_general_ci'"); // mysqli_query($connection, "set names 'utf8mb4_general_ci'"); أيضًا يجب التحقق من وجود المعامل search من البداية من خلال الكود التالي: if (!isset($_GET['search'])) { header('Location: index.php'); // العودة إلى صفحة index } يمكنك أن تضع الكود السابق في بداية الملف tourist.php الأمر الأخير هو أنه في حالة وجود أكثر من نتيجة في قاعدة البيانات مسابهة لكلمة البحث فسوف يكون لديك أكثر من صفحة في الكود كما في الصورة التالية: ولحل المشكلة يجب أن تقوم بإضافة LIMIT 1 إلى جملة SQL لتكون بالشكل التالي: $get_news_sql = "SELECT * FROM information WHERE Country LIKE '%{$_GET['search']}%' OR Capital LIKE '%{$_GET['search']}%' LIMIT 1"; هنا ملفات المشروع بعد التعديل: 320.zip 4 اقتباس
0 عبدالله القحطاني10 نشر 11 نوفمبر 2021 الكاتب أرسل تقرير نشر 11 نوفمبر 2021 (معدل) بتاريخ On 8/11/2021 at 21:20 قال سامح أشرف: لاحظ أن لديك بعض الأخطاء البسيطة في الملف tourist.php مثل أن إغلاق حلقة while يجب أن يكون قبل العنصر footer مباشرة، وذلك لأنك تستعمل بعض المتغيرات الخاصة بالبيانات التي يتم إحضارها من قاعدة البيانات، وذلك سيؤدي إلى ظهور العديد من الأخطاء في حالة لم يتم إيجاد أي نتيجة في قاعدة البيانات، كما في الصورة التالية: ممتاز لكن عند البحث باسم دولة غير موجودة يرجعني للفوتر ! تم التعديل في 11 نوفمبر 2021 بواسطة ABDULLAH اقتباس
0 Wael Aljamal نشر 11 نوفمبر 2021 أرسل تقرير نشر 11 نوفمبر 2021 بتاريخ 56 دقائق مضت قال ABDULLAH: ممتاز لكن عند البحث باسم دولة غير موجودة يرجعني للفوتر ! هل يوجد لديك اسم مدينة مثال ؟ اقتباس
السؤال
عبدالله القحطاني10
السلام عليكم
وضعت كود البحث في الصفحة الرئيسية للموقع ليبحث في قاعدة البيانات ،يعمل بشكل ممتاز.
اريد عند البحث عن كلمة غير موجودة في القاعدة يعطي خطا ( الكلمة غير موجودة في القاعدة ) او يرجعة للصفحة الرئيسية !
يستطيع المستخدم عند البحث باسم الدولة ايجاد المطلوب ، هل استطيع عند البحث باسم الدولة او العاصمة ايجاد المطوب وشكراً
تم التعديل في بواسطة شرف الدين2توضيح العنوان
11 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.