使用PHP从HTML表单中提取值并将它们存储在MySQL DB中

时间:2011-01-27 22:30:39

标签: php mysql webforms

我在这里似乎有点问题,我无法弄明白。

所以这笔交易是我有一个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程序员,所以它可能(可能是)是我。如果有人能指出我需要做些什么才能让这样的系统工作,请告诉我

感谢。

3 个答案:

答案 0 :(得分:0)

尝试将所有表单字段放在表单标记上,并在变量上也使用mysql_real_escape_string

答案 1 :(得分:0)

我不清楚你的问题究竟是什么。

但是这个:

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

不看我喜欢它会做多少。尝试这样的事情:

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

(大括号是我个人的喜好)

假设您在某处定义了$ location,而您没有向我们展示。这将检查是否没有$ _POST ['locationForm'],如果有,它将使用它。

答案 2 :(得分:0)

您需要将要提交给任何给定页面的所有字段存在于单个表单标记中。不同表单标记中的任何元素都将作为一组THAT表单标记提交。 我假设你也想把你的更新结合起来?

//$_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']."'";