在提交后,我很难显示正确的细节。我认为我的页面结构是不正确的,目前发生的情况是,如果我单击Module提交按钮,就不会显示任何不正确的内容。
下面是将要发生的事情:(该页面分3部分工作)
第1部分:包含一个模块下拉菜单。用户从下拉菜单中选择选项并提交。每次提交时,它都会更改第2部分,第3部分是隐藏的。提交后,下拉菜单返回到“请选择”选项。
第2部分:包含评估下拉菜单,仅在用户提交第1部分之后才会出现。当用户从“评估下拉”菜单中选择选项并单击“提交”按钮时,下拉菜单返回到“请选择”,第3部分出现。第3部分每次提交第2部分时都会更改不同的选项。
第3部分:显示第2部分的详细信息。仅显示和更改取决于从第2部分选择和提交的评估。如果用户从第1部分提交,则此部分是隐藏的。
现在,我的尝试是将php和phmtl相互分离,但是正如我所说的,问题是没有显示细节。请原谅我,这里有很多代码,但这是因为我需要展示我的页面是如何构造的。我的问题是,为了修复页面结构,我需要做什么?
您可以在这里看到应用程序发生了什么:应用程序
下面是按显示顺序排列的代码:(我试图尽可能地限制):
PHP:
<?php
// connect to the database
$moduleactive = 1;
$sql = "SELECT ModuleId, ModuleNo, ModuleName FROM Module WHERE ModuleActive = ? ORDER BY ModuleNo";
//excute query
$sqlnum = $sqlstmt->num_rows();
$moduleHTML = "";
$moduleHTML .= '<select name="modules" id="modulesDrop">' . PHP_EOL;
$moduleHTML .= '<option value="">Please Select</option>' . PHP_EOL;
while ($sqlstmt->fetch()) {
$moduleHTML .= sprintf('<option value="%1$s_%2$s_%3$s">%1$s - %2$s</option>' . PHP_EOL, $dbModuleNo, $dbModuleName, $dbModuleId);
}
$moduleHTML .= '</select>';
$pHTML = "";
//Module Submit (Part 1 Submitted)
if (isset($_POST['moduleSubmit'])) {
$sessionquery = "
SELECT s.SessionId, SessionName, SessionDate, SessionTime, ModuleId, SessionActive, Complete
FROM Session s
INNER JOIN Session_Complete sc ON sc.SessionId = s.SessionId
WHERE
(ModuleId = ? AND SessionActive = ? AND Complete = ?)
ORDER BY SessionName
";
$active = 1;
$complete = 1;
//execute query
$sessionnum = $sessionqrystmt->num_rows();
$sessionHTML = '';
if ($sessionnum == 0) {
$pHTML = "<span style='color: red'>Sorry, You have No Assessments under this Module</span>";
}
$sessionHTML = '<select name="session" id="sessionsDrop">' . PHP_EOL;
$sessionHTML .= '<option value="">Please Select</option>' . PHP_EOL;
while ($sessionqrystmt->fetch()) {
$sessionHTML .= sprintf("<option value='%s'>%s - %s - %s</option>", $dbSessionId, $dbSessionName, date("d-m-Y", strtotime($dbSessionDate)), date("H:i", strtotime($dbSessionTime))) . PHP_EOL;
}
$sessionHTML .= '</select>';
}
//Session Submit (Part 2 Submitted)
if (isset($_POST['sessionSubmit'])) {
$sessiondetailsquery = "
SELECT SessionId, SessionName
FROM Session
WHERE
(SessionId = ?)
";
//execute query
$sessiondetailsqrystmt->bind_result($detailsSessionId, $detailsSessionName);
}
?> PHTML:
<form action="<?php
echo htmlentities($_SERVER['PHP_SELF']);
?>" method="post">
<table>
<tr>
<th>Module: <?php
echo $moduleHTML;
?></th>
</tr>
</table>
<p><input id="moduleSubmit" type="submit" value="Submit Module" name="moduleSubmit" /></p>
<?php
if ($step == 2) {
if (!$_POST['moduleSubmit']) {
if ($_POST['modules'] == '') {
?>
<span style='color: red'>Please Select a Module</span>
<?php
} elseif (!$sqlnum) {
?>
<span style='color: red'>Sorry, You have No Assessments under this Module</span>
<?php
} else {
?>
<p><strong>Assessments:</strong> {$sessionHTML} </p>
<p><input id='sessionSubmit' type='submit' value='View Assessment Details' name='sessionSubmit' /></p>
<?php
}
}
}
?>
<?php
if ($step == 3) {
if (!$_POST['sessionSubmit']) {
if ($_POST['session'] == '') {
?>
<span style='color: red'>Please Select an Assessment</span>
<?php
} else {
?>
<table>
<tr>
<td></td>
<td><input type='text' id='currentId' name='Idcurrent' readonly='readonly' value='$detailsSessionId' /></td>
</tr>
<tr>
<td><strong>Assessment:</strong></td>
<td>{$detailsSessionName}</td>
</tr>
</table>
<?php
}
}
}
?>
</form>
</body>
</html>更新:
Notice: Undefined index: modules in ...on line 66
Notice: Undefined offset: 1 in ... on line 68
Notice: Undefined offset: 2 in ... on line 69
Notice: Undefined index: modules in ... on line 116PHP更新:http://phpfiddle.org/main/code/cbx-6mi
发布于 2013-01-16 06:26:16
我不完全确定你想要怎样的结构,但据我所能理解,这是你的问题的答案。
您应该看到这个结构,希望您可以使用它=)
这个想法是根据用户给我们的信息显示一个部分。
还允许用户返回并更改旧数据。
我已经注释掉了您的一些“代码”,并添加了一些您应该删除的选项。但是,这些东西应该显示建议的结构,而不必被迫输入代码。
<html>
<body>
<form action="" method="post">
<table>
<tr>
<th>
<?php
// connect to the database
//$sql = "SELECT ModuleId, ModuleNo, ModuleName FROM Module WHERE ModuleActive = ? ORDER BY ModuleNo";
//excute query
//$sqlnum = $sqlstmt->num_rows();
?>
Module:
<select name="module" id="modulesDrop">
<option value="">Please Select</option>
<?php
/*
while ($sqlstmt->fetch()) {
echo sprintf('<option value="%1$s_%2$s_%3$s">%1$s - %2$s</option>' . PHP_EOL, $dbModuleNo, $dbModuleName, $dbModuleId);
}
*/
?>
<option value="test">test</option>
</select>
</th>
</tr>
</table>
<input id="moduleSubmit" type="submit" value="Submit Module" name="moduleSubmit" />
</form>
<?php
if(isset($_POST["module"]))
{
?>
<form action="" method="post">
<input type="hidden" name="module" value="$_POST[module]">
Assigments:
<?php
$sessionquery = "SELECT s.SessionId, SessionName, SessionDate, SessionTime, ModuleId, SessionActive, Complete
FROM Session s
INNER JOIN Session_Complete sc ON sc.SessionId = s.SessionId
WHERE
(ModuleId = ? AND SessionActive = ? AND Complete = ?)
ORDER BY SessionName";
//execute query
//$sessionnum = $sessionqrystmt->num_rows();
if ($sessionnum == 0 && false) // "&& false" should ofcourse be removed
{
?>
<span style='color: red'>Sorry, You have No Assessments under this Module</span>
<?php
}
else
{
?>
<select name="session" id="sessionsDrop">
<option value="">Please Select</option>
<?php
/*
while ($sessionqrystmt->fetch()) {
$sessionHTML .= sprintf("<option value='%s'>%s - %s - %s</option>", $dbSessionId, $dbSessionName, date("d-m-Y", strtotime($dbSessionDate)), date("H:i", strtotime($dbSessionTime))) . PHP_EOL;
}
*/
echo "<option value='tst'>tst</option>";
?>
</select>
<br>
<input type="submit" value="Submit Assigments">
</form>
<br>
<br>
<?php
if(isset($_POST["session"]))
{
?>
<table>
<tr>
<td></td>
<td><input type='text' id='currentId' name='Idcurrent' readonly='readonly' value='$detailsSessionId' /></td>
</tr>
<tr>
<td><strong>Assessment:</strong></td>
<td>{$detailsSessionName}</td>
</tr>
</table>
<?php
}
}
}
?>
</body>
</html>如果你只想在那个时候显示一个“步骤”,使用"else if“而不是" If”(当然,它需要更多的内容,但是您应该从这个角度了解如何做呢?)
https://stackoverflow.com/questions/12760373
复制相似问题