PDA

View Full Version : سوال: list box چهارتایی



.fatemeh
جمعه 19 مهر 1392, 19:43 عصر
سلام
من چهارتا لیست باکس دارم با تغییر هریک باید اطلاعات بعدیها تغییر کنه
یه مثال می زنم مبهم نباشه:
باکس اول کشور باشه کشور رو انتخاب کرد استانهای اون کشور خودش بیاد توباکس دوم
بعد از انتخاب استان شهرهاش توی باکس سوم بیاد و با انتخاب شهر مناطق دیده بشه.
(البته کدمن مربوط به این نمیشه فقط یه مثال زدم)
تا 3 تاش رو دارم نتونستم چهارتایش کنم.
توی سایتها هم جستجو کردم معمولا دوتایی هست
ممنون میشم اگه کسی نمونه سایت یا کدی داره کمک کنه

shahriyar3
جمعه 19 مهر 1392, 19:58 عصر
اگر کد تو بزاری بهتر میتونم کمک کنم ولی در کل مشکل اینه که توی jquery متن html از ادامه خونده میشه یعنی نمیره از بالای صفحه بخونه برای هر درخواست بیاد تا پیائین مگر اینکه window.top بهش بدی
اگر کدت بود بهتر میتونستم کمک کنم

.fatemeh
جمعه 19 مهر 1392, 20:20 عصر
نه مشکلم این نیست.
الان سه تا لیست باکس دارم.
اولی رو انتخاب می کنم:ایران
به شکل اتوماتیک توی دومی هرچی استان برای ایران هست میاد
دومی رو می زارم :قم
با تغییر دومین لیست باکس اطلاعات لیست باکس سوم میشه شهرستانهای استان قم
حالا با انتخاب شهرستان ، توی لیست باکس چهارم فقط مناطق همون شهرستان دیده میشه.
تا کاربر منطقه موردنظرش رو انتخاب کنه.

shahriyar3
جمعه 19 مهر 1392, 20:28 عصر
نه مشکلم این نیست.
الان سه تا لیست باکس دارم.
اولی رو انتخاب می کنم:ایران
به شکل اتوماتیک توی دومی هرچی استان برای ایران هست میاد
دومی رو می زارم :قم
با تغییر دومین لیست باکس اطلاعات لیست باکس سوم میشه شهرستانهای استان قم
حالا با انتخاب شهرستان ، توی لیست باکس چهارم فقط مناطق همون شهرستان دیده میشه.
تا کاربر منطقه موردنظرش رو انتخاب کنه.
تعداد لیست باکس ها مهم نیست 4 تا یا 100 تا
پس من مشکل شما رو متوجه نشدم اگر دوست داشتی کد و بزار تا بشه کمک کرد. اگرنه با این توضیح هائی که میدی فکر نکنم بشه کاری کرد!

.fatemeh
جمعه 19 مهر 1392, 20:33 عصر
کد رو گذاشتم از لطف شما ممنون

<script>
tt2=new Array;
tt22=new Array;
tt222=new Array;
tt3=new Array;
tt33=new Array;
tt333=new Array;
tt4=new Array;
tt44=new Array;
tt444=new Array;
ttt2=0;
ttt3=0;
ttt4=0;
</script>
<?php
$dastor="select * from category";
$res=mysql_query($dastor);
while($val=mysql_fetch_array($res)){
$name1=$val['name'];
$code1=$val['id_c'];
$idt1=$val['id_s'];
?>
<script>
tt2[ttt2]=<?php echo $code1?>;
tt222[ttt2]=<?php echo "'".$name1."'"?>;
tt22[ttt2]=<?php echo $idt1?>;
ttt2++;
//alert(ttt2);
</script>
<?php
}
$dastor="SELECT * FROM `grouh` ";
$res=mysql_query($dastor);
while($val=mysql_fetch_array($res)){
$name1=$val['name'];
$code1=$val['id_g'];
$idt1=$val['id_c'];
?>
<script>
tt3[ttt3]=<?php echo $code1?>;
tt333[ttt3]=<?php echo "'".$name1."'"?>;
tt33[ttt3]=<?php echo $idt1?>;
ttt3++;
</script>
<?php }?>




