# Trung tâm xử lý sự cố > Hỏi-Đáp về Lập trình >  Cách làm quick navigation ??? (PHP)

## anthao

mình có 3 trang :
*index.php
content.php
aboutme.php*

*index.php* là trang chứa web skeleton (web layout and images)và navigation menu (home / about me)

khi người dùng chọn nút *home* thì trang *index.php* sẽ hiển thị nội dụng của trang *content.php*, tương tự như vậy,nội dung của trang *aboutme.php* sẽ đc hiển thị trên trang *index.php* khi người dùng chọn nút *about me*.

ý tưởng của mình là ko muốn lập lại từng code dùng để tạo layout cho website trên từng trang. chỉ 1 trang chứa là đủ chứa rùi, còn nội dung của những trang khác sẽ hiển thị trên trang chứa.

mình có làm thử nhưng ko thấy chạy chọt gì cả ?

html code:


```
<table width="200" border="1">
  <tr>
    <td><a href="index.php" name="content">home</a></td>
    <td><a href="aboutme.php" name="aboutme">about me</a></td>
  </tr>
</table>
```

php code:


```
$pages = array('content.php','aboutme.php'); //list as needed
    $page = 'content.php';
    if (isset($_get['page'])&&in_array($_get['page'],$pages)) 
    { 
        $page = $_get['page'];
    }
```

bạn nào có source code hoàn chỉnh hoặc tutorial link ko thì share cho mình với ?

----------


## TranElly

bạn biết về *include* chưa?
thế này nhé! 
trang index.php



> ```
> <table width="200" border="1">
>   <tr>
>     <td><a href="index.php?page=home" name="content">home</a></td>
>     <td><a href="index.php?page=about" name="aboutme">about me</a></td>
>   </tr>
> </table>
> <?php
>     if (isset($_get['page'])) 
> ...

----------


## skyxd88

:khochiu::khochiu::khochiu:

mình đã có sửa lại 1 tí và những gặp lỗi, ko như ý muốn



```
<div id="menu">
<ul>
        <li><a href="index.php?page=content" name="content">home </a></li>
        <li><a href="index.php?page=aboutme" name="aboutme">about me</a></li>
        <li><a href="index.php?page=portfolio" name="portfolio">portfolio</a></li>
        <li><a href="index.php?page=contact" name="contact">contact </a></li>
  </ul>
</div>
```



```
<?php
if (isset($_get['page']))
    { 
        if($_get['page']=="content")
               include "content.php";
        elseif($_get['page']=="aboutme")
               include "aboutme.php";
        elseif($_get['page']=="portfolio")
               include "portfolio.php";
        elseif($_get['page']=="contact")
               include "contact.php";
        else
               include "content.php";
    }  
?>
```

nhưng mà khi mình nhấn nút menu about us thì chi tiết của trang content.php hiển thị cùng nội dung của aboutme.php

mọi người chỉ mình cách giải quyết với
---------------------------------bài viết đã được trộn ---------------------------------
:khochiu::khochiu::khochiu:

mình đã có sửa lại 1 tí và những gặp lỗi, ko như ý muốn



```
<div id="menu">
<ul>
        <li><a href="index.php?page=content"  name="content">home </a></li>
        <li><a href="index.php?page=aboutme"  name="aboutme">about me</a></li>
        <li><a href="index.php?page=portfolio"  name="portfolio">portfolio</a></li>
        <li><a href="index.php?page=contact"  name="contact">contact </a></li>
  </ul>
</div>
```



```
<?php
if (isset($_get['page']))
    { 
        if($_get['page']=="content")
               include "content.php";
        elseif($_get['page']=="aboutme")
               include "aboutme.php";
        elseif($_get['page']=="portfolio")
               include "portfolio.php";
        elseif($_get['page']=="contact")
               include "contact.php";
        else
               include "content.php";
    }  
