2011-01-27 59 views
0

我似乎在這裏有一些問題,我無法弄清楚。使用PHP從HTML表單中提取值並將它們存儲在MySQL數據庫中

所以最終的結果是我有一個PHP腳本以及一個HTML文件,在那個文件中我有幾個帶有一些文本框和一些下拉列表的表單。現在我不得不在單一表格中選擇所有這些的原因是因爲如果我做了一個大的話,那麼當我點擊提交按鈕時,他們都不會工作。我不知道...我目前的代碼是在下面,我以前的代碼只有一種形式,它根本不工作。

  <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部分看到的變量是從代碼的前面部分的數據庫中檢索的,那很好。我遇到的問題是我希望用戶能夠編輯他們的信息,然後點擊提交按鈕和要保存的信息。目前發生的事情是,絕對注意到。頁面將刷新,所有的值將回到他們被拖動時的狀態,他們根本沒有存儲在數據庫中,現在我檢查以確保代碼的一部分正常工作,購買一些測試。它保存數據沒有問題。我細細的問題是形式他們自我,如果我以一種大的形式做所有事情都行不通......不知道爲什麼。現在,如果我在瀏覽器中單獨輸入每個表單的末尾,數據就會進入,但只是在該字段中,有時會將其他字段完全擦除,並存儲空字符串或空字符串。我似乎根本不知道這件事。

繼承人的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 2011-01-27 22:34:09

+0

好的,感謝您的輸入,我實際上在另一頁上完成了同樣的事情,但是我無法在這一頁上找到它。我不斷嘗試。謝謝。 – awmayhall 2011-01-27 22:40:47

回答

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

嘗試將所有表單字段放置在表單標籤上,並在變量上也使用mysql_real_escape_string

+0

已經做到了,謝謝 – awmayhall 2011-01-27 22:47:51

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']."'"; 
相關問題