<form name="form1" method="post" action="">
<table width="516" height="137" border="0" align="center" cellpadding="0" cellspacing="0" class="font">
<tr align="center" valign="middle" >
<td height="37" colspan="2" nowrap><strong>درج محصول </strong></td>
</tr>
<tr align="right" valign="middle" >
<td width="374" height="24" nowrap ><span class="red">
</span><span class="red">*</span> <select name="t1" class="fontfield" id="t1" onchange="what01()">
<option>-----------</option>
<?php
$o=0;
$dastor="select * from section";
$res=mysql_query($dastor);
while($val=mysql_fetch_array($res)){
$name1=$val['name'];
$code1=$val['id_s'];
if($o==0) $ID10101=$code1;
$o++;
echo "<option value='$code1'>$name1</option>";
}
?>
</select></td>
<td width="142" nowrap>:نام بخش </td>
</tr>
<tr align="right" valign="middle" >
<td height="25" nowrap><span class="red">
</span> <span class="red">*</span> <select name="t2" class="fontfield" id="t2" onChange="what02()">
<option>-----------</option>
<?php
$o=0;
$dastor="select * from category where id_s='$ID10101'";
$res=mysql_query($dastor);
while($val=mysql_fetch_array($res)){
$name1=$val['name'];
$code1=$val['id_c'];
$idt1=$val['id_s'];
if($o==0) $ID10102=$code1;
$o++;
echo "<option value='$code1'>$name1</option>";
}
?>
</select></td>
<td nowrap class="text">:نام مجموعه</td>
</tr>
<tr align="right" valign="middle" >
<td height="27" nowrap><select name="t3" class="fontfield" id="t3">
<option value="0">-----------</option>
<?php
$dastor="SELECT * FROM `grouh` WHERE id_c='$ID10102'";
$res=mysql_query($dastor);
while($val=mysql_fetch_array($res)){
$name1=$val['name'];
$code1=$val['id_g'];
$idt2=$val['id_c'];
echo "<option value='$code1'>$name1</option>";
}
?>
</select></td>
<td nowrap class="text">:نام گروه </td>
</tr>
<tr align="center" valign="bottom">
<td height="19" colspan="2" nowrap><input name="in" type="submit" class="button" id="in3" value=" درج "></td>
</tr>
</table>
</form>
<script>
function what01(){
x=document.getElementById("t1").options[document.getElementById("t1").selectedIndex].value;
y=document.getElementById("t2").options.length;
z=document.getElementById("t3").options.length;
for (m=y-1;m>=0;m--){document.getElementById("t2").options[m]=null;}
for (m=z-1;m>=0;m--){document.getElementById("t3").options[m]=null;}
i=0;
ii=0;
for (m=0;m<ttt2;m++){
if(tt22[m]==x) {document.getElementById("t2").options[i]=new Option(tt222[m],tt2[m]);
if(i==0){
for (mm=0;mm<ttt3;mm++){
if(tt33[mm]==tt22[m]){document.getElementById("t3").options[ii]=new Option(tt333[mm],tt3[mm]);ii++;}}}
i++;}}
what02();}
function what02(){
x=document.getElementById("t2").options[document.getElementById("t2").selectedIndex].value;
y=document.getElementById("t2").options.length;
z=document.getElementById("t3").options.length;
for (m=z-1;m>=0;m--){document.getElementById("t3").options[m]=null;}
i=0;
for (m=0;m<ttt3;m++){
if(tt33[m]==x) {
document.getElementById("t3").options[i]=new Option(tt333[m],tt3[m]);i++;}}}
</script>

shahriyar3
جمعه 19 مهر 1392, 21:19 عصر
من کد های شما رو اصلا نتونستم بخونم ولی بجاش اینو نوشتم تست کن ببین درست کار میکنه چون من تست نکردم
کد های صفحه ajax.php و خودت باید بنویسی
یک


