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

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

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

السلام عليكم اخواني الافاضل

المشكلة هيا ان لدي قسم رئيسي يتفرع منه قسم فرعي والقسم الفرعي يتفرع منه عدة ااقسام وتكون الثلاث قوائم يعتمدو على بعض بمعني

قمت بوضع موضوع سابق بوضع المشكلة ولكن كانت قسمين فقط بمعني 2 level

الان اريد القسم الرئييسي يظهر اقسامة الفرعية وعند اختيار قسم من الاقسام الفرعية يظهر قائمة بالاقسام الفرعية من الفرعية

علماً بأن

القسم الرئيسي = cat

المفتاح =cat_id

القسم الفرعي = subcat

المفتاح =subcat_id

الاقسام المتفرعة من الفرعي = 2subat

المفتاح = 2subcat_id

وهذا هوا الكود الخاص بالقسم الرئيسي والقسم الفرعي

اريد تطويرة ليصبح لثلاثه اقسام تعتمد على بعضها

<?php  
include ('config.php'); 
?> 
<script language="javascript" type="text/javascript"> 
function filter() 
{ 
        document.formList.action=''; 
        document.formList.submit(); 
} 
</script> 
<form name="formList" method="POST" action="add.php" > 
<input type="text" name="name" size="20" value="ÇÓã ÇáãäÊÌ"><br> 
<br/> 
  <select size="1" name="mainCat" onchange="return filter();"> 
    <option value='0' disabled='disabled' selected>ÇÎÊÑ ÇáÞÓã ÇáÑÆíÓí</option> 
    <? 
        $result=mysql_query("select `cat_id`,`cat_name` from `cat`  "); 
        while($rowUserCat=mysql_fetch_assoc($result)) 
        { 
        if($_POST["mainCat"]==$rowUserCat["cat_id"]) 
        { 
                ?> 
                <option  value="<?php echo $rowUserCat["cat_id"];?>"><?php echo $rowUserCat["cat_name"];?></option> 
                <? 
        } 
        else 
        { 
                ?> 
                <option value="<?php echo $rowUserCat["cat_id"];?>"><?php echo $rowUserCat["cat_name"];?></option> 
                <?       
        } 

        } 
        ?> 
    </select> 
  <br/> 
  <select size="1" name="supcat_id"> 
    <option value='0' disabled='disabled' selected>ÇÎÊÑ ÇáÞÓã ÇáÝÑÚí</option> 
    <? 
        $resultSub=mysql_query("select * from `supcat`  where `cat_id`= '".$_POST["mainCat"]."' "); 
        while($rowSub=mysql_fetch_assoc($resultSub)) 
        { 
                ?> 
                <option value="<?php echo $rowSub["supcat_id"];?>"><?php echo $rowSub["supcat_name"];?></option> 
                <? 
        } 
        ?> 
  </select> 
 <br/>  
 <input type="submit" value="ÇÑÓá" name="B1"> 
</form>
#2

مرحبا فاطمة ,

اليك المثال التالي ارجو تطبيقه واي استفسار نحن مستعدون للجابة , المهم ان تستوعبي الكود التالي .

الفكرة يوجد لدينا ملفان

الاول : index.php

الثاني request.php

الملف الاول سيتم عرض الصفحة وبها الثلاث خيارات بحيث لو ان المتسخدم الخيار الاول سيتم تحديث الخيار الثاني , ولو اختار الخيار الثاني سيتم تحديث الخيار الثالث

الملف الثاني , يتم استدعاءه لتحديث القوائم من خلال الملف الاول .

الملف الاول : index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Jquery Switch options</title>
<script src="jquery.js" type="text/javascript"></script>
<script>
 $(document).ready(function(){
	$("#first").change(function(e){
		$.ajax({
		url:'request.php?first='+ $("#first").val().toString(),
    	type:'POST',
           	success: function( data ) {
					$('#second').empty();
					 $('#third').empty();
     				$('#second').append(data);

    	}


				})
			})


			$("#second").change(function(e){
		$.ajax({
		url:'request.php?second='+ $("#second").val().toString(),
    	type:'POST',
           	success: function( data ) {
					$('#third').empty();
     				$('#third').append(data);

    	}


				})
			})


	})
</script>
</head>

<body>
<select id="first">
<option value="1" >Palestine</option>
<option value="2" >Egypt</option>
<option value="3" >KSA</option>
</select>
<select id="second">
<option>Nice</option>
<option>Nice</option>
<option>Nice</option>
<option>Nice</option>
<option>Nice</option>
</select>
<select id="third">
<option>Nice</option>
<option>Nice</option>
<option>Nice</option>
<option>Nice</option>
<option>Nice</option>
</select>
</body>
</html>

الملف الثاني : request.php

<?
if($_GET['first']!="")
{
	$country=(int)$_GET['first'];
$result=mysql_query("select * from cities where country=$country");	
while($row=mysql_fetch_array($result))
{
	?>
<option value="<?=$row[id]?>" <? if(++$i==1) echo "selected" ?> ><?=$row[name]?></option>
<?
}
}
	?>

	<?
