search في قاعدة البيانات

Dem • منذ 8 سنوات

السلام عليكم

 

أعمل على مشروع ويب سايت PHP  Mysql 

(يتيح للأعضاء المسجلين إضافة posts كل عضو في صفحته الخاصة تحت تصنيف يحدد العضو ومعلومات يضيفها)

اضفت الاكواد و الداتابيس ... الان أحتاج إضافة مربع بحث للموقع بحيث الزائر بامكانه إيجاد الposts المطلوبة بناء على مدخل البحث

(كان يكتب إسم العضو ناشر البوست / القسم الذي ينتمي له العضو / سنة النشر /  كي وورد ... إلخ ) وتظهر له الpost المصنفة تحت المطلوب بحثه )

#في المرفقات صور للداتابيس وملف search بديت فيه حسب بعض الأكواد للسيرش

أحتاج مساعدة في الموضوع لو تكرمتوا ..

1.png

2.png

3.png

4.png

search.php

كلمات دليلية:

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (6)

Dem • منذ 8 سنوات
5 ساعات مضت, Ali Majrashi said:

 

 

عدلت الفورم

 <div class="col-md-offset-1 col-md-10">
             
                    <div class="input-group">
    <form  role="search" action="search.php" method="POST">
            <input id="searchInput" type="text" name="searchInput" class="form-control" style="width:50%">
            <select name="searchType" id="searchType" class="form-control" style="width:50%">
              <option value="title" >Title</option>
              <option value="user">Members Name</option>
              <option value="year">Year</option>
              <option value="department">Department</option>
              <option value="activity">Activity</option>
              <option value="otherwise">something else</option>
            </select>
         
            <span class="input-group-btn">
   <button id="searchButton" class="btn btn-default" type="submit">
    <span class="glyphicon glyphicon-search"></span>
    </button>
            </span>

                </form>
 
                </div>
   </div>

 

 

وملف البحث لكن يظهر errorsearch.php

 

search.php

Dem • منذ 8 سنوات
2 ساعات مضت, Dem said:

 

عدلت الفورم

 <div class="col-md-offset-1 col-md-10">
             
                    <div class="input-group">
    <form  role="search" action="search.php" method="POST">
            <input id="searchInput" type="text" name="searchInput" class="form-control" style="width:50%">
            <select name="searchType" id="searchType" class="form-control" style="width:50%">
              <option value="title" >Title</option>
              <option value="user">Members Name</option>
              <option value="year">Year</option>
              <option value="department">Department</option>
              <option value="activity">Activity</option>
              <option value="otherwise">something else</option>
            </select>
         
            <span class="input-group-btn">
   <button id="searchButton" class="btn btn-default" type="submit">
    <span class="glyphicon glyphicon-search"></span>
    </button>
            </span>

                </form>
 
                </div>
   </div>

 

 

وملف البحث لكن يظهر errorsearch.php

 

search.php

 

 

هذا الerror الي يظهر 

IMG_8998.JPG

Ali Majrashi • منذ 8 سنوات

سبب الخطأ استخدام الدالة mysql_query بدون الاتصال بقاعدة البيانات وسبق وقلت لك ببداية الرد هي دالة قديمة ومحذوفه من نسخ php الحديثة يفضل استخدام mysqli او pdo لتنفيذ الاستعلام مع وضع البيانات الصحيحة للاستعلام بقاعدة البيانات

Ali Majrashi • منذ 8 سنوات

قمت بتعديل سريع على اكوادك لتعمل بالشكل المطلوب مع مراعاة عند بناء اي sql يجب بنائها بالشكل الصحيح للحصول على النتيجة المرغوبة

قمت بانشاء ملف index.html ومحتواه 


<!DOCTYPE html>
<html>
<head>
  <title>search</title>