$_POST['p']
$_POST['value']

هست که میتونی بخونی . p نشون میده الان کدوم selectbox انتخاب شده و value هم مقداری که انتخاب شده رو نشون میده

$(document).ready(function() {
$(".test").change(function(){
var p = $('.test').name();
var value = $('.test').val();
$.ajax({
type : "POST",
data:{p : p ,value : value },
url : "ajax.php",
success : function(data){
$("#div", window.top.document ).append(data);
}
});
});
});




<select name="t1" class="test" size="1">
<option value="1">test1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div id="div"></div>

خروجی صفحه ajax.php هم باید مثل همین کد html که نوشتم باشه .
name=t4 و class=test
name=t3 و class=test
name=t2 و class=test
div آخرش و هم نمیخواد

.fatemeh
شنبه 20 مهر 1392, 10:24 صبح
میشه توضیح بیشتری در مورد کد بدید؟
من توی صفحه ajax.php با مقدار p رو می گیرم و با select ها رو توی شرطها گذاشتم.ولی هیچ نتیجه ای نداد.
درست نمی دونم باید چه کارش کنم!
من اطلاعات رو دیتابیس میارم باید value مربوط به select قبلی رو بگیرم ولی انگار اصلا اینکار انجام نمی شه.

.fatemeh
شنبه 20 مهر 1392, 10:30 صبح
این کد رو هم دارم
دوتایی هست. کسی می تونه 4تایی اش کنه؟
خودم روش کار کردم شد فقط وقتی select دوم رو انتخاب میکنم سومین لیست باکس درست می شه ولی دومی برمیگرده با حالت قبل
و اطلاعاتش رو از دست میدم.
خیلی ضروریه :ناراحت:


SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
Database: `Work`
Table structure for table `category`
CREATE TABLE `category` (
`id` bigint(11) NOT NULL auto_increment,
`category_name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;

Dumping data for table "category":

INSERT INTO `category` (`id`, `category_name`) VALUES
(9, 'Electronics'),
(2, 'Mobiles'),
(3, 'Camera'),
(10, 'Home & Kitchen'),
(11, 'Apparel'),
(12, 'Gifts'),
(13, 'Appliances'),
(19, 'Medicine');

Table structure for table "company":

CREATE TABLE `company`
(
`id` bigint(11) NOT NULL auto_increment,
`cat_id` int(11) NOT NULL,
`company_name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;

Dumping data for table "company":

INSERT INTO `company` (`id`, `cat_id`, `company_name`) VALUES
(1, 2, 'Samsung'),
(2, 2, 'Nokia'),
(3, 2, 'LG'),
(6, 11, 'Rebook'),
(7, 11, 'Denim'),
(8, 11, 'Nike'),
(9, 13, 'Philips'),
(10, 13, 'Prestige'),
(11, 3, 'Nikon'),
(12, 3, 'Cannon'),
(13, 3, 'Sony'),
(14, 9, 'Tohsiba'),
(15, 9, 'Panasonic'),
(16, 12, 'Dinner Set'),
(31, 19, 'Generic'),
(18, 10, 'Samsung'),
(19, 10, 'LG'),
(30, 19, 'Branded'),
(32, 19, 'Ayurvedic '),
(29, 19, 'OTC'),
(33, 19, 'homeopethic');

Code Part

config.php
<?php
$host="localhost";
$username="root";
$password="";
$dbname="Work";
$con=mysql_connect("$host","$username","$password");
mysql_select_db("$dbname",$con);
?>
combo.php
<?php include('config.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=iso-8859-1" />
<title>Untitled Document</title>
<script language="javascript" type="text/javascript">
function showCompany(catid) { document.frm.submit();}
</script>
</head>
<body>
<form action="" method="post" name="frm" id="frm">
<table width="500" border="0">
<tr>
<td width="119">Category</td>
<td width="371">
<select name="cat_id" id="cat_id" onChange="showCompany(this.value);">
<option value="">--Select--</option>
<?php
$sql1="select * from category";
$sql_row1=mysql_query($sql1);
while($sql_res1=mysql_fetch_assoc($sql_row1)) {?>
<option value="<?php echo $sql_res1["id"]; ?>" <?php if($sql_res1["id"]==$_REQUEST["cat_id"]) { echo "Selected"; } ?>><?php echo $sql_res1["category_name"]; ?></option>
<?php } ?>
</select>
</td>
</tr>
<tr>
<td>Company</td>
<td id="td_company">
<select name="company_id" id="company_id">
<option value="">--Select--</option>
<?php
$sql="select * from company where cat_id='$_REQUEST[cat_id]'";
$sql_row=mysql_query($sql);
while($sql_res=mysql_fetch_assoc($sql_row)){ ?>
<option value="<?php echo $sql_res["id"]; ?>"><?php echo $sql_res["company_name"]; ?></option>
<?php }?>
</select>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>

.fatemeh
شنبه 20 مهر 1392, 13:09 عصر
این کد رو توی برنامه نویس بود.
چهارتایی شد ولی اطلاعات لیست باکس چهارم رو توی همون سومی نمایش میده.
تقریبا می دونم مشکلش کجاست ولی چون اشنایی مختصری با جاوااسکریپت دارم نتونستم درستش کنم.

<?php
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
mysql_query("set names utf8");
$res = mysql_query("select * from categories order by id");
$cats = array();
echo "<script language=javascript >
var cats = new Array();\n";
$flag = array();
while($data = mysql_fetch_assoc($res)){
if(!isset($flag[$data["parent"]])){
$flag[$data["parent"]] = true;
echo "cats[".$data["parent"]."] = new Array();\n";
}
echo "cats[".$data["parent"]."][".$data["id"]."] = '".$data["title"]."'\n";
$cats[$data["parent"]][$data["id"]] = $data["title"];
}
echo 'function changed(val,level){
if(level){
var Sel = document.form1.level2;
}else{
var Sel = document.form1.level1;
}
Sel.options.length = 0;
for(cat in cats[val]){
var title = cats[val][cat];
Sel.options[Sel.options.length] = new Option(title,cat);
}
}
</script>';
echo "<form name=form1 id=form1 >
<select id=level0 name=level0 onchange='changed(this.value,0);' >";
foreach($cats[0] as $id=>$cat){
echo "<option value='$id' >$cat</option>";
}
echo "</select>
<select id=level1 name=level1 onchange='changed(this.value,1);' ></select>
<select id=level2 name=level2 onchange='changed(this.value,2);'></select>
<select id=level3 name=level3 ></select>
</form>";?>

کد دیتابیس:

CREATE TABLE IF NOT EXISTS `categories` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` tinytext NOT NULL, `parent` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ; INSERT INTO `categories` (`id`, `title`, `parent`) VALUES(1, 'گروه یک', 0),(2, 'گروه دو', 0),(3, 'گروه سه', 1),(4, 'گروه چهار', 1),(5, 'گروه پنج', 2),(6, 'گروه شش', 2),(7, 'گروه هفت', 3),(8, 'گروه هشت', 3),(9, 'گروه نه', 4),(10, 'گروه ده', 4),(11, 'گروه یازده', 5),(12, 'گروه دوازده', 5),(13, 'گروه سیزده', 6),(14, 'گروه چهارده', 6),
(15, 'گروه پانزده', 14),
(16, 'گروه شانزده', 14);

.fatemeh
شنبه 20 مهر 1392, 13:50 عصر
درست شد :لبخند:
خودم تونستم همون کددوم رو اصلاح کنم.
به جای

if(level){
var Sel = document.form1.level2;
گذاشتم

if(level){
if(level==1){ var Sel = document.form1.level2;}
if(level==2){ var Sel = document.form1.level3;}
}