-
مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
سلام:
من یه منوی داینامیک درست کردم که اطلاعات و از دیتابیس میخونه و یه جدول توی پنل ادمین درست کردم که ادمین بتونه این امکان و داشته باشه خودش یه منو اضافه کنه و همینطور لینک دادن به این منوها طبق صفحاتی که قبلا درست شده انجام میشه یعنی ادمین از یک drop menu که توش صفحاتی که قبلا آماده شده و لود میشه لینک منو و انتخاب میکنه.
مشکلم الان اینه که وقتی یه منوی parent میذارم و براش sub-menu میذارم اولین اطلاعات وارد شده رو درست نشون میده ولی بعدی ها نه یعنی sub-menu آیدی منوی parent بالاتر و میگیره.
یه مشخصات کلی از جدول های دیتابیسم میدم:
1- جدولی که متنم توی اون قرار داره و فیلدهاش اینه : id , pagename, pagesubject, title,img, text, keyword, description
2-جدول اسم صفحات(به جای اسم صفحات در جدول متن آیدی صفحات وارد میشه): id,pagename
3-جدول منو : menu_id , menu_name
4-جدول زیر منوها: subid,sub_menu,menu_id,link
کد فرمم :
کد HTML:
کد:
<form action="newpage.php" method="post">
<a id="close">
<img src="images/1370474235_cross-button.png" width="16" height="16" style="cursor:pointer;"/>
</a>
<div id="maintbl" >
<div id="lefttbl">
<input type="text" name="parent" id="parent" class="inp4" value="parent"/>
<br /><br />
<input type="text" name="child1" id="child1" class="inp4" />
<br /> <br /><br />
<select name="url" id="url" class="page">
<?php while($rowpg=mysql_fetch_assoc($sqlpagename)){
echo"<option id='pagename' value='{$rowpg['id']}'>{$rowpg['pagename']}</option>";
}
?>
</select>
کد insert:
function menu(){
if(isset($_POST['addto'])){
$parent=$_POST['parent'];
$child1=$_POST['child1'];
$url=$_POST['url'];
$menuquery=mysql_query("SELECT * FROM `menu`");
while($rowmenu=mysql_fetch_assoc($menuquery)){
$menu_id=$rowmenu['menu_id'];}
و کد فراخوانی منو و اطلاعات:
<div id="menuleft">
<ul class="parul">
<?php
$query = mysql_query("SELECT * FROM `menu` ");
while($row = mysql_fetch_assoc($query)){ ?>
<li class="sub"><?php echo $row['menu_name'];?>
<ul class="uch">
<?php
$city_query = mysql_query("SELECT * FROM `sub_menu` WHERE `menu_id`=".$row['menu_id']);
while($r1 = mysql_fetch_array($city_query)){ ?>
<li class="child"><a href="<?php echo $r1['link'];?>"><?php echo $r1['sub_menu'];?></a></li>
<?php } ?>
</ul>
</li>
<?php } ?>
</ul>
</div>
ممنون میشم اگه راهنماییم کنید
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
سلام؛
پیشنهاد من این هست که شما این سه مورد رو به ترتیب چک کنی:
۱. اینکه آیا دادهها تو دیتابیس درست ثبت میشن یا نه (id مربوط به parent درست هست یا نه)
۲. اینکه زمان load دادهها به درستی خونده میشن یا نه و اینکه دادهها به درستی به دست کلاینت میرسن یا نه.
۳. در مرحله آخر اگر باز هم مشکل وجود داشت، ممکنه اشکال از css ها باشه که submenu ها در parent اولی نمایش میده.
موفق باشی
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
ممنون از راهنماییتون.
id مربوط به parent به درستی ذخیره میشه ولی برفرض اگر id منوی parent 14 باشه توی جدول زیر منوها زیر منوی مربوط به این parent هر کاری میکنم یا 0 نشون میده یا 13 توی نمایش مشکلی نداره ولی خب به تربیبی که توی دیتابیس هست و منو و زیر منو و به هم ربط میده
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
راستش من متوجه این قسمت نشدم:
نقل قول:
توی جدول زیر منوها زیر منوی مربوط به این parent هر کاری میکنم یا 0 نشون میده یا 13
ولی اگر اون چیزی که من برداشت میکنم درست باشه، احتمالا تو insert مقادیر parentID مشکلی وجود داره. این مشکل از دو تا چیز ممکنه به وجود اومده باشه، ۱. ممکن هست که اصلا داده درست به سرور ارسال نشده باشه، برای اطمینان شما میتونی متغیرهای post و get خودت رو یک جا لاگ کنی و چک کنی که آیا دادهها درست به سرور ارسال میشن یا نه. ۲. ممکن هست مشکل از کد sql باشه.
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
این کد insert که یکمی تغییرش دادم ولی بازم نمیشه:
function menu(){
if(isset($_POST['addto'])){
$parent=$_POST['parent'];
$child1=$_POST['child1'];
$url=$_POST['url'];
$menuquery=mysql_query("SELECT * FROM `menu`");
$rowmenu=mysql_fetch_assoc($menuquery);
$query = mysql_query("SELECT * FROM `sub_menu`");
$r1 = mysql_fetch_array($query);
$id=$r1['menu_id'];
if($id == $rowmenu['menu_id']){
$menu_id= $rowmenu['menu_id'];
}
mysql_query("INSERT INTO `menu` (`menu_name`)VALUES('$parent')")or die(mysql_error());
mysql_query("INSERT INTO `sub_menu` (`sub_menu`,`menu_id`,`link`)VALUES('$child1','$me nu_id','$url') ")or die(mysql_error());
}
}
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
احتمالا مشکل از این قسمت کد باشه:
$id=$r1['menu_id']; if($id == $rowmenu['menu_id']){ $menu_id= $rowmenu['menu_id']; }
عبارتهای زیر رو اجرا کن ببین کوئری همون چیزی هست که باید باشه:
echo "INSERT INTO `menu` (`menu_name`)VALUES('$parent')";
echo
"INSERT INTO `sub_menu` (`sub_menu`,`menu_id`,`link`)VALUES('$child1','$me nu_id','$url') ";
exit;
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
اجرا کرد $menu_id ازش ایراد میگیره منم فکر میکنم ایراد از:
$id=$r1['menu_id']; if($id == $rowmenu['menu_id']){ $menu_id= $rowmenu['menu_id']; }
باشه ولی نمیدونم که چیکار کنم کهتشخیص بده توی جدول زیر منوها بفهمه که الان آیدی parent چنده که زیرمنو بهش ربط بدهی یعنی دقیقا ثبت آیدی منو که در جدول منوها هست در جدول sub_menu درست ذخیره بشه
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
کدت چند تا ایراد داره، باید اینطوری باشه:
if(isset($_POST['addto'])){
$parent=$_POST['parent'];
$child1=$_POST['child1'];
$url=$_POST['url'];
$sw = true;
$menuquery=mysql_query("SELECT * FROM `menu`");
while ($sw && $rowmenu=mysql_fetch_assoc($menuquery)) {
$query = mysql_query("SELECT * FROM `sub_menu`");
while ($sw && $r1=mysql_fetch_array($query)) {
$id=$r1['menu_id'];
if($id == $rowmenu['menu_id']){
$menu_id= $rowmenu['menu_id'];
$sw = false;
}
}
}
mysql_query("INSERT INTO `menu` (`menu_name`)VALUES('$parent')")or die(mysql_error());
mysql_query("INSERT INTO `sub_menu` (`sub_menu`,`menu_id`,`link`)VALUES('$child1','$me nu_id','$url') ")or die(mysql_error());
}
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
چند تا سوال ؟؟ شما مشکلتون در خروجی هست یعنی نمیتونید زیر منوها رو نشان بدید یا هنگام اینسرت مشکل دارید اول این مشخص کنید بعد تا چند مرحله میشه زیر منو وارد کرد اینم بگید من براتون یه کوئری مینویسم .
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
از $menu_id ایراد میگیره Undefined
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
marys_farahani
چند تا سوال ؟؟ شما مشکلتون در خروجی هست یعنی نمیتونید زیر منوها رو نشان بدید یا هنگام اینسرت مشکل دارید اول این مشخص کنید بعد تا چند مرحله میشه زیر منو وارد کرد اینم بگید من براتون یه کوئری مینویسم .
ببینید توی خروجی هر چیزی که توی دیتابیس هست نشون میده من امتحان کردم وقتی دستی اطلاعات و وارد دیتابیس میکنم توی خروجی درست نشون میده اما زمانیکه از طریق کد insert وارد دیتابیس میکنم توی جدول menu اطلاعات وارد میشه ولی توی جدول sub_menu آیدی صحیح ووارد نمیکنه مثلا اگه menu_id توی جدول menu 3 باشه توی جدول sub_menu مقدار menu_id و به جای 3 عدد 0 نشون میده
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
lili.lrp
ببینید توی خروجی هر چیزی که توی دیتابیس هست نشون میده من امتحان کردم وقتی دستی اطلاعات و وارد دیتابیس میکنم توی خروجی درست نشون میده اما زمانیکه از طریق کد insert وارد دیتابیس میکنم توی جدول menu اطلاعات وارد میشه ولی توی جدول sub_menu آیدی صحیح ووارد نمیکنه مثلا اگه menu_id توی جدول menu 3 باشه توی جدول sub_menu مقدار menu_id و به جای 3 عدد 0 نشون میده
اول منو رو insert میکنی بعد کوئری select میزنی و ای دی میگیری و هنگام وارد کردن sub menu به جای menu_id -> ای دی منو اصلی رو میگذاری درسته ؟؟ روند کارت اینطوریه ؟؟
چون اول باید منو اصلی ایجاد بشه بعد ای دی بگیری بریزی به جایی منو ای دی ثانویه ؟ همزمان نمیتونی اینها رو اینسرت کنی
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
بله میخوام اول منوی اصلی وارد بشه بعد زیر منو و menu_id از جدول منو وارد جدول sub_menu هم بشه یه طوریکه مشخص بشه زیر منو تعلق به کدوم منوی اصلیه
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
lili.lrp
از $menu_id ایراد میگیره Undefined
دلیلش اینه که وارد شرط نمیشه و متغیرت مقدار نمیگیره، کدی که من گذاشتم و چک کردی؟
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
lili.lrp
بله میخوام اول منوی اصلی وارد بشه بعد زیر منو و menu_id از جدول منو وارد جدول sub_menu هم بشه یه طوریکه مشخص بشه زیر منو تعلق به کدوم منوی اصلیه
برو اونجایی که ای دی منو اصلی رو میخواد بریزه برای زیر منو ببین اصلا محتوا داره ؟؟ بعد اگه درست بود نگاه کن که هنگام اینسرت کردن برای دیتابیس مقداری رو درست نوشتی مثلا جا به جا ننوشتی
INSERT INTO `sub_menu` (`sub_menu`,`menu_id`,`link`)VALUES('submenu','men uid','$link') "
همینطوری مرحله به مرحله تست کن.
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
من به یه چیزی توجه نکرده بودم شما گفتید که همزمان نیمشه insert کرد کدهام و به این شکل تغییر دادم ولی الان فقط آیدی اولین منوی اصلی و از جدول menu نشون میده فکر کنم while نیاز داره نمیدونم دقیقا while و باید کجا ازش استفاد کنم
if(isset($_POST['addto'])){
$parent=$_POST['parent'];
mysql_query("INSERT INTO `menu` (`menu_name`)VALUES('$parent')")or die(mysql_error());
$menuquery=mysql_query("SELECT * FROM `menu`");
$rowmenu=mysql_fetch_assoc($menuquery);
$child1=$_POST['child1'];
$url=$_POST['url'];
$menu_id=$rowmenu['menu_id'];
mysql_query("INSERT INTO `sub_menu` (`sub_menu`,`menu_id`,`link`)VALUES('$child1','$me nu_id','$url') ")or die(mysql_error());
}
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
درست شد:
if(isset($_POST['addto'])){
$parent=$_POST['parent'];
mysql_query("INSERT INTO `menu` (`menu_name`)VALUES('$parent')")or die(mysql_error());
$menuquery=mysql_query("SELECT * FROM `menu`");
while($rowmenu=mysql_fetch_assoc($menuquery)){
$child1=$_POST['child1'];
$url=$_POST['url'];
$menu_id=$rowmenu['menu_id'];}
mysql_query("INSERT INTO `sub_menu` (`sub_menu`,`menu_id`,`link`)VALUES('$child1','$me nu_id','$url') ")or die(mysql_error());
}
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
شما در اینجا دارید منوها اصلی انتخاب میکنید . و همه رو میریزد دارید یه ارایه
$menuquery=mysql_query("SELECT * FROM `menu`"); $rowmenu=mysql_fetch_assoc($menuquery);
در صورتی که باید شرط بزارید که فقط اون منو خاص رو براتون برگردون WHERE id = $id چون داری واسه یه منو خاص زیرمجموعه ایجاد میکنی درسته ؟؟
اگه این برای پنل ادمینتونت هست ؟
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
بله برای پنل ادمینه. کاری که کردم غیر اصولیه؟
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
lili.lrp
بله برای پنل ادمینه. کاری که کردم غیر اصولیه؟
بله کارتون یکم غیراصولیه
شما باید برای ایجاد زیر منو ای دی منو اصلی رو داشته باشید .
الان متوجه شدی باید چیکار کنی یا سردرگم شدی ؟ میخوایی اون تیکه کدت برام بفرستی برات درست کنم؟
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
وقتی شرط و توی query میذارم بازم باید while باشه یا نه دیگه نیازی نیست؟
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
marys_farahani
الان متوجه شدی باید چیکار کنی یا سردرگم شدی ؟ میخوایی اون تیکه کدت برام بفرستی برات درست کنم؟
بله همینجا براتون کدم و بذارم؟؟ :ناراحت:
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
lili.lrp
وقتی شرط و توی query میذارم بازم باید while باشه یا نه دیگه نیازی نیست؟
وقتی ای دی رو داشته باشی دیگه while نیازی نیست . چون برنامه میفهمهکه این زیر منو قرار برای کدوم منو ایجاد بشه منو اصلی که قرار برایش زیر منو ایجاد کنی یکی هست پس while نمیخواد . فقط باید ای دی رو ذخیره کنی تو فرم و بعد برای ایجاد زیرمنو صداش بزنی و ازش استفاده کنی.
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
من منوهام اینطوری و همه رو تو یه جدول ایجاد میکنیم
id---------------- name_menu------------ parent_id
----0 ------------------- منو 01 ---------------------1
----1 ------------------- زیر منو 01 -----------------2
----0 ------------------- منو 02 --------------------3
----3 ------------------- زیر منو 02 ----------------4
حالا اونهایی که parent_id برابر صفر باشه منو اصلی هستن اونهایی که parent_id برابر با ای دی منو اصلی باشه زیر منو اون منو هستن.
به نظرم دو تا جدول داشتی که نیازی به این کار نیست . :چشمک:
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
ببخشید میشه بگید چطوری براش شرط بذارم؟
if(isset($_POST['addto'])){
$parent=$_POST['parent'];
mysql_query("INSERT INTO `menu` (`menu_name`)VALUES('$parent')")or die(mysql_error());
$menuquery=mysql_query("SELECT * FROM `menu`");
$rowmenu=mysql_fetch_assoc($menuquery);
$child1=$_POST['child1'];
$url=$_POST['url'];
$menu_id=$rowmenu['menu_id'];
mysql_query("INSERT INTO `sub_menu` (`sub_menu`,`menu_id`,`link`)VALUES('$child1','$me nu_id','$url') ")or die(mysql_error());
}
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
راست میگید اصلا نیازی نبود که دوتا جدول بذارم ولی نیمتونم جدول و از دیتابیسم پاک کنم!:خجالت:
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
lili.lrp
راست میگید اصلا نیازی نبود که دوتا جدول بذارم ولی نیمتونم جدول و از دیتابیسم پاک کنم!:خجالت:
زمانی که داری منوها رو به ادمین نشان میدی قطعا میریزشون داخل یه گرید یا جدول
خوب قعطا برای رفتن و زیر منو ساختن یه دکمه گذاشتی دیگه که طرف روش زد یا یه div باز بشه یا بره تو یه صفحه دیگه و اونجا بتونه زیر منو رو تایپ کنه و دکمه ایجاد رو بزنه درسته ؟؟؟
حالا رو اون دکمه داره ارسال میکنه کاربر رو برای ایجاد زیر منو ای دی رو هم پاس بده مثلا اینطوری onclick="add( this.id)"
و با یه فانکشن جی کوئری بگیریش و حتی ارسال کنی برای فایل مورد نظر
<script>
function add(id)
{
$.post('pathfile.php',{ajaxid:id},function(data){
if(data == 1)
{
alert('زیر منو با موفقیت ایجاد شد.');
}
else
{
alert('خطا در ذخیره سازی دوباره تلاش کنید');
}
})
}
</script>
من دقیقا نمیدونم چیکار کردی ولی از این روش و روش های مشابه این استفاده کن.
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
ممنون متوجه منظورتون شدم خیلی ممنون از کمکتون :لبخندساده:
-
نقل قول: مشکل منوی داینامیک(فراخوانی شده از دیتابیس- php)
نقل قول:
نوشته شده توسط
lili.lrp
ممنون متوجه منظورتون شدم خیلی ممنون از کمکتون :لبخندساده:
خدا رو شکر. موفق باشی :تشویق: