我有这段代码可以将任何项目加载到..中的页面中/content/interieur/interieeur.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>
我所做的;t get是如何将switch/case语句与为每个附加项目执行此操作的规则相结合。和现在一样,它没有返回任何错误,但当我单击一个项目时,div加载默认情况(home.html)
那么,我如何将这些组合成一个"开关"呢?我认为大多数代码都是正确的,但它可能重定向到了错误的文件夹,因此我可能需要用路径(/comtent/interieur)定义"include"命令,但我不知道它是如何工作的。。。。
看看:http://www.wgwd.nl/bedaux然后单击"投影->内部"
希望这在任何方面都是一个明确的问题;-)Thx!
编辑:var_dump提示的thx!我试过了,当我点击"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);
它工作得很好!谢谢你的帮助!
替换为下面的部分
$file_included=0;
foreach ($files as $file) {
switch($_GET['topic']){
case $file_name: include $file;$file_included=1; break;
}
}
if($file_included==0){
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;
}
}
也许不是100%的答案,但太多的文本无法放入评论中
foreach ($files as $file) {
switch($_GET['topic']){
case $file_name: include $file; break;
}
}
首先,具有一个条件的开关基本上是if
,在这个循环中,$_GET
和$file_name
都设置在循环之外。因此,这种比较要么适用于所有文件,要么不适用于任何文件。所以它真的这么说:
if ($_GET['topic'] == $file_name) {
foreach ($files as $file) {
include $file;
}
}
关于你总是得到默认的"home"这一点,我想这是因为你最终得到了default
语句。你试过var_dump($_GET['topic'])
看看里面到底有什么吗?也许你没有得到你期望的价值。