search في قاعدة البيانات
السلام عليكم
أعمل على مشروع ويب سايت PHP Mysql
(يتيح للأعضاء المسجلين إضافة posts كل عضو في صفحته الخاصة تحت تصنيف يحدد العضو ومعلومات يضيفها)
اضفت الاكواد و الداتابيس ... الان أحتاج إضافة مربع بحث للموقع بحيث الزائر بامكانه إيجاد الposts المطلوبة بناء على مدخل البحث
(كان يكتب إسم العضو ناشر البوست / القسم الذي ينتمي له العضو / سنة النشر / كي وورد ... إلخ ) وتظهر له الpost المصنفة تحت المطلوب بحثه )
#في المرفقات صور للداتابيس وملف search بديت فيه حسب بعض الأكواد للسيرش
أحتاج مساعدة في الموضوع لو تكرمتوا ..
ساعد بالإجابة
"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."
الإجابات (6)
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
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
هذا الerror الي يظهر
سبب الخطأ استخدام الدالة mysql_query بدون الاتصال بقاعدة البيانات وسبق وقلت لك ببداية الرد هي دالة قديمة ومحذوفه من نسخ php الحديثة يفضل استخدام mysqli او pdo لتنفيذ الاستعلام مع وضع البيانات الصحيحة للاستعلام بقاعدة البيانات
قمت بتعديل سريع على اكوادك لتعمل بالشكل المطلوب مع مراعاة عند بناء اي 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 في سنة محددة مع مراعاة تغير اللازم للبقية ليعملو بالشكل المطلوب قمت بتجربة عن البحث عن سنة فقط
53 دقائق مضت, Ali Majrashi said:قمت بتعديل سريع على اكوادك لتعمل بالشكل المطلوب مع مراعاة عند بناء اي sql يجب بنائها بالشكل الصحيح للحصول على النتيجة المرغوبة
قمت بانشاء ملف index.html ومحتواه
وبعدها قمت بانشاء ملف search.php وعدلت محتوى اكوادك الى
عند اختيار السنة المحددة سوف يعمل الفلتر ويجلب posts في سنة محددة مع مراعاة تغير اللازم للبقية ليعملو بالشكل المطلوب قمت بتجربة عن البحث عن سنة فقط
في غلط بالكود ; query = $pdo->query($query)$
أيضا بالنسبة للديبارتمنت و إسم العضو الموجودة في تيبل user أعمل لها نفس الكويري بتغيير إسم التيبل ؟
$query = "SELECT * FROM post WHERE title like '$searchInput' ";
بالنسبة للخطأ يقولك الجدول post غير موجود بقاعدة البيانات عدلي query لمايناسب جدولك بقاعدة البيانات
بالنسبة للاقسام الثانية يجب تعديلها بمايناسب مشروعك واحتياجاته مثلا لو نرغب بالبحث عن posts خاصه بعضو محدد هنا نحتاج فقط user_id الخاص بالعضو لجلب جميع posts الخاصة فيه
ممكن تحقيقها عن طريق عمل استعلام في جدول اليوزر باستخدام اسم اليوزر وربطه بجدول posts باستخدما JOINT او LEFT JOINT في query لتظهر نتائج اليوزر المراد الاستعلام عنه
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !