../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) をロードします。
では、これらを 1 つの「スイッチ」にまとめるにはどうすればよいでしょうか。ほとんどのコードは正しいと思いますが、おそらく間違ったフォルダーにリダイレクトされるため、「include」コマンドをパス (/comtent/interieur) で定義する必要があるかもしれませんが、それがどのように機能するかわかりません... .
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");
}
しかし、もちろんそれはうまくいきません
OR: コードは問題ないので、次のようなパスを追加する必要があります。
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);
うまくいっています!助けてくれてありがとう!