2012-10-06 112 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