الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكله فى كود بحث فى اكثر من جدول ارجوكم الحل

بدأه fatmaali في 23 أكتوبر 2012 · 8 رد · 798 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني الافاضل اتمنى ان اجد الحل وياكم باذن الله

المشكلة عندي كود اريد البحث في اكثر من تيبول فى جدول محدد الكود شغال تمام جدا عندما ابحث فى تيبول واحد فقط اما ان بحث فى اكثر من واحد ما يطلع لي نتيجة مظبوطه

ايضا هناك مشكله انا واضعه شرط انه ان لم يضع الزائر شيئ فى مربع البحث رقم 1 مثلا يطلع له ادخل ما تريد البحث عنه

طيب ولنفرض انه لا يريد وضع شيئ فى مربع رقم 1 ويريد وضع فى رقم 2 فقط او 3 فقط يظل يظهر لي اخل ما تريدالبحث عنه لانه لا يجد نص مدخل فى المربع رقم 1 اريد تصحيح هذا الخطاء بالكود

الجدول المراد البحث فيه هوا

producta

اما التيبول التى بداخل الجدول والتى اريد ان يبحث اعتمادا عليهم

prod_name2

nam1

nam2

ملحوظة يجب ان لا يلزمني الكود بوضع الثلاث خانات لكي يتم البحث فيمكن ان ابحث مثلا باول تيبول او ثاني تيبول او 3 تيبول او الاثنين معا او ثلاثه معاً

