コードを非常に長い GET ステートメント (正しい言葉ですか?) からページごとに個別のファイルに変換しています。これから表示するコードは、独自のファイルに移動する前に正常に機能しました。
ページの完全なコードは次のとおりです。
<?
require_once('./inc/glob_head.php');
$database->openConnection();
$listOfGamesQuery = $database->queryDB("SELECT * FROM mainSite_games");
if (isset($_GET) && $_GET['action'] == 'deleteGame')
{
$gameID = $_GET['gameID'];
$database->queryDB("DELETE FROM mainSite_games WHERE id='$gameID'");
redir('viewGames.php');
}
elseif (isset($_GET) && $_GET['action'] == 'editGame')
{
$gameID = $_GET['gameID'];
$gameNameQry = $database->queryDB("SELECT gameName FROM mainSite_games WHERE id='$gameID'");
while ($gameNameDta = $database->fetchArray($gameNameQry))
{
$gameName = $gameNameDta['gameName'];
}
$gameDescQry = $database->queryDB("SELECT gameDesc FROM mainSite_games WHERE id='$gameID'");
while ($gameDescDta = $database->fetchArray($gameDescQry))
{
$gameDesc = $gameDescDta['gameDesc'];
}
?>
<form name="editGame" id="editGame" action="viewGames.php?action=processEdit&gameID=<? echo $gameID; ?>" method="POST">
<input type="text" name="gameName" value="<? echo stripslashes($gameName); ?>" /><br />
<textarea name="gameDesc" class="span12" rows="10"><? echo stripslashes($gameDesc); ?></textarea><br />
<input type="submit" name="submitEditGame" class="btn btn-primary" />
</form>
<?
}
elseif (isset($_GET) && $_GET['action'] == 'processEdit')
{
$gameID = $_GET['gameID'];
$gameName = $database->escapeString($_POST['gameName']);
$gameDesc = $database->escapeString($_POST['gameDesc']);
$database->queryDB("UPDATE mainSite_games SET gameName='$gameName' WHERE id='$gameID'");
$database->queryDB("UPDATE mainSite_games SET gameDesc='$gameDesc' WHERE id='$gameID'");
redir('viewGames.php');
} else {
echo '<div class="contCont">';
echo '<table>';
echo '<thead>';
echo '<tr>';
echo '<th>Game Name</th>';
echo '<th>Delete</th>';
echo '<th>Edit</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
while ($listOfGames = $database->fetchAssoc($listOfGamesQuery)) {
echo '<tr>';
print '<td>' . stripslashes($listOfGames['gameName']) . '</td>';
print '<td><a href="viewGames.php?action=deleteGame&gameID='.$listOfGames['id'].'">Delete</a></td>';
print '<td><a href="viewGames.php?action=editGame&gameID='.$listOfGames['id'].'">Edit</a></td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</body>';
echo '</html>';
}
$database->closeConnection();
?>
glob_head は、データベース クラス、データベース接続、関数ファイルの要件、およびサイト全体で一定のスタイル/ページ構造を提供するだけです。これを述べた上で、$database 呼び出しは間違いではなく、実際には別の場所で定義されています。
問題は、上記のコードで、editGame の elseif ブロックがデータベースから情報を正常に取得していることです。したがって、情報を正しく取得しているに違いないと思います。ここで、ユーザーが送信をクリックすると、次のブロックである processEdit に移動し、何らかの理由でフィールドが空白になり、データベースに空白の値が設定されます。何が起こっているのかわかりません。たぶん、これには新鮮な目が必要ですか?前もって感謝します。
参考までに、「redir」呼び出しは、ヘッダーに依存する代わりに JavaScript リダイレクトを使用するカスタム関数です。コードの構造を変更するよりもクリーンで、おそらく使いやすいと思います。