0

ドロップダウンメニューからセッションを削除したい。ユーザーはドロップダウンメニューからセッションを選択し、削除ボタンをクリックします。これにより、データベース内のセッションが削除されます。問題は、削除ボタンをクリックすると、sessionsDrop200行目に未定義であることを示す未定義のインデックスエラーが表示されることです。私の質問は次のとおりです。

1:以下のコードの未定義のインデックスエラーを取り除くにはどうすればよいですか2:削除が成功した場合に「Session... was Deleted」をエコーするように、ifステートメントをどこでどのように記述しますか?削除してからエコーを表示「エラーが発生しました、セッション...は削除されませんでした」

以下はコードです:

$sessionnum = 0;

 if (isset($_POST['modulesubmit'])) {

     if($_REQUEST['modulesDrop']==''){

         echo "Please Select a Module from the Drop Down Menu Above";

     }
     else{  

 var_dump($_POST['modulesDrop']);

        $sessionquery = "
             SELECT SessionId, SessionDate, SessionTime, ModuleId
             FROM Session
             WHERE
             (ModuleId = ?)
             ORDER BY SessionDate, SessionTime 
            ";

$sessionqrystmt=$mysqli->prepare($sessionquery);
// You only need to call bind_param once
$sessionqrystmt->bind_param("s",$_POST['modulesDrop']);
// get result and assign variables (prefix with db)

$sessionqrystmt->execute(); 

$sessionqrystmt->bind_result($dbSessionId,$dbSessionDate,$dbSessionTime, $dbModuleId);

 $sessionqrystmt->store_result();

$sessionnum = $sessionqrystmt->num_rows();   

    $dataArraySession = array();

 while ( $sessionqrystmt->fetch() ) { 

 $dataArraySession[$dbSessionId]['SessionDate'] = $dbSessionDate; 
 $dataArraySession[$dbSessionId]['SessionTime'] = $dbSessionTime;

}

   $sessionHTML = "";
   $sessionHTML .= '<select name="session" id="sessionsDrop">'.PHP_EOL;
   $sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;     

foreach ($dataArraySession as $sessionId => $sessionData) {

   $sessionHTML .= "<option value='$sessionId'>" . $sessionId . " - " . $sessionData['SessionDate']. " - " . $sessionData['SessionTime'] ."</option>".PHP_EOL;        

        }

   $sessionHTML .= '</select>';
}
 if ($sessionnum > 0) {

 ?>

     <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
     <p>Sessions: <?php echo $sessionHTML; ?><input id="sessionSubmit" type="submit" value="Delete" name="sessionsubmit" /></p>      
    </form>       

<?php

}
else {
 echo "<p>Sorry, You have No Sessions under this Module</p>";
}

}

 if (isset($_POST['sessionsubmit'])) {

     if($_REQUEST['sessionsDrop']==''){ //line 200 where undefined index occurs

         echo "Please Select a Session from the Drop Down Menu Above to Delete a Session";

     }
     else{  

 var_dump($_POST['sessionsDrop']);

 $sessiondel = $_POST['sessionsDrop'];

         $sessiondeletesql = " DELETE sess 
        FROM Session AS sess 
        WHERE sess.SessionId = ?"; 


                if (!$delete = $mysqli->prepare($sessiondeletesql)) {
      // Handle errors with prepare operation here
    }

    //Dont pass data directly to bind_param store it in a variable
$delete->bind_param("s", $sessiondel);

 $delete->execute();

        if ($delete->errno) {
          // Handle query error here
        }

        $delete->close();

        echo "Session $sessiondel was Deleted";
}
}
    ?>
4

1 に答える 1

0

エラーundefined indexは、を使用しているためですが$_REQUEST['sessionsDrop']==''、フォームコードは-

$sessionHTML .= '<select name="session" id="sessionsDrop">'.PHP_EOL;

したがって、スーパーグローバル(、、)は。ではなく、を参照するため$_REQUEST['session']==''、代わりにを使用する必要があります。$_REQUEST['sessionsDrop']==''$_POST$_GET$_REQUESTnameid

于 2012-10-19T05:09:42.393 に答える