10/10/2018, 09:50

[HELP] Vấn đề về switch, case trong PHP

Mình làm trang PHP, về việc include file để chuyển qua lại giữa các trang thì được rồi , chẳng hạn thế này:

PHP Code:
<?php
switch($_GET***91;"page"***93;) 

//case "home": include ("pages/center.php"); break; 
case "news": include ("pages/news.php"); break; 
case 
"products": include ("pages/center.php"); break; 
case 
"contact": include ("pages/contact.php"); break; 
default: include (
"pages/center.php"); 

?>
Để gọi trang thì menu tương ứng là:

PHP Code:
... index.php?page=home
... index.php?page=news
... index.php?page=products
... index.php?page=contact 
Nhưng làm thế này thì cái title của mỗi trang khi gọi nó toàn là title của TRANG CHỦ
~> Giờ dùng cấu trúc switch, case hay như thế nào để khi gọi trang thì title tương ứng của trang đó sẽ hiện thị chứ ko phải của TRANG CHỦ các bạn nhỉ!??
thuyduongcd viết 11:55 ngày 10/10/2018
Trang index.php
Code:
<?php
$page=$_GET['page'];
$str="
<html>
<title><wsa title/></title>
<body>
<!--- anything --->

<!-- begin content -->
<div id='content'><wsa content/></div>
<!-- end content -->

<!-- anything -->
</body>
</html>
";
switch ($page)
{
case "contact": include("contact.php"); break;
case "support": include("support.php"); break;
default: include("defaultpage.php");
}
$str=str_replace("<wsa title/>",$strTitle,$str); 
$str=str_replace("<wsa content/>",$strContent,$str); 
echo $str;
?>
Trong file contact.php
Code:
<?php
$strTitle="Tiêu đề trang contact";
$strContent="Nội dung trang contact";
?>
Trong file support.php
Code:
<?php
$strTitle="Tiêu đề trang support";
$strContent="Nội dung trang support";
?>
Nếu có nhiều trang thì làm tương tự
Thử gọi index.php?page=contact và index.php?page=support xem thế nào
hoichobiet2212 viết 12:04 ngày 10/10/2018
mình vừa làm thế này xong thấy Title vẫn là của Trang index khi gọi link
index.php?page=contact hay index.php?page=support
rootkit viết 12:01 ngày 10/10/2018
title của trang được quy định bởi thẻ cặp thẻ <title>Trang chủ</title> ,nếu viết theo kiểu mì ăn liền thì như thế này

<title>
PHP Code:
<?
switch($_GET***91;"page"***93;) 

case "news": echo "Tin tức - Tôi yêu Việt Nam"; break;
case "products": echo "Sản phẩm"; break;
case "contact": echo "Liên hệ"; break;
default: echo "Trang chủ"; break;

?>
</title>
mitdacqn viết 11:57 ngày 10/10/2018
Đơn giản là thế này:
PHP Code:
<?php
switch($_GET***91;'page'***93;) 

case 
'news'
  
$pages 'pages/news.php';
  
$title 'Tin tức';
  break; 
case 
'products':
  
// Tương tự
  
break;
}
?>
<html>
  <head>
    <title><?php echo $title;?></title>
  </head>
  <body>
    <?php include($pages); ?> 
  </body>
</html>
thuyduongcd viết 11:59 ngày 10/10/2018
Đã test thử, chạy tốt. Có lẽ bạn sai ở chỗ nào đó.
Tải file này về bung nén up lên host cho chạy thử.
http://www.transferbigfiles.com/Get....7-e3cc08e58670
hoichobiet2212 viết 12:03 ngày 10/10/2018
Bạn đang làm chuyển trang hay sao thế
Chắc bạn hiểu sai ý mình rùi ^^
Để mình làm thử theo cách của 2 bạn trên
Cảm ơn tất cả các bạn đã nhiệt tình giúp đỡ ^^

@thuyduongcd: Bạn down lại file demo mình vừa sửa lại tý ~> http://uploadingit.com/d/ARZW2LTSGYSBCZOM

[=========> Bổ sung bài viết <=========]

Cuối cùng cũng đã xong, mừng wa' ~> Làm theo cách của bạn mitdacqn thấy hay ^^
thuyduongcd viết 12:01 ngày 10/10/2018
Bản chất là như nhau thôi. Nhưng nếu làm thủ công như vậy sua này gặp trường hợp nhiều page quá (như blog host chẳng hạn) sẽ khó mà phát triển. Mỗi khi thêm 1 page lại phải edit trang index. Rất phiền phức, không phát huy hết ưu điểm của web động. Tất nhiên nếu bạn chỉ tìm hiểu phương pháp thì như thế cũng tạm ổn.
Còn vấn đề tại sao bạn sử dụng code của tôi không thành công? Lý do là cái dòng include("menu.php"); mà bạn vừa thêm vào. Trong file menu.php này chứa dòng <title></title> nên lúc nào bạn cũng thấy nó nằm trên tiêu đề.
Bài liên quan
0