我正在开发一个PHP测验游戏,目前我正在努力将PHP和HTML混合在一起,因为我有更多以前的html经验。测验选择有以下选择选项:
<select style="width: 300px" name="quizes" size="10">
<option onClick="window.location = 'quiz1.php'" >Quiz 1</option>
<option>Quiz 2</option>
<option>Quiz 3</option>
<option>Quiz 4</option>
<option>Quiz 5</option>
</select>
我被告知可以使用php代码进行此操作,以便在创建时将新的quizes添加到其中。有人可以帮我解决这个问题吗,我不太明白这是怎么回事。
我没有使用数据库作为我的测验,每个测验是/将在一个页面上,问题存储在数组中,问题的处理在同一页面上。
答案 0 :(得分:0)
试试这个。它假定进行选择的页面与您的测验php页面位于同一目录中。
<?php
$dir = getcwd();
$files = scandir($dir);
foreach($files as $file)
{
if (strpos($file,'quiz') !== false)
{
$fileName = ucfirst(str_replace('.php', '', $file));
$quizPages[] = array('name'=>$fileName,'file'=>$file);
}
}
?>
<select style="width: 300px" name="quizes" size="10">
<?php
foreach($quizPages as $quiz)
{
echo '<option name="' . $quiz["name"] . '" onClick="window.location = \'' . $quiz["file"] . '\'" >' . $quiz["name"] . '</option>';
}
?>
</select>
更新评论。
这可能是因为你在该目录中也有一个名为Quizes的文件,它在foreach循环中捕获了单词quiz。我建议改变这一行
if (strpos($file,'quiz') !== false)
到此
if (strpos($file,'quiz') !== false && strpos($file,'quizes') === false)
进一步更新。 如果您想要测验的自定义名称,我建议您使用以下命名约定quiz_desired_name.php。例如,如果我有一个测验称为你是什么动物。然后文件名应该是quiz_what_animal_are_you.php,因此用下划线分隔单词。
然后只需替换此行
$fileName = ucfirst(str_replace('.php', '', $file));
用这个
$fileName = ucfirst(str_replace(array('.php','quiz_','_'), array('','',' '), $file));
答案 1 :(得分:0)
如果你想在php中使用html标签,添加一个
例如:
echo"<select>";
每个html标签之前