2012-10-06 68 views
3

我在提交后显示正确的细节时遇到问题。我认为我的页面结构不正确目前发生的情况是,如果我点击Module提交按钮,则不会显示任何错误信息。如何正确设置页面结构

下面是什么是假设发生:(页工作在3个部分)

第1部分:包含模块下拉菜单。用户从下拉菜单中选择选项并提交。每次提交时,都会更改第2部分和第3部分的内容。提交后,下拉菜单返回到请选择选项。

第2部分:包含评估下拉菜单,仅在用户提交第1部分后出现。当用户从评估下拉菜单中选择选项并单击提交按钮提交此部件时,下拉菜单返回请选择并出现第3部分。第3部分每次更改第2部分都提交了不同的选项。

第3部分:显示第2部分的详细信息。仅根据从第2部分中选择和评估的评估出现和更改。如果用户从第1部分提交,则隐藏该部分。

现在我的尝试是将PHP和phmtl彼此分开,但就像我说他的问题是没有显示任何细节。忍受我有很多代码,但这是因为我需要showw我的页面是如何构造的。我的问题是我需要做什么来修复页面结构?

你可以看到什么是这里的应用程序发生的事情:Application

下面是它出现在它的顺序显示的代码:(我试图限制下来,尽我所能):

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> 

UPDATE:

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 116 

PHP小提琴更新:http://phpfiddle.org/main/code/cbx-6mi

+2

请测试您的代码时,请保持您的浏览器的控制台打开。你会看到你得到一个有用的错误。 'ReferenceError:getButtons没有定义' –

+0

+1对于jsfiddle –

+1

@RuchitRami:所以+1如果这些问题绝对无用,如果这些链接断裂?它超级,你喜欢jsFiddle,但StackOverflow不应该有依赖关系。 –

回答

1

我不能完全肯定要如何结构是,但我能理解,这是回答你题。

你应该看到的结构,希望你可以用它=)

的想法是取决于有多少信息的用户给我们展现了一个部分。

并且还允许用户返回并更改旧数据。

我已经注释掉了一些你的“代码”,并添加了一些你应该删除的选项。但是这些东西应该会显示出你没有被迫输入你的代码的结构。

<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> 

如果你只想要一个“台阶”当时的显示,使用“否则,如果”而不是“如果”(当然这需要比这多一点,但你应该明白怎么做它从那?)

+0

和它应该提到,这应该在一个PHP文件? – ZombieSpy

+0

嗨,你看我现在的问题是用户提交第1部分,它显示第2部分,这是很好,但是当我提交第2部分,而不是显示第3部分,而是删除第2部分,并返回到只显示第1部分。我的问题是,如果你有3个表单,并且你想按照时间顺序显示每个表单,(提交第1部分显示第2部分,提交第2部分看第3部分),那么我怎样才能达到这个就是我的问题。我可以显示我的页面结构在PHP的小提琴为你看到的代码结构? – user1723760

+0

@ user1723760我认为我的代码正如您在评论中所说的那样工作?如果你没有编辑就运行代码,它工作正常吗? – ZombieSpy