</head>
<body>


             
<div class="input-group">
  <form  role="search" action="search.php" method="POST">
    <input id="searchInput" type="text" name="searchInput" class="form-control" style="width:50%">
    <select name="searchType" id="searchType" class="form-control" style="width:50%">
    <option value="title" >Title</option>
    <option value="user">Members Name</option>
    <option value="year">Year</option>
    <option value="department">Department</option>
    <option value="activity">Activity</option>
    <option value="otherwise">something else</option>
    </select>

    <span class="input-group-btn">
    <button id="searchButton" class="btn btn-default" type="submit">
    <span class="glyphicon glyphicon-search"></span>
    </button>
    </span>

  </form>

</div>

</body>
</html>

وبعدها قمت بانشاء ملف search.php وعدلت محتوى اكوادك الى


<?php

$username = 'root';
$password = 'root';
$db = '3alampro-help';

// Check connection
try {
    $pdo = new PDO ('mysql:host=localhost;dbname=' . $db, $username, $password); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo $e->getMessage();
    die();
}

if(isset($_POST['searchType']) and isset($_POST['searchInput']) )
{
    $searchType = $_POST['searchType'];
    $searchInput = $_POST['searchInput'];
    
    switch ($searchType)
    {
        case 'title':
            
            $query = "SELECT * FROM post WHERE  title like '$searchInput' ";
            
            break;
            
        case 'user':
                 $query = "SELECT * FROM user WHERE  title like '$searchInput' ";
            break;
            
        case 'year':
                $query = "SELECT * FROM post WHERE  year = $searchInput ";
            break;
            
        case 'department':
            //////////
            break;
            
        case 'activity':
            ///////////
            break;
            
        default :
            
            return "can't find searchType ";
            
            break;
    }

echo $query;
$query = $pdo->query($query);
while ($posts = $query->fetch()) {
    echo '<li>';
       echo '<h2>' . $posts['title'] . '</h2>';
       echo '<p>' . $posts['content'] .'</p>';
    echo '</li>';
 } 
    
}
else
{
    echo "please try again";
}

?>

عند اختيار السنة المحددة سوف يعمل الفلتر ويجلب posts في سنة محددة مع مراعاة تغير اللازم للبقية ليعملو بالشكل المطلوب قمت بتجربة عن البحث عن سنة فقط 

Dem • منذ 8 سنوات
53 دقائق مضت, Ali Majrashi said:

قمت بتعديل سريع على اكوادك لتعمل بالشكل المطلوب مع مراعاة عند بناء اي sql يجب بنائها بالشكل الصحيح للحصول على النتيجة المرغوبة

قمت بانشاء ملف index.html ومحتواه 

وبعدها قمت بانشاء ملف search.php وعدلت محتوى اكوادك الى

عند اختيار السنة المحددة سوف يعمل الفلتر ويجلب posts في سنة محددة مع مراعاة تغير اللازم للبقية ليعملو بالشكل المطلوب قمت بتجربة عن البحث عن سنة فقط 

 

 

في غلط بالكود  ; query = $pdo->query($query)$

 

111.png

أيضا بالنسبة للديبارتمنت و إسم العضو الموجودة في تيبل user أعمل لها نفس الكويري بتغيير إسم التيبل ؟


   $query = "SELECT * FROM post WHERE  title like '$searchInput' ";

 

 

Ali Majrashi • منذ 8 سنوات

بالنسبة للخطأ يقولك الجدول post غير موجود بقاعدة البيانات عدلي query لمايناسب جدولك بقاعدة البيانات 

بالنسبة للاقسام الثانية يجب تعديلها بمايناسب مشروعك واحتياجاته مثلا لو نرغب بالبحث عن posts خاصه بعضو محدد هنا نحتاج فقط user_id الخاص بالعضو لجلب جميع posts الخاصة فيه 

ممكن تحقيقها عن طريق عمل استعلام في جدول اليوزر باستخدام اسم اليوزر وربطه بجدول posts باستخدما JOINT او LEFT JOINT في query لتظهر نتائج اليوزر المراد الاستعلام عنه 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !