Amir_f
شنبه 23 فروردین 1393, 09:29 صبح
من دارم برای خودم یک شجره نامه می سازم
امکانات فعلی که داره فعلا در همین حد هست که یک کاربر می تونه : 1-پدر 2- مادر 3-همسر 4- فرزندانش رو ببینه
جدول کاربران به شکل زیر است ( شاید نوع فیلد ها رو درست تعیین نکرده باشم )
<?php
class m140411_160139_create_tbl_user extends CDbMigration
{
public function up()
{
$this->createTable('tbl_user',
array(
'id'=>'pk',
'name'=>'string',
'family'=>'string',
'shsh'=>'string', // shomare shenasname
'tt'=>'datetime',
'vazeiyat'=>'int(2)',
'sex'=>'int(2)',
'hamsar_id'=>'int(11)',
'father_id'=>'int(11)',
'mother_id'=>'int(11)',
), 'ENGINE=InnoDB'
);
$this->addForeignKey("hamsar", "tbl_user", "hamsar_id", "tbl_user", "id", "CASCADE", "CASCADE");
$this->addForeignKey("father", "tbl_user", "father_id", "tbl_user", "id", "CASCADE", "CASCADE");
$this->addForeignKey("mother", "tbl_user", "mother_id", "tbl_user", "id", "CASCADE", "CASCADE");
}
public function down()
{
$this->dropForeignKey("hamsar", "tbl_user");
$this->dropForeignKey("father", "tbl_user");
$this->dropForeignKey("mother", "tbl_user");
$this->dropTable('tbl_user');
}
}
اینم کدم برای نمایش توی index.php
<?php
$user =USER::model()->find('id=?',array($_GET["uid"]));
?>
<?php if ($user->vazeiyat !== 0 ): ?>
<div class="bb">
<img src="<?php echo 'http://localhost/tree/images/'.$user->id.'.png' ?>"/>
<?php if ($user->hamsar !== null): ?> <!-- ازدواج کرده -->
<img src="<?php echo 'http://localhost/tree/images/'.$user->hamsar->id.'.png' ?>"/>
<?php endif ; ?>
</div>
<?php
if ($user->sex == 1 ) { // گاربر مرداست
$childs = USER::model()->findAll('father_id=?', array($_GET["uid"]));
} else { // کاربر زن است
$childs = USER::model()->findAll('mother_id=?', array($_GET["uid"]));
}
?>
<?php foreach ($childs as $chi): ?> <!-- فرزندان در صورت داشتن فرزند -->
<div class="bb chi">
<img src="<?php echo 'http://localhost/tree/images/'.$chi->id.'.png' ?>" />
<?php if ($chi->hamsar !== null): ?> <!-- فرزنذ ازدواج کرده -->
<img src="<?php echo 'http://localhost/tree/images/'.$chi->hamsar->id.'.png' ?>" />
<br/>
<?php endif; ?>
<?php
if ($chi->sex == 1 ) { // فرزند پسر است
$nave = USER::model()->findAll('father_id=?', array($chi->id));
} else { // فرزند دختر است
$nave = USER::model()->findAll('mother_id=?', array($chi->id));
}
?>
<br/>
<?php foreach ($nave as $navee): ?> <!-- نوه !!!!! -->
<img src="<?php echo 'http://localhost/tree/images/'.$navee->id.'.png' ?>" />
<?php if ($navee->hamsar !== null): ?>
<img src="<?php echo 'http://localhost/tree/images/'.$navee->hamsar->id.'.png' ?>" />
<?php endif; ?>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
<?php endif ?>
من الان برای هر نسل نمیتونم از تابع برگشتی استفاده کنم که به کمکش اگه کاربری چند نسل از مشخصات اعضای خانوادش در دیتابیس بود بتونه تصاویر همه شون رو ببینه ، یعنی هر نسل رو توی یک ردیف . ( اگه امکانش هست راهنماییم کنید ) به عنوان مثال کاربر 1 اگه پدر بزرگ کاربر 5 باشه مشکلی نداره (عکس خودش 1 و همسرش 2 نمایش داده میشه در خط بعدی عکس پسرش 3 و همسر پسرش 4 نمایش داده میشه و در ردیف بعدی هم عکس نوه اش که 5 هست ولی دیگه از اینجا نسل بعدی رو در صورت وجود داشتن نمیشه برای کاربر 1 نمایش داد
فعلا فقط می خوام به صورت یک درخت اعضای خانواده رو نشون بدم . و بعد مشخصاتی رو اضافه می کنم ( از قبیل تاریخ تولد ، نماد سال تولد و ... )
بنظرتون رابطه رو توی جدول درست تعریف کردم ؟
امکانات فعلی که داره فعلا در همین حد هست که یک کاربر می تونه : 1-پدر 2- مادر 3-همسر 4- فرزندانش رو ببینه
جدول کاربران به شکل زیر است ( شاید نوع فیلد ها رو درست تعیین نکرده باشم )
<?php
class m140411_160139_create_tbl_user extends CDbMigration
{
public function up()
{
$this->createTable('tbl_user',
array(
'id'=>'pk',
'name'=>'string',
'family'=>'string',
'shsh'=>'string', // shomare shenasname
'tt'=>'datetime',
'vazeiyat'=>'int(2)',
'sex'=>'int(2)',
'hamsar_id'=>'int(11)',
'father_id'=>'int(11)',
'mother_id'=>'int(11)',
), 'ENGINE=InnoDB'
);
$this->addForeignKey("hamsar", "tbl_user", "hamsar_id", "tbl_user", "id", "CASCADE", "CASCADE");
$this->addForeignKey("father", "tbl_user", "father_id", "tbl_user", "id", "CASCADE", "CASCADE");
$this->addForeignKey("mother", "tbl_user", "mother_id", "tbl_user", "id", "CASCADE", "CASCADE");
}
public function down()
{
$this->dropForeignKey("hamsar", "tbl_user");
$this->dropForeignKey("father", "tbl_user");
$this->dropForeignKey("mother", "tbl_user");
$this->dropTable('tbl_user');
}
}
اینم کدم برای نمایش توی index.php
<?php
$user =USER::model()->find('id=?',array($_GET["uid"]));
?>
<?php if ($user->vazeiyat !== 0 ): ?>
<div class="bb">
<img src="<?php echo 'http://localhost/tree/images/'.$user->id.'.png' ?>"/>
<?php if ($user->hamsar !== null): ?> <!-- ازدواج کرده -->
<img src="<?php echo 'http://localhost/tree/images/'.$user->hamsar->id.'.png' ?>"/>
<?php endif ; ?>
</div>
<?php
if ($user->sex == 1 ) { // گاربر مرداست
$childs = USER::model()->findAll('father_id=?', array($_GET["uid"]));
} else { // کاربر زن است
$childs = USER::model()->findAll('mother_id=?', array($_GET["uid"]));
}
?>
<?php foreach ($childs as $chi): ?> <!-- فرزندان در صورت داشتن فرزند -->
<div class="bb chi">
<img src="<?php echo 'http://localhost/tree/images/'.$chi->id.'.png' ?>" />
<?php if ($chi->hamsar !== null): ?> <!-- فرزنذ ازدواج کرده -->
<img src="<?php echo 'http://localhost/tree/images/'.$chi->hamsar->id.'.png' ?>" />
<br/>
<?php endif; ?>
<?php
if ($chi->sex == 1 ) { // فرزند پسر است
$nave = USER::model()->findAll('father_id=?', array($chi->id));
} else { // فرزند دختر است
$nave = USER::model()->findAll('mother_id=?', array($chi->id));
}
?>
<br/>
<?php foreach ($nave as $navee): ?> <!-- نوه !!!!! -->
<img src="<?php echo 'http://localhost/tree/images/'.$navee->id.'.png' ?>" />
<?php if ($navee->hamsar !== null): ?>
<img src="<?php echo 'http://localhost/tree/images/'.$navee->hamsar->id.'.png' ?>" />
<?php endif; ?>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
<?php endif ?>
من الان برای هر نسل نمیتونم از تابع برگشتی استفاده کنم که به کمکش اگه کاربری چند نسل از مشخصات اعضای خانوادش در دیتابیس بود بتونه تصاویر همه شون رو ببینه ، یعنی هر نسل رو توی یک ردیف . ( اگه امکانش هست راهنماییم کنید ) به عنوان مثال کاربر 1 اگه پدر بزرگ کاربر 5 باشه مشکلی نداره (عکس خودش 1 و همسرش 2 نمایش داده میشه در خط بعدی عکس پسرش 3 و همسر پسرش 4 نمایش داده میشه و در ردیف بعدی هم عکس نوه اش که 5 هست ولی دیگه از اینجا نسل بعدی رو در صورت وجود داشتن نمیشه برای کاربر 1 نمایش داد
فعلا فقط می خوام به صورت یک درخت اعضای خانواده رو نشون بدم . و بعد مشخصاتی رو اضافه می کنم ( از قبیل تاریخ تولد ، نماد سال تولد و ... )
بنظرتون رابطه رو توی جدول درست تعریف کردم ؟