나는 매우 긴 GET 문장 (정확한 단어입니까?)에서 코드를 각 페이지의 개별 파일로 변환합니다. 제가 보여줄 코드는 자신의 파일로 옮기기 전에 잘 동작했습니다.PHP가 데이터베이스에 제대로 삽입되지 않았습니다.
페이지의 전체 코드는 다음과 같습니다
<?
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는 사이트의 주위에 일정 데이터베이스 클래스, 데이터베이스 연결, 기능 파일 요구 사항 및 스타일/페이지 구조를 제공한다. $ 데이터베이스 호출은 실수가 아니며 실제로 다른 곳에서 정의됩니다.
이제 위의 코드에서 editGame elseif 블록이 정보를 데이터베이스에서 성공적으로 가져옵니다. 따라서 정보를 올바르게 가져와야한다고 가정합니다. 이제 사용자가 제출을 클릭하면 processEdit이라는 다음 블록으로 이동하게되며, 어떤 이유로 든 필드를 비워두고 데이터베이스에 빈 값을 설정합니다. 나는 무슨 일이 벌어지고 있는지 전혀 모른다. 어쩌면 이것은 신선한 눈을 필요로할까요? 미리 감사드립니다.
'redir'호출은 헤더에 의존하는 대신 자바 스크립트 리디렉션을 사용하는 맞춤 함수입니다. 코드의 구조를 변경하는 것보다 더 깔끔하고 사용하기가 더 쉽습니다.
코드 형식을 들어 본 적이 있습니까? –
@ DarrylGill 포맷했습니다. 그게 너처럼 보이지 않는거야? .. –
그것이 어쩌면 미안한지 모르겠다. 나는 당신이 당신의 코드를 포맷 한 것을 본다. 그러나 그것을 뒤돌아 볼 때 약간 혼란 스럽다. 좀 더 가독성을 위해 줄 바꿈을 추가하고 PHP 'while 루프'를 포맷했습니다. –