我有这段代码可以将任何项目加载到 ../content/interieur/interieur.php 中的页面中:
<ul>
<?
if (glob('content/interieur/*.txt')) {
$files = glob('content/interieur/*.{txt}', GLOB_BRACE);
foreach ($files as $file) {
$info = pathinfo ($file);
$file_name = basename($file,'.'.$info['extension']);
?>
<li class="crop"><a href="?topic=<?=$file_name?>" ><img src="content/interieur/<?=$file_name,'.jpg'?>" /></a>
<p><?=include $file?></p>
<hr />
</li>
<? } //end foreach
} //end if
else {?>
<li><img src="./img/404.jpg" />
<p><b>Sorry, </b>Geen projecten gevonden!</p>
</li>
<? ;} //end else
?>
每个项目都应该有一个同名的 .txt、.jpg 和 .html,然后它就可以正常工作了。
接下来,我希望能够单击项目并将具有该名称的项目内容加载到同一个 div 中。因此,在我的 index.php 中,我有以下代码:
<div id="mainContent">
<?
$files = glob('content/interieur/*.{html}', GLOB_BRACE);
$info = pathinfo ($file);
$file_name = basename($file,'.'.$info['extension']);
if (isset ($_GET["topic"])) {
foreach ($files as $file) {
switch($_GET['topic']){
case $file_name: include $file; break;
}
}
switch($_GET['topic']){
case 'home': include("content/home.html" ); break;
case 'werkwijze': include("content/werkwijze.html"); break;
(et cetera)
default: include("content/home.html"); break;
}
}
else
{
include("content/home.html");
}
?>
</div>
我没有得到的是如何将 switch / case 语句与为每个附加项目执行此操作的规则结合起来。就像现在一样,它不会返回任何错误,但是当我单击一个项目时,div 会加载默认情况(home.html)。
那么,如何将这些组合成一个“开关”?我认为大部分代码是正确的,但它可能重定向到错误的文件夹,因此也许我需要使用路径(/comtent/interieur)定义“包含”命令,但我不知道它是如何工作的...... .
看看:http ://www.wgwd.nl/bedaux并点击“投影-> 内部”
希望这是一个明确的问题;-) 谢谢!
编辑: 感谢 var_dump 提示!我试过这个,当我点击“project1”时我得到的字符串确实是“project1”,所以得到正确的?主题工作正常。它只是没有将我引向'project1.html。
所以基本上我认为我需要的是将未定义的情况与其他情况放在一起的东西:
if (isset ($_GET["topic"])) {
case $file_name: include $file; break;
case 'home': include("content/home.html" ); break;
case 'werkwijze': include("content/werkwijze.html"); break;
(et cetera)
default: include("content/home.html"); break;
}
}
else
{
include("content/home.html");
}
但这当然行不通
或者:代码很好,我需要添加一个路径,比如:
foreach ($files as $file) {
switch($_GET['topic']){
case $file_name: include './content/interieur/'$file; break;
}
}
但我想语法是错误的......
编辑 2 - 已解决:
我知道了!
查看代码的第一部分,我在其中定义了 $files,然后是第一个开关:
<?
$files = glob('content/interieur/*.{html}', GLOB_BRACE);
$info = pathinfo ($file);
$file_name = basename($file,'.'.$info['extension']);
if (isset ($_GET["topic"])) {
foreach ($files as $file) {
switch($_GET['topic']){
case $file_name: include $file; break;
}
}
我注意到我在 foreach 语句中指的是 $file 在它被创建之前(你是这样说的吗?)......所以显然当我这样做时:
<?
$files = glob('content/interieur/*.{html}', GLOB_BRACE);
if (isset ($_GET["topic"])) {
$file_included=0;
foreach ($files as $file) {
$info = pathinfo ($file);
它工作正常!谢谢你的帮助!