PDA

View Full Version : حرفه ای: نحوه ایجاد گروه و زیر گروه



p30_code
پنج شنبه 17 اسفند 1391, 22:19 عصر
سلام برای ایجاد گروه و زیر گروه چگونه select بزنم راهنمایی کنید
محصولات:

+کامپیوتر
__________ +لپ تاپ
____________________ -ایسوس
____________________ -سونی
____________________ -اچ پی
__________ +دسکتاپ
____________________+اپل رومیزی
______________________________+مدل D8980
________________________________________ - با Ram DDR3 4mb
________________________________________ - با Ram DDR3 8mb
______________________________ - مدل Fg9900
________________________________________- پک ایز ایران

+پرینتر
__________+hp
____________________-HP1100
____________________-HP1287
.
.
.

خب من نظرم اینه که جدول زیر رو داشته باشم:

Products:

ID
Name
Parent
ParentID

----------------------------
1
Computer
Flase
0
------------
2
LapTop
true
1
------------
3
Desktop
true
1
------------
4
Asus
true
2
------------
5
sony
true
2
------------
6
Apple
true
3
------------
7
D8980
true
6
------------
8
DDr3 8mb
true
7
------------
9
DDr3 4mb
true
7

mamali-mohammad
پنج شنبه 17 اسفند 1391, 22:24 عصر
true و false نیاز نیست
همون id و name و parentid کافیه

p30_code
پنج شنبه 17 اسفند 1391, 23:06 عصر
من دستور کوئری شو می خواشتم بدونم به چه صورت می باشد.
با استفاده از لیست باکس

css-man
پنج شنبه 17 اسفند 1391, 23:59 عصر
این تابع رو من نوشتم واسه ساخت گروه برای گالری که برای هر چیزی میشه استفاده کرده







function addcat()
{

if(isset($_POST['submit']))
{
if(!empty($_POST['name']))
{
$name=$_POST['name'];
}
else
{
echo"نام را وارد کنید";
}
$q="SELECT * FROM `gallery_cat` WHERE `name`='$name' ";
$r=$this->database->runQuery($q);
$count=$this->database->counter($r);
if($count>0)
{
echo "نام آلبوم تکراری است";
}
else
{
$q="INSERT INTO `gallery_cat` VALUES('','$name','0')";
$r=$this->database->runQuery($q);
if($r)
{

echo "ثبت نام موفقیت آمیز بود";

}
else
{
echo mysql_error();
}
}
}
}





برای زیر گروه هم از این استفاده کن منطقش به این شکله که نام مییره بعد آدی گروه رو میگیره بعد چک میکنه که قبلا ثبت نشده باشه اگر درست بود ثبت میشه





function addSubCategory($title,$parent_id)
{
$q = " SELECT * FROM `groups` WHERE `title` = '$title' AND `parent_id` = '$parent_id' ";
$r = $this->db->runQuery($q);
$c = $this->db->getCountRows($r);
if($c > 0)
{
return 2;
}
else
{
$qAdd = "INSERT INTO `groups` VALUES ('','$title','$parent_id')";
return $this->db->runQuery($qAdd);
}
}

p30_code
جمعه 18 اسفند 1391, 08:59 صبح
در مورد فرم ها به چه صورت می باشد.

T.R.G.T
جمعه 18 اسفند 1391, 09:47 صبح
id
name
alias
parent

آیدی برای زمانیه که اسم مستعار از طرف کاربر وارد نشه
نام برای نمایش برای کاربره(نمیشه از نام برای مرتب سازی و.. استفاده کرد چون ممکنه چندین بار استفاده بشه)
نام مستعار برای استفاده سیستمه (مرتب سازی و... و نباید تکراری باشه)
در قسمت پرنت هم نام مستعار گروه مادر قرار میگیره

ایجاد گروه خیلی آسونه ولی نمایشش یزره کارداره
من راه های مختلفی امتحان کردم و بهترین نتیجه یه تابع بازگشتی بود چون نمیدونیم یه گروه چنتا زیر گروه داره و اون زیر گروه هم خودش چنتا زیر گروه داره

exlord
جمعه 18 اسفند 1391, 15:00 عصر
id
title
parentId default=0



$q = "select * from `table` order by parentId ASC";
$data = $db->query($q);

$parents = array();

foreach ($data as $row) {
$parents[$row['parentId']] = $row;
}

function printItems($data, $indent, $parent)
{
foreach ($data[$parent] as $row) {
echo str_repeat('-', $indent) . $row['title'] . "<br/>";
if (isset($data[$row['id']])) {
printItems($data, ++$indent, $row['id']);
--$indent;
}
}
}

printItems($parents, 0, 0);

mojtaba.baghban
جمعه 18 اسفند 1391, 15:10 عصر
به نظر من ساختار جدول مناسب نیست. با اصول نرمال‌سازی هماهنگ نیست.
شما باید یه جدول به نام categories داشته باشیم مثلا به این شکل

create table categories
(
id integer primarey key;
name varchar(50) not null;
parentid integer references categories(id) null;
)

بعد تو جدول products یه فیلد به نام categoryid میذاری که کلید خارجی باشه و به فیلد id از جدول categories اشاره کنه

T.R.G.T
جمعه 18 اسفند 1391, 16:04 عصر
<?php
function find_category(){
$ar_ix=func_num_args();
$ar_ar=func_get_args();
if($ar_ix > 0){
$parent_category=$ar_ar[0];
}else{
$parent_category='';
}
$find_category_sql_obj=new mysql('read','categorys','*','','','parent=\''.$pa rent_category.'\'');
$find_category_sql_count=mysql_num_rows($find_cate gory_sql_obj->read());
for($i=0;$i<$find_category_sql_count;$i++){
$find_category=mysql_result($find_category_sql_obj->read(),$i,'alias');
$category.='<ul>'.$find_category.'</ul>';
if(chec_category_child($find_category)){
$find_child_category=find_category($find_category) ;
$category.='<ul>'.$find_child_category.'</ul>';
}
}
return $category;
}
function chec_category_child($categary){
$chec_category_child_sql_obj=new mysql('read','categorys','*','','','parent=\''.$ca tegary.'\'');
$chec_category_child_sql_count=mysql_num_rows($che c_category_child_sql_obj->read());
if($chec_category_child_sql_count){
return true;
}else{
return false;
}
}
$ac=find_category();
echo $ac;
?>



id
name
alias
parent