2013-05-03 4 views
0

나는 매우 긴 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'호출은 헤더에 의존하는 대신 자바 스크립트 리디렉션을 사용하는 맞춤 함수입니다. 코드의 구조를 변경하는 것보다 더 깔끔하고 사용하기가 더 쉽습니다.

+0

코드 형식을 들어 본 적이 있습니까? –

+0

@ DarrylGill 포맷했습니다. 그게 너처럼 보이지 않는거야? .. –

+0

그것이 어쩌면 미안한지 모르겠다. 나는 당신이 당신의 코드를 포맷 한 것을 본다. 그러나 그것을 뒤돌아 볼 때 약간 혼란 스럽다. 좀 더 가독성을 위해 줄 바꿈을 추가하고 PHP 'while 루프'를 포맷했습니다. –

답변

0

METHOD="POST"을 제출 중이지만 $_GET super 글로벌 변수를보고 있습니다. GET 제출이 이루어지지 않으므로 $_GET 변수가 비어 있습니다.

변경 $_REQUEST (또는 $_POST)에 $_GET의 모든 인스턴스, 또는 "METHOD="GET"METHOD="POST"을 변경합니다.

+0

오케이. 먼저 대답 해줘서 고마워. 모든 요청을 요청으로 변경했는데 작동하지만 .. 왜 그럴까요? 전에 GET을 사용했고 효과가있었습니다. 명확히 해 주시겠습니까? –

+0

GET으로 제출하면 데이터가 $ _GET 배열에 저장됩니다. POST와 함께 제출하면 POST 배열로 이동합니다. $ _REQUEST는 본질적으로 스크립트 시작 부분에서 실행되는'$ _REQUEST = $ _POST + $ _GET + $ _COOKIE'와 같습니다. 거의 항상 항상 가장 구체적인 것을 선택하는 것이 더 좋으며, $ _REQUEST를 선택하는 것이 올바른 방법 인 경우는 거의 없습니다. – Anther

+0

@Anther는 $ _REQUEST에 대해 정확히 맞습니다. –

관련 문제