2011-01-27 3 views
0

여기에 약간의 문제가있는 것 같습니다.PHP를 사용하여 HTML 폼에서 값을 가져 와서 MySQL 데이터베이스에 저장하십시오.

그래서 거래가 나는 HTML 파일과 함께 PHP 스크립트를 가지고 있는데, 그 파일에는 텍스트 상자와 드롭 다운이있는 몇 가지 양식이 있습니다. 이제는이 모든 것들에 대해 단일 양식을 사용해야하는 이유는 하나의 큰 작업을 수행하면 제출 버튼을 눌렀을 때 작업하지 않을 것이기 때문입니다. 나도 몰라 ... 내 현재 코드는 아래에, 내 이전 코드는 단지 하나의 양식을했고 그것은 전혀 작동하지 않을 것입니다.

  <form method="post" id="locationFromPost" name="locationFormPost"> 
           <div class="formRow"> 
            <div class="label"> 
             <label for="locationForm">Current Location:</label> 
            </div> 

            <div class="field"> 
              //If post is null go back to value pull originally else echo post   
               <?php if($_POST['locationForm']==null) $location=$location;else $location=$_POST['locationForm']; ?>    
             <input type="text" name="locationForm" id="locationForm" value="<?php echo $location?>"></input> 
            </div> 
           </div> 
          </form> 

...... 등등 .......

  <form method="post" id="sexFromPost" name="sexFormPost">  
          <div class="formRow"> 
           <div class="label"> 
            <label for="sexForm">Sex</label> 
           </div> 

           <div class="dropDown"> 
            <select name="sex" id="sexForm" > 
//If post is null go back to value pull originally else echo post         
           <?php if($_POST['sexForm']==null) $sex=$sex;else $sex=$_POST['sexForm']; ?> 
             <option value="1" <?php if($sex==1){echo"selected='selected'";}?>>Male</option> 
             <option value="2" <?php if($sex==2){echo"selected='selected'";}?>>Female</option> 
             <option value="3" <?php if($sex==3){echo"selected='selected'";}?>>Not Specified</option> 
            </select> 
           </div> 
          </div> 
      </form> 

...... 등등 .......

<form method="post" id="submit" name="submit"> 
    <div class="formRow"><div id="seperator"></div></div> 
        <div class="submitButton"> 
         <input type="submit" name="submit" id="submit" value="Save Changes"/> 
        </div>   
       </div> 
</form> 

내 코드의 윗부분이 어떻게 보이는지, 모든 div는 사용자가 걱정할 필요가없는 서식을 지정하기위한 것입니다. 이제 정보를 저장하는 PHP 코드는 아래와 같습니다. 위 코드의 PHP 부분에서 볼 수있는 변수는 데이터베이스의 앞부분에있는 코드에서 검색된다는 점에 유의해야합니다. 내가 문제를 겪고있는 것은 사용자가 정보를 편집 한 다음 제출 버튼과 정보를 저장할 수있게하려는 것입니다. 현재 일어나는 일은, 물론, 절대적으로 주목할만한 것입니다. 페이지가 새로 고침되고 모든 값이 끌어 왔을 때의 값으로 되돌아갑니다. DB에 저장되지 않습니다. 이제 코드의 일부가 작동하는지 확인하고 테스트를 해보십시오. 데이터를 아무런 문제없이 저장할 수 있습니다. 내가 씬이 얇은 것은 문제는 폼 자체 다. 자기가 하나의 큰 폼으로 모든 것을하면 작동하지 않는다. 왜 그런지 모르겠다. 이제는 브라우저의 각 폼의 끝에서 enter 키를 누르면 데이터가 들어가지만 그 필드 만 다른 필드가 완전히 지워지고 null 또는 빈 문자열이 저장됩니다. 나는이 일을 전혀 이해하지 못하는 것 같다.

heres 정보를 저장하는 PHP.

<?php 
if (isset($_POST['submit'])) 
{ 
mysql_query("UPDATE members SET location= '".$_POST['locationForm']."' WHERE usr='" .mysql_real_escape_string($_SESSION['usr']) ."'"); 
mysql_query("UPDATE members SET location= '".$_POST['sexForm']."' WHERE usr='" .mysql_real_escape_string($_SESSION['usr']) ."'"); 

........ you know the rest....... 
}?> 

나는 완전히이 일이 일을하는 이유에 분실하고, 지금되지 않은-수단으로 최고의 PHP 프로그래머 메신저, 그래서 (아마) 나를 수 있습니다. 누구든지 내가 그런 일을하는 시스템을 얻으려면 어떻게해야하는지 지적 해 줄 수있다.

고마워.

+1

먼저 SQL 쿼리 변수를 이스케이프 처리하십시오. 그러나 둘째로, 한 번에 하나의 양식 만 제출할 수 있습니다. 한 번에 모든 양식 필드를 제출하려면 모든 양식 필드가 단일 양식 안에 있어야합니다. 수백만 개의 웹 사이트에서이를 관리해 왔기 때문에 "작동하지 않으므로 분할했습니다."보다는 양식을 처리하는 데 실제 오류가 있습니다. – Andrew

+0

좋아, 입력 해 주셔서 감사합니다. 실제로 다른 페이지에서 똑같은 작업을 수행했지만,이 작업을 수행하지 못했습니다. 계속 노력하고있어. 고맙습니다. – awmayhall

답변

0

나는 당신의 문제가 정확히 무엇인지 분명하지 않았습니다.

그러나이 : ​​많은 일을하는 것처럼

<?php if($_POST['locationForm']==null) $location=$location;else $location=$_POST['locationForm']; ?> 

나에게 보이지 않습니다. 이런 식으로 뭔가를 시도 :

<?php 
    if(!isset($_POST['locationForm'])){ 
     $location=$location; 
    } 
    else { 
     $location=$_POST['locationForm']; 
    } 
?> 

당신이 $ 위치는 당신이 우리를 표시하지 않은 곳 정의 가정

(중괄호 내 자신의 개인적인 취향이다). 이것은 $ _POST [ 'locationForm']이 존재하지 않는지를 검사 할 것이고, 그것이 있다면 사용할 것입니다.

+0

알았어요. 네가하는 일을 알았고, $ 위치가 다른 곳에서 정의 된 것을 보았다. – awmayhall

0

모든 양식 필드를 양식 태그 내에 배치하고 변수에도 mysql_real_escape_string을 사용해보십시오.

+0

이미 완료되었습니다. 덕분에 – awmayhall

0

주어진 페이지에 제출할 모든 입력란이 단일 양식 태그에 존재해야합니다. 다른 양식 태그의 모든 요소는 해당 양식 태그 세트로 제출됩니다. 나는 또한 당신이 아마 당신의 업데이 트를 결합하고 싶다고 가정?

//$_SESSION['usr'] should already be sanitized and safed wherever you handle your site credentials.. 
//set your submittable values, with a default to an empty string in this case. 

$sex=isset($_POST['sexForm'])?mysql_real_escape_string($_POST['sexForm']):""; 
$location=isset($_POST['locationForm'])?mysql_real_escape_string($_POST['locationForm']):""; 

//single statement, no need to iterate for each field, that's wasted connections. 
$sql="update "UPDATE members SET location= '$location' , sex='$sex' WHERE usr='".$_SESSION['usr']."'"; 
관련 문제