PDA

View Full Version : سوال: Include Footer in main page



-Geek-
یک شنبه 13 اردیبهشت 1394, 14:22 عصر
سلام.
من توی یک پروژه هدر و فوتر صفحه اصلی/کل صفحات رو توی یک دو فایل header و footer گذاشتم.

این به حساب صفحه اصلیه :


<?php
include('model/database.php');
include('model/post.php');
include('model/post_db.php');
include('model/category.php');
include('model/category_db.php');
include('view/header.php');

...
....
.....
......
.......
......
.....
....
...


/*
* include footer
*/
// Get the list of categories for show in footer.php
$categories = CategoryDB::getCategories();
include('view/footer.php');
?>


در خطوط 2 تا 8 من فایل هایی رو که لازمه include کردم. در خط 31 من یک لیست دسته بندی ها از دیتابیس رو توی یک متغییر ذخییره کرده و میخوام که وقتی به خط بعدی رفت و footer رو include کرد ، این متغییر هم به همراهش به footer بره و اونجا کارمو باهاش انجام بدم.
خوب الان مشکل اینه که من به این متغییر categories در footer دسترسی ندارم.

مشکل کار من کجاست ؟
باید به روش دیگری این کار رو انجام بدم‌؟

arenaw
یک شنبه 13 اردیبهشت 1394, 14:49 عصر
بالای صفحه فوتر، بنویسید:


global $categories;

MMSHFE
یک شنبه 13 اردیبهشت 1394, 15:31 عصر
کد فوتر رو بگذارین. اگه با تابع کار نکرده باشین، باید بتونید به categories$ دسترسی داشته باشین و نیازی به global نیست ولی اگه از تابع استفاده کردین، باید داخل تابع از global برای دسترسی به متغیرهای سراسری استفاده کنید.

-Geek-
یک شنبه 13 اردیبهشت 1394, 16:10 عصر
خوب راستش این کد صفحه اصلی هستش که من تو کد بالا حذفش کردم.



<?php
include('model/database.php');
include('model/post.php');
include('model/post_db.php');
include('model/category.php');
include('model/category_db.php');
include('view/header.php');

if(isset($_POST['action'])) {
$action = $_POST['action'];
} else if(isset($_GET['action'])){
$action = $_GET['action'];
} else {
$action = 'show_posts';
}

if ($action == 'show_posts') {

//Show All posts
$posts = PostDB::getPosts();
include('posts.php');

}



/*
* include footer
*/
// Get the list of categories for show in footer.php
$categories = CategoryDB::getCategories();
include('view/footer.php');
?>


اینجا همونطور که میبینید 17 ت 23 حتما اجرا میشه و تو خط 21 از include استفاده شده و متغییر خط 21 رو بدون مشکل میفرسته.
اینجا خط 32 هم اجرا میشه خوب مطمئنن و محتویات فوتر هم بارگذاری میشه. فقط مشکل اینه که من نمیتونم از categories که فرستادمش به Footer ، استفاده بکنم.

این هم کد Footer




</div><!-- /.blog-main -->

<div class="col-sm-3 col-sm-offset-1 blog-sidebar">
<div class="sidebar-module sidebar-module-inset">
<h4>About</h4>
<p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
</div>
<div class="sidebar-module">
<h4>Catogeries</h4>
<ol class="list-unstyled">
<?php foreach($catogeries as $category):?>
<li><a href="<?php echo $category->getID();?>"><?php echo $category->getName(); ?></a></li>
<?php endforeach; ?>
</ol>
</div>
</div><!-- /.blog-sidebar -->

</div><!-- /.row -->

</div><!-- /.container -->

<footer class="blog-footer">
<p>PHPLoversBlog &copy;</p>
<p>
<a href="#">Back to top</a>
</p>
</footer>


<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>


این هم خطایی که در حال حاضر برای این کد نشون میده

130827

-Geek-
یک شنبه 13 اردیبهشت 1394, 16:45 عصر
من همین کاری که میخوام تو صفحه Footer انجام بدم رو تو صفحه اصلی به به شکل زیر انجام دادم و داده هایی رو که میخواستم بخوبی برام نشون داد تو صفحه اصلی.



.
.
.
/*
* include footer
*/
// Get the list of categories to show in footer.php
$categories = CategoryDB::getCategories();

foreach ($categories as $category) {
echo $category->getName()."\n";

}
.
.
.




output was:
News Events Tutorials Misc


پس نتیجه میگیریم که مشکل از فرستاده شدن $categories به Footer است. البته از قبل هم معلوم بود. ولی حالا چجوری حلش کنم ؟‌
ممنون دوستان از جوابتون :قلب:

arenaw
یک شنبه 13 اردیبهشت 1394, 17:35 عصر
این یک باگ بزرگ در php هستش. وقتی شما متغیری رو بخوای به یک صفحه دیگه بفرستی، در صورتی که نام اون صفحه footer.php باشه و داخل فولدری به نام view باشه، php به دلایل ضعف در طراحی از استفاده از متغیرهای ارسالی جلوگیری میکنه. نکته جالب اینجاست که من شوخی کردم. چون توی foreach ای که توی فوتر نوشتی، به جای categories نوشتی catogeries ‌:لبخند:

-Geek-
یک شنبه 13 اردیبهشت 1394, 18:11 عصر
اوه خدای من :|
آبروم پیش جماعت رفت !! LOL
ممنون از راهنماییتون دوستان :لبخند:
اینبار سعی میکنم غلط املایی نداشته باشم :))

j_naroogha@yahoo.com
دوشنبه 14 اردیبهشت 1394, 07:46 صبح
منم این مشکل رو دارم دوست عزیز...
اما خب با یه IDE میشه جلوی این اشتباهات رو گرفت...