?>
```

nhưng mà khi mình nhấn nút menu about us thì chi tiết của trang content.php hiển thị cùng nội dung của aboutme.php

mọi người chỉ mình cách giải quyết với

----------


## GinVNSEO

bạn à! mình thấy code của bạn không sai. mình test lại trên localhost cũng không thấy sai ở điểm nào. bấm vào *aboutme* thì chỉ có chi tiết của file aboutme.php thôi.
nhưng nếu bạn làm như thế kia mình có thể hiểu là bạn muốn mặc định nội dung của trong index.php là trang content.php đúng không? nhưng như thế kia thì không đúng vì nếu url chỉ là index.php thôi thì biến $_get['page'] là không tồn tại chứ không phải là có giá trị rỗng hay gì khác nên *else include "content.php"* có ý nghĩa gì đâu. nếu bạn muốn làm như mình đang nghĩ thì bạn tham khảo đoạn này của mình. 


```
<?php
if (isset($_get['page']))
    { 
        if($_get['page']=="content")
               include "content.php";
        elseif($_get['page']=="aboutme")
               include "aboutme.php";
        elseif($_get['page']=="portfolio")
               include "portfolio.php";
        elseif($_get['page']=="contact")
               include "contact.php";
    }  
else{
		include "content.php";
     }
?>
```

nếu bạn muốn thì mình chỉ cho bạn cách viết code hay và ngắn gọn hơn thế này nhiều.

----------


## hoahuongduong

nếu bạn có thể thì bạn chỉ cho mình với, đang sưu tầm học đạo đây

----------


## doken

```
<?php
//đăng ký các trang include
$pagearr = array("content","aboutme","portfolio","contact");
//đăng ký trang nội dung mặc định
$pagedef = "content";

	if (isset($_get['page']))
        {
		for($i=0; $i<sizeof($pagearr); $i++){
			if($_get['page'] == $pagearr[$i]){
				include ($pagearr[$i].".php");
			}
		}
        }  
	else{
		include ($pagedef.".php");
	}
?>
```

yêu cầu khi thực hiện đoạn code này là bạn phải đặt tên file php trùng với giá trị trong biến $_get['page']. ví dụ như là: *page=content* thì file include phải là *content.php*
- bình thường nếu code như bạn thì với mỗi một trang thì bạn phải viết thêm dòng else if rồi include, như vậy code sẽ rất dài. 
- với đoạn code này bạn chỉ việc thêm giá trị vào mảng $pagearr, hoặc đổi trang mặc định thì thay đổi giá trị của $pagedef thôi. vậy nên code ngắn gọn hơn rất nhiều. nếu như include 20 trang thay vì làm như bạn mất khoảng 40->60 dòng thì vói code trên bạn chỉ phải thêm khoảng 2 dòng nữa thôi. có thể bạn thấy không có ý nghĩa gì vì đã có copy và paste nhưng nếu bạn đã học pttkht thì bạn sẽ hiểu. nếu cứ lặp đi lặp lại các đoạn code giống nhau thì trang web của bạn rất i` ạch.
- hơn nữa nếu sửa chữa gì thì bạn chỉ phải động vào 2 dòng code đầu: như là thêm hoặc loại bỏ phần tử trong mảng hoặc thay trang mặc định chứ không phải động đến đoạn code sau nữa. có phải là đã giảm bớt thời gian code cho bạn đúng ko nào?


```
                           switch($_get['page'])
			  {
				case 'content':
				include("content.php");
				break;
				case 'aboutme':
				include("aboutme.php");
				break;
				case 'portfolio':
				include("portfolio.php");
				break;
				case 'contact':
				include("contact.php");
				break;
			}
```

khuyến mại bạn thêm cái cách sử dụng switch case này nữa. hi vọng bạn sẽ hiểu nhưng gì mình viết. 
bạn có muốn mình hướng dẫn bạn sử dụng cả ajax vào đây nữa ko?

----------


## datxanhmb81

cám ơn bro rất nhiều, để luyện tập cái code này cho nhuyễn đã, nhìu quá dễ bị bội thực lém.

ah, còn nữa, nhờ bạn giải thích thêm cho mình về cái dòng



```
for($i=0; $i<sizeof($pagearr); $i++)
```

----------


## tranthinguyen1093

```
for($i=0; $i<sizeof($pagearr); $i++)
```

sizeof($pagearr) là tổng số phần tử trong mảng $pagearr
vd $pagearr có 6 phần tử thì nó tương đương với *for($i=0;$i<6;$i++)*

----------