if($_GET['second']!="")
{
	$city=(int)$_GET['first'];
$result=mysql_query("select * from vilages where city=$city");	
while($row=mysql_fetch_array($result))
	{
		?>
	<option value="<?=$row[id]?>" <? if(++$i==1) echo "selected" ?> ><?=$row[name]?></option>
	<?
	}

}
?>

وبالطبع تحتاجين الى ملف مكتبة jQuery

هذا الرابط سيفي بالغرض : http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

يتبقى ان تصممي 3 جداول

الاول : countries

الثاني: cities

الثالث: vilages

والحقول الموجودة بها كما تشاهدين في الاستعلامات في ملف request.php

بالطبع يمكن تطبيق هذا المثال على اي نوع من القوائم , كما يمكنك تطويره , المهم انني زودتك بالاساسيات حتى تتمكني من البحث والمحاولة .

بالتوفيق

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

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

AflamHQ.com | Palphp.com

#3

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

#4
if($_GET['second']!="")
{
        $city=(int)$_GET['first'];

الصحيح ان يكون

$city=(int)$_GET['second'];

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

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

AflamHQ.com | Palphp.com

#5

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

علماً باني قمت بتطبيق المثال كما ذكرت انت وها هيا الملفات

هذه هيا صفحة التى يظهر بها القوائم المنسدلة

index.php

<script src="jquery.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
 <?php
include ('config.php');
?>
<script>
 $(document).ready(function(){
	$("#first").change(function(e){
		$.ajax({
		url:'request.php?first='+ $("#first").val().toString(),
    	type:'POST',
           	success: function( data ) {
					$('#second').empty();
					 $('#third').empty();
     				$('#second').append(data);

    	}


				})
			})


			$("#second").change(function(e){
		$.ajax({
		url:'request.php?second='+ $("#second").val().toString(),
    	type:'POST',
           	success: function( data ) {
					$('#third').empty();
     				$('#third').append(data);

    	}


				})
			})


	})
</script>
</head>

<body>
<form name="formList" method="POST" action="add.php" > 
<input type="text" name="name" size="20" value="اسم المنتج">
  <select id="first" size="1" name="city_id" > 
    <option value='0' disabled='disabled' selected>1</option> 
    <? 
        $result=mysql_query("select `city_id`,`city_name` from `city`  "); 
        while($rowUserCat=mysql_fetch_assoc($result)) 
        { 
        if($_POST["mainCat"]==$rowUserCat["city_id"]) 
        { 
                ?> 
                <option  value="<?php echo $rowUserCat["city_id"];?>"><?php echo $rowUserCat["city_name"];?></option> 
                <? 
        } 
        else 
        { 
                ?> 
                <option value="<?php echo $rowUserCat["city_id"];?>"><?php echo $rowUserCat["city_name"];?></option> 
                <?       
        } 

        } 
        ?> 
    </select> 
  <br/> 
  <select size="1" id="second" name="city1_id"> 
    <option value='0' disabled='disabled' selected>2</option> 
    <? 
        $resultSub=mysql_query("select * from `city1_name`  where `cat_id`= '".$_POST["mainCat"]."' "); 
        while($rowSub=mysql_fetch_assoc($resultSub)) 
        { 
                ?> 
                <option value="<?php echo $rowSub["city1_id"];?>"><?php echo $rowSub["city1_name"];?></option> 
                <? 
        } 
        ?> 
  </select>
  <select id="third">
</select> 
 <br/>  
 <input type="submit" value="send" name="B1"> 
</form>

صفحة request لاستدعاء القائمة الثالثه

?> 
<option value="<?=$row[city2_id]?>" <? if(++$i==1) echo "selected" ?> ><?=$row[city2_name]?></option><? 
} 
} 
        ?><? 
if($_GET['second']!="") 
{ 
        $city_id=(int)$_GET['first'];
        $result=mysql_query("select * from city2 where city1_id=$city1_id");   
while($row=mysql_fetch_array($result)) 
        { 
                ?> 
        <option value="<?=$row[city2_id]?>" <? if(++$i==1) echo "selected" ?> ><?=$row[city2_name]?></option> 
        <? 
        } 

} 
?>

هذه هيا قاعدة بيانات الثلاث قوائم

-- phpMyAdmin SQL Dump
-- version 2.10.3
-- http://www.phpmyadmin.net
-- 
-- المزود: localhost
-- أنشئ في: 03 نوفمبر 2012 الساعة 01:53
-- إصدارة المزود: 5.0.51
--  PHP إصدارة: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- 
-- قاعدة البيانات: `dd`
-- 

-- --------------------------------------------------------

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

CREATE TABLE `city` (
  `city_id` int(11) NOT NULL auto_increment,
  `city_name` varchar(255) NOT NULL,
  UNIQUE KEY `cat_id` (`city_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1256 AUTO_INCREMENT=48 ;

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

INSERT INTO `city` VALUES (1, 'طرابلس');
INSERT INTO `city` VALUES (2, 'بنغازي');
INSERT INTO `city` VALUES (3, 'مصراتة');
INSERT INTO `city` VALUES (4, 'سبها');
INSERT INTO `city` VALUES (5, 'الزاوية');
INSERT INTO `city` VALUES (6, 'صبراتة');
INSERT INTO `city` VALUES (7, 'غريان');
INSERT INTO `city` VALUES (8, 'الخمس');
INSERT INTO `city` VALUES (9, 'سرت');
INSERT INTO `city` VALUES (10, 'البيضاء / درنة');
INSERT INTO `city` VALUES (11, 'طبرق');

-- --------------------------------------------------------

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

CREATE TABLE `city1` (
  `city1_id` int(11) NOT NULL auto_increment,
  `city1_name` varchar(255) NOT NULL,
  `city_id` int(55) NOT NULL default '0',
  UNIQUE KEY `city1_id` (`city1_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1256 AUTO_INCREMENT=46 ;

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

INSERT INTO `city1` VALUES (1, 'للبيع', 1);
INSERT INTO `city1` VALUES (2, 'للايجار', 1);
INSERT INTO `city1` VALUES (3, 'الخدمات', 0);
INSERT INTO `city1` VALUES (4, 'وظائف شاغرة', 0);
INSERT INTO `city1` VALUES (5, 'الباحثين عن العمل', 0);
INSERT INTO `city1` VALUES (6, 'متفرقات اخرى', 0);

-- --------------------------------------------------------

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

CREATE TABLE `city2` (
  `city2_id` int(11) NOT NULL auto_increment,
  `city_id` int(55) NOT NULL default '0',
  `city1_id` int(55) NOT NULL default '0',
  `city2_name` varchar(255) NOT NULL,
  UNIQUE KEY `city2_id` (`city2_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1256 AUTO_INCREMENT=48 ;

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

INSERT INTO `city2` VALUES (1, 1, 1, 'العقارات و الإسكان');
INSERT INTO `city2` VALUES (2, 1, 1, 'السيارات و المركبات ');
INSERT INTO `city2` VALUES (3, 2, 1, 'الكهربائيات و الإلكترونيات');
INSERT INTO `city2` VALUES (4, 1, 1, 'الأثاث و المفروشات');
INSERT INTO `city2` VALUES (5, 1, 2, 'العقارات و الإسكان');
INSERT INTO `city2` VALUES (6, 1, 2, 'السيارات و المركبات');
INSERT INTO `city2` VALUES (7, 1, 2, 'أشياء أخرى');
INSERT INTO `city2` VALUES (8, 1, 3, 'الكومبيوتر و الإنترنت');
INSERT INTO `city2` VALUES (9, 1, 3, 'دروس و دورات تدريبية');
INSERT INTO `city2` VALUES (10, 1, 3, 'السفر و السياحة');
INSERT INTO `city2` VALUES (11, 1, 3, 'خدمات طبية');
INSERT INTO `city2` VALUES (21, 1, 5, 'مطلــــوب موظفين');
INSERT INTO `city2` VALUES (15, 1, 3, 'خدمات أخرى');
INSERT INTO `city2` VALUES (16, 1, 1, 'أشياء أخرى');
INSERT INTO `city2` VALUES (17, 1, 4, 'هندسة');
INSERT INTO `city2` VALUES (18, 1, 4, 'تسويق / مبيعات');
INSERT INTO `city2` VALUES (19, 1, 4, 'إدارة / سكرتارية');
INSERT INTO `city2` VALUES (20, 1, 4, 'طب / تمريض');

ياريت اعرف فين المشكلة اخي الفاضل

#6

المشكلة في ملف request.php

غير صحيح وغير كامل , كما لا بد من استدعاء ملف config.php في ملف request.php

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

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

AflamHQ.com | Palphp.com

#7

هكذا اجمل اعتقد :

<?
include ('config.php');


if($_GET['first']!="")
{
    	$city=(int)$_GET['first'];
$result=mysql_query("select * from city1 where city_id=$city"); 	
while($row=mysql_fetch_array($result))
{
    	?>
<option value="<?=$row[city1_id]?>" <? if(++$i==1) echo "selected" ?> ><?=$row[city1_name]?></option>
<?
}
}
    	?>

    	<?
if($_GET['second']!="") 
{ 
    	$city_id=(int)$_GET['second'];
    	$result=mysql_query("select * from city2 where city1_id=$city1_id");   
while($row=mysql_fetch_array($result)) 
    	{ 
            	?> 
    	<option value="<?=$row[city2_id]?>" <? if(++$i==1) echo "selected" ?> ><?=$row[city2_name]?></option> 
    	<? 
    	} 

} 
?>

جربيه , حاولي اصلاح اي اخطاء , واخبرينا بالجديد

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

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

AflamHQ.com | Palphp.com

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

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

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

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

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