وهذا ما لم استطع عمله بالكود .... :(

مرفقه كود فورم البحث وصفحة نتائج البحث وايضا الجدول بالقاعدة

كود البحث

<form id="searchForm" method="POST" name="search" action="search.php">
							<div align="center">
								<table border="0" cellpadding="0">
									<tr>
										<td dir="rtl" align="center" height="26">
										<span lang="en-us">prod_name2</span></td>
									</tr>
									<tr>
										<td dir="rtl" align="center" height="26">
										<font face="Tahoma">
										<input class=UserName1 name="name1" size="20" ></font></td>
									</tr>
									<tr>
										<td dir="rtl" align="center" height="26">
										<span lang="en-us">nam1</span></td>
									</tr>
									<tr>
										<td dir="rtl" align="center" height="26">
										<font face="Tahoma">
										<input class=UserName1 name="name2" size="20" ></font></td>
									</tr>
									<tr>
										<td dir="rtl" align="center" height="26">
										<span lang="en-us">nam2</span></td>
									</tr>
									<tr>
										<td dir="rtl" align="center" height="26">
										<font face="Tahoma">
										<input class=UserName1 name="name3" size="20" ></font></td>
									</tr>
									<tr>
										<td dir="rtl" align="center" height="26">
                                  	<input class="btn" value="ابحــــــــث !" type="submit"></td>
									</tr>
								</table>
							</div>
						</form>

كود صفحة نتائج البحث

<?

if($name1=="")
{
?>
من فضلك ادخل ما تريد البحث عنه
<?
}

else
{
$select="select * from producta where prod_name2 like '%$name1%'";
$Result=mysql_query($select);
$account=mysql_num_rows($Result);
if($account==0)
{
?>
لايوجد نتائج لما تبحث عنه </b>
<?
}
else
{
echo("
        <p dir='ltr'>
         تم  العثور على <font color='#008000'>".$account."</font> نتيجة   </p>


        ");

while($Row=mysql_fetch_array($Result))
{
extract($Row);
?>
</font>
		</b>
<table border="0" width="100%" cellpadding="0" height="51" dir="ltr" cellspacing="1">
	<tr>
		<td width="95%" height="35" background="tab1.png">
		<p align="right" dir="rtl">
		<font color="#800000"> <b>ناتج البحث عن :</b> <?=$name1?><?=$name2?><?=$name3?></font></td>
		<td width="3%" height="20" background="tab.png">
		<img border="0" src="images/search_button_green.png" width="32" height="32"></td>
	</tr>
	<tr>
		<td colspan="2" align="right"> 
		<table border="0" width="100%" cellpadding="0">
			<tr>
				<td width="58" background="tab.png">
				<p align="center">
				<a href="show_prod.php?pp=<?=$prod_id?>&c=<?=$catid?>" style="text-decoration: none; font-weight: 700">
							التفاصيــــل</td>
				<font color="#FF0000" size="2">
				<td bgcolor="#FFFFFF" align="center" background="tab.png" height="35">
				<font color="#FF0000" size="2">
		<p dir="rtl" align="right"><font face="Tahoma" size="2"><b>
		<font color="#333333"></font></b> 
		<a href="show_prod.php?pp=<?=$prod_id?>""?>"><?=$prod_name2?></font></font></td>
				</font>
			</tr>
		</table>
		</td>
	</tr>
	<tr>
		<td colspan="2" align="center" background="line.jpg">
		<p dir="rtl"><img border="0" src="line.jpg" width="20" height="1"></td>
	</tr>
</table><?
}
}
}
?>

-- 
-- بنية الجدول `producta`
-- 

CREATE TABLE `producta` (
  `prod_id` int(11) NOT NULL auto_increment,
  `prod_name2` varchar(255) default NULL,
  `nam1` varchar(255) NOT NULL,
  `nam2` varchar(255) NOT NULL,
  PRIMARY KEY  (`prod_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1256 AUTO_INCREMENT=278 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `producta`
--

تم تعديل هذه المشاركة بواسطة fatmaali في 23 أكتوبر 2012 في 05:36

#2

مرحبا fatamaali

فقط قومي باستخدام SQL مناسب

$select="select * from producta where prod_name2 like '%$name1%' or nam1 like '%nam1%' or nam2 like '%nam2%' ";

كما انصحك بقراءة دروس عن SQL

فهي ستفيدك جدا

شكرا لكِ

1

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#3

السلام عليكم

فعلاً كما قال الأستاذ حمدان فتعلم الـSQL سيجعل عملية الإستعلامات غاية في السهولة ولن نلجأ لإستخدام لغة البرمجة إلا إذا لزم الأمر , ومن الأمور المهمة أيضاً تصميم قاعدة البيانات نفسها بشكل متماسك .

وبالنسبة لسؤالك الثاني فيمكن توليد الإستعلام المناسب لقاعدة البيانات علي حسب المدخلات " بإستخدام دوال التعامل مع النصوص " كالتالي :

$name1 = $_POST['name1']; 
$name2 = $_POST['name2']; 
$name3 = $_POST['name3']; 
$select = "SELECT * FROM producta WHERE "; 
if($name1=="" and $name2=="" and $name3==""){ 
	$select = NULL; 
	echo "من فضلك ادخل ما تريد البحث عنه"; 
}else{ 
	if($name1!="") 
		$select .= "prod_name2 LIKE '%$name1%' OR "; 
	if($name2!="") 
		$select .= "nam1 LIKE '%$name2%' OR "; 
	if($name3!="") 
		$select .= "nam2 LIKE '%$name3%'"; 
	if(substr($q,strlen($q)-4) == "OR ") 
		$select = substr($q,0,strlen($q)-5); 
}

- ربما تكون هناك طريقة داخل SQL لتلاشي الأخطاء عند إدخال قيم فارغة .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#4
Hamdan Taima كتب:

مرحبا fatamaali

فقط قومي باستخدام SQL مناسب

$select="select * from producta where prod_name2 like '%$name1%' or nam1 like '%nam1%' or nam2 like '%nam2%' ";

كما انصحك بقراءة دروس عن SQL

فهي ستفيدك جدا

شكرا لكِ

شاكرة لك اخي الفاضل هذه الطريقة قمت بعملها مسبقا واعرفها جيدا لكنها لا تؤدي الغرض المطلوب حيث انه يظهر نفس المشكل وايضا ... يقوم بتكرار النتائج

ahmedsaoud31 كتب:

السلام عليكم

فعلاً كما قال الأستاذ حمدان فتعلم الـSQL سيجعل عملية الإستعلامات غاية في السهولة ولن نلجأ لإستخدام لغة البرمجة إلا إذا لزم الأمر , ومن الأمور المهمة أيضاً تصميم قاعدة البيانات نفسها بشكل متماسك .

وبالنسبة لسؤالك الثاني فيمكن توليد الإستعلام المناسب لقاعدة البيانات علي حسب المدخلات " بإستخدام دوال التعامل مع النصوص " كالتالي :

$name1 = $_POST['name1']; 
$name2 = $_POST['name2']; 
$name3 = $_POST['name3']; 
$select = "SELECT * FROM producta WHERE "; 
if($name1=="" and $name2=="" and $name3==""){ 
	$select = NULL; 
	echo "من فضلك ادخل ما تريد البحث عنه"; 
}else{ 
	if($name1!="") 
		$select .= "prod_name2 LIKE '%$name1%' OR "; 
	if($name2!="") 
		$select .= "nam1 LIKE '%$name2%' OR "; 
	if($name3!="") 
		$select .= "nam2 LIKE '%$name3%'"; 
	if(substr($q,strlen($q)-4) == "OR ") 
		$select = substr($q,0,strlen($q)-5); 
}

- ربما تكون هناك طريقة داخل SQL لتلاشي الأخطاء عند إدخال قيم فارغة .

سوف اقوم بتجربة الكود الذى قمت بوضعه اخي لعل وعسى ان يجدي نفعاً

شاكرة ومقدره لك اخي الفاضل

#5
اقتباس
شاكرة لك اخي الفاضل هذه الطريقة قمت بعملها مسبقا واعرفها جيدا لكنها لا تؤدي الغرض المطلوب حيث انه يظهر نفس المشكل وايضا ... يقوم بتكرار النتائج

ما المشكلة بالتحديد , وما الذي تحاولين الوصوله له بالتمام من خلال استخدام هذه الحقول ؟

ربما شيء من التوضيح سيجعلنا نساعدك بشكل ممتاز

لان النقاش الذي قمتي انت بتوفيره جعلني انا واخي احمد نوفر لك تقريبا نفس الحل

من المهم جداً توضيح اساس المشكلة في طرح الموضوع او السؤال او حتى النقاش حتى تصل الفكرة بشكل فعال .

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#6

المشكلة بالظبط هيا كاتالى

لدي جدول يتم عرض المنتجات من خلاله

وهوا جدول باسم

producta

التيبول الموجودة بداخل هذا الجدول هي

prod_name2 = اسم المنتج

nam1 = سعر المنتج

nam3 = كود المنتج

كل ما اريد عمله هوا عمل نموذج بحث يبحث فى المنتجات اعتماداً على اسم المنتج فقط ؟ او مثلا سعر المنتج فقط ؟ او كود المنتج فقط او اسم المنتج وسعرة ؟ او الثلاثه مجتمعين

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

وعلى اساسه قمت بادراج الاكواد السابقة

انتظر الرد

تم تعديل هذه المشاركة بواسطة fatmaali في 24 أكتوبر 2012 في 23:43

#7

جربي كود الاخ احمد لانه اجتهد به وعمل فالديشن ايضاً يعني جاهز و ان شاء الله ما فيه اخطاء

=============
الطموح و الحافز سر النجاح

=============

AflamHQ.com | Palphp.com

#8
Hamdan Taima كتب:

جربي كود الاخ احمد لانه اجتهد به وعمل فالديشن ايضاً يعني جاهز و ان شاء الله ما فيه اخطاء

اوك جاري التجربة

#9

السلام عليكم اخي الكريم هذا هو الحل المناسب :)

	$where="";
	if(isset($_REQUEST["name1"]))
		$where.= " `prod_name2` like '%$name1%'";
	if(isset($_REQUEST["name2"]))
		$where.= " `nam1` like '%$name2%'";
	if(isset($_REQUEST["name3"]))
		$where.= " `nam2` like '%$name3%'";
	else
	$where.="where 1";	
	$select="select * from `producta` $where ";
	$Result=mysql_query($select);
	$account=mysql_num_rows($Result);

تم تعديل هذه المشاركة بواسطة firasmf في 25 أكتوبر 2012 في 23:19

Firas M.Fatoum

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…