armsoftpc
پنج شنبه 19 آبان 1390, 20:21 عصر
به نام خدا
با سلام
من در قسمت نمایش پدر و فرزند زیر هم دیگر مشکل دارم ، چگونه هر فرزندی را زیر پدر خود نمایش دهیم ، حتی اگه بین آن ها موضوعی درج شود و آن موضوع خود بچه ی پدری باشد.
ممکن است منظور من را متوجه نشده باشید، اما به کد زیر دقت کنید:
<?php
function arm_nbsp($n_id) {
$x='';
$result=arm_query("select depth from `cats` where cat_id='$n_id'");
$row=$result->fetch_array();
$p=$row[0];
for($i=0; $i<$p; $i++) {
$x.=" ";
}
return $x;
}
if(isset($_POST["a_cat_id"]))
{
@$cat_id=$_POST["a_cat_id"];
@$cat_name=$_POST["a_cat_name"];
@$parent_id=$_POST["a_parent_id"];
$q_depth=arm_query("select depth from cats where cat_id='$parent_id'");
$f_depth=$q_depth->fetch_array();
$f_depth=$f_depth[0];
if($parent_id==0) {
$cat_depth=0;
echo "<br /> شرط اول اجرا شد";
}
else {
$cat_depth=$f_depth;
$cat_depth=$cat_depth+1;
echo "<br /> شرط دوم اجرا شد";
}
echo "<br />عمق: ".$cat_depth;
arm_query("insert into cats value ('$cat_id', '$parent_id', '$cat_name', '$cat_depth')");
}
/*$arm_var=new ARM_DB;
$arm_var=$arm_var->getnewid();*/
?>
<form action="index.php" method="post">
شناسه موضوع:<input type="text" name="a_cat_id"><br>
نام موضوع:<input type="text" name="a_cat_name"><br>
<?php
$result=arm_query("select * from cats order by depth");
echo "زير مجموعه: <select name='a_parent_id' dir='rtl'>";
echo '<option value="0" selected="selected">— مادر دسته —</option><br>';
for($i=0; $i<$result->num_rows; $i++) {
$row = $result->fetch_object();
$r_cat_id=$row->cat_id;
$r_cat_name=$row->cat_name;
echo '<option value="'.$r_cat_id.'">'.arm_nbsp($r_cat_id).$r_cat_name.'</option><br>';
}
echo '</select>';
?><br />
<input type="submit" value="ارسال" />
</form>
در ضمن تابع arm_query همان برابر تابع mysql_query است.
دوستان یه بار این کد را اجرا کنند ، همانطور که می بینید کد مشکل ندارد اما مجموعه در زیر مجموعه خود نمایش داده نمی شود.
کد زیر هم sql جدول هایی که به آن متصل می شود است:
CREATE TABLE `cats` (
`cat_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL DEFAULT '0',
`cat_name` varchar(255) NOT NULL DEFAULT '',
`depth` int(5) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`cat_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
INSERT INTO `cats` VALUES (1,0,'بازی',0);
INSERT INTO `cats` VALUES (2,1,'استراتژیک',1);
INSERT INTO `cats` VALUES (3,1,'ماجرایی',1);
INSERT INTO `cats` VALUES (4,2,'جنگهای صلیبی',2);
INSERT INTO `cats` VALUES (5,0,'نرم افزار',0);
INSERT INTO `cats` VALUES (6,5,'شبکه',1);
INSERT INTO `cats` VALUES (7,5,'برنامه نویسی',1);
INSERT INTO `cats` VALUES (8,5,'گرافیک',1);
INSERT INTO `cats` VALUES (9,0,'موسیقی',0);
INSERT INTO `cats` VALUES (10,5,'فارسی',1);
INSERT INTO `cats` VALUES (11,3,'شیکاگو',2);
INSERT INTO `cats` VALUES (12,10,'سالنامه سلامت',2);
اینم فیلمی از کار:
77708
با سلام
من در قسمت نمایش پدر و فرزند زیر هم دیگر مشکل دارم ، چگونه هر فرزندی را زیر پدر خود نمایش دهیم ، حتی اگه بین آن ها موضوعی درج شود و آن موضوع خود بچه ی پدری باشد.
ممکن است منظور من را متوجه نشده باشید، اما به کد زیر دقت کنید:
<?php
function arm_nbsp($n_id) {
$x='';
$result=arm_query("select depth from `cats` where cat_id='$n_id'");
$row=$result->fetch_array();
$p=$row[0];
for($i=0; $i<$p; $i++) {
$x.=" ";
}
return $x;
}
if(isset($_POST["a_cat_id"]))
{
@$cat_id=$_POST["a_cat_id"];
@$cat_name=$_POST["a_cat_name"];
@$parent_id=$_POST["a_parent_id"];
$q_depth=arm_query("select depth from cats where cat_id='$parent_id'");
$f_depth=$q_depth->fetch_array();
$f_depth=$f_depth[0];
if($parent_id==0) {
$cat_depth=0;
echo "<br /> شرط اول اجرا شد";
}
else {
$cat_depth=$f_depth;
$cat_depth=$cat_depth+1;
echo "<br /> شرط دوم اجرا شد";
}
echo "<br />عمق: ".$cat_depth;
arm_query("insert into cats value ('$cat_id', '$parent_id', '$cat_name', '$cat_depth')");
}
/*$arm_var=new ARM_DB;
$arm_var=$arm_var->getnewid();*/
?>
<form action="index.php" method="post">
شناسه موضوع:<input type="text" name="a_cat_id"><br>
نام موضوع:<input type="text" name="a_cat_name"><br>
<?php
$result=arm_query("select * from cats order by depth");
echo "زير مجموعه: <select name='a_parent_id' dir='rtl'>";
echo '<option value="0" selected="selected">— مادر دسته —</option><br>';
for($i=0; $i<$result->num_rows; $i++) {
$row = $result->fetch_object();
$r_cat_id=$row->cat_id;
$r_cat_name=$row->cat_name;
echo '<option value="'.$r_cat_id.'">'.arm_nbsp($r_cat_id).$r_cat_name.'</option><br>';
}
echo '</select>';
?><br />
<input type="submit" value="ارسال" />
</form>
در ضمن تابع arm_query همان برابر تابع mysql_query است.
دوستان یه بار این کد را اجرا کنند ، همانطور که می بینید کد مشکل ندارد اما مجموعه در زیر مجموعه خود نمایش داده نمی شود.
کد زیر هم sql جدول هایی که به آن متصل می شود است:
CREATE TABLE `cats` (
`cat_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL DEFAULT '0',
`cat_name` varchar(255) NOT NULL DEFAULT '',
`depth` int(5) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`cat_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
INSERT INTO `cats` VALUES (1,0,'بازی',0);
INSERT INTO `cats` VALUES (2,1,'استراتژیک',1);
INSERT INTO `cats` VALUES (3,1,'ماجرایی',1);
INSERT INTO `cats` VALUES (4,2,'جنگهای صلیبی',2);
INSERT INTO `cats` VALUES (5,0,'نرم افزار',0);
INSERT INTO `cats` VALUES (6,5,'شبکه',1);
INSERT INTO `cats` VALUES (7,5,'برنامه نویسی',1);
INSERT INTO `cats` VALUES (8,5,'گرافیک',1);
INSERT INTO `cats` VALUES (9,0,'موسیقی',0);
INSERT INTO `cats` VALUES (10,5,'فارسی',1);
INSERT INTO `cats` VALUES (11,3,'شیکاگو',2);
INSERT INTO `cats` VALUES (12,10,'سالنامه سلامت',2);
اینم فیلمی از کار:
77708