解决同一网页上两个简单表单之间的冲突

时间:2014-02-27 04:46:38

标签: php html mysql forms

在我正在开发的会员网站上,一旦用户登录,在他的个人资料页面上有两个简单的表单。

只有当用户在数据库中将“区域”字段设为NULL时,才会显示第一个。如果“分区”字段包含任何信息,则第一个表单将替换为显示该分区数据的表。表单的目的是让用户从列表中选择他的区域,并更新他的帐户,以便他可以从他的区域读取本地信息。在他点击提交后,数据库中的“区域”字段被更新,然后他再也看不到这个表单了。

第二个是基本联系表单,如果用户需要任何帮助,用户可以通过该表单轻松地向支持团队发送电子邮件。一旦发送了消息,而不是表单,将显示成功消息,直到刷新页面,文本字段恢复正常并且用户可以发送另一条消息。

我已经测试了它们并且它们都可以单独工作,但我遇到的错误是当用户在“区域”字段中登录时,或者每当他的页面刷新时,第二个表单自动发送一个空白发送给支持团队的电子邮件,并且总是显示成功消息而不是要写入消息的文本输入。我在第二个表单提交为空时设置了一个错误,但尽管如此,当第一个表单显示时,每次刷新时,都会发送一封新的空白电子邮件......

在用户提交了第一个表单并更新了他的“区”后,第二个表单恢复正常并且运行正常......我知道存在冲突,或者我忘记在下面的代码中设置一些条件。请善待,看看并告诉我你认为错误可能在哪里。欢迎任何帮助。

<? if($row_user['district'] == NULL ): 
        if(!isset($_POST['submit2']))
        {
            foreach($row_user as $field => $value)
            {
                $_POST[$field] = $value;
            }
        }

        $error2 = 0;

        if(isset($_POST['submit2'])){
            if(isset($_POST['distr']) && ($_POST['distr']==""))
            {
                $error2 = 1;
                $msg_distr="<br /><span class='error'>Select your district</span>";
            }

            if($error2 == 0)
            {
                $update = 'UPDATE users SET ';

                if(isset($_POST['distr'])) $update .= 'district = '.GetSQLValueString($_POST['distr'], 'text').', ';

                $update = substr_replace($update,"",-2);
                $update .= 'WHERE id_user = '.$id_user;
                mysql_query($update, $conn) or die(mysql_error());
            }
        }

        ?>

第一个表单的HTML代码是

<form action="" method="post" enctype="multipart/form-data" >

    <table width="465px" border="0" cellpadding="5" cellspacing="5">
        <tr>
            <td width="160" valign="middle" align="left">
                <span class="style20"><b>Choose District</b> *</span>
            </td>
            <td valign="top" align="left">
                <select name="distr" onChange="sel_distr(this.value)" class="select" >
                    <option value="">Choose</option>
                    <option value="District1" <? if($_POST['distr']=="District1") echo "'selected'"?>>District1</option>
                    <option value="District2" <? if($_POST['distr']=="District2") echo "'selected'"?>>District2</option>    
                    <option value="District3" <? if($_POST['distr']=="District3") echo "'selected'"?>>District3</option>    
                    <option value="District4" <? if($_POST['distr']=="District4") echo "'selected'"?>>District4</option>    
                    <option value="District5" <? if($_POST['distr']=="District5") echo "'selected'"?>>District5</option>
                </select>
                <?=$msg_distr?>
            </td>
        </tr>
        <tr>
            <td > 
                <input type="submit" name="submit2" class="submit" value="Insert"  />
            </td>
        </tr>
    </table>
</form>

<?endif; ?> 

另一种形式是从该页面发送电子邮件,只需插入邮件并发送即可。用户无需插入他的姓名或电子邮件。

<?php     
$error_message=0;

if ($_POST["email"]<>'') {
    if(isset($_POST['comment']) && ($_POST['comment']=="")){
        $error_message=1;
        $er_msg="<br /><span class='error'>You can't send a blank message</span>";
    } 

    if($error_message == 0){     
        $ToEmail = 'mail@domain';
        $EmailSubject = 'New message from '.$row_user['name'].'';
        $mailheader = "From: ".$_POST["email"]."\r\n";
        $mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
        $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
        $MESSAGE_BODY = "<b>Name:</b> ".$_POST["name"]."<br/>";
        $MESSAGE_BODY .= "<b>Email:</b> ".$_POST["email"]."<br/><br/>";
        $MESSAGE_BODY .= "       ".nl2br($_POST["comment"])."<br/>";
        mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
        ?>

        <div class="success" style="height:60px;">
            <b><?=$row_user['name']?>, Your message was sent!</b> <br/>
            A member of our team will contact you soon.
        </div>
    <?php
    }

    if($error_message == 1){ ?> 
        <form action="me.html" method="post">
            <input name="name" type="hidden" value="<?=$row_user['name']?>" id="name" size="32"> &nbsp;
            <input name="email" type="hidden" value="<?=$row_user['email']?>" id="email" size="32"> <br/>
            <textarea name="comment" cols="45" rows="6" id="comment" class="input" style="width:90%"></textarea><br/>
            <input class="submit" type="submit" name="Submit" value="Send">
        </form>
        <?=$er_msg?>
    <?
    }
} else {
?>
    <form action="me.html" method="post">
        <input name="name" type="hidden" value="<?=$row_user['name']?>" id="name" size="32"> &nbsp;
        <input name="email" type="hidden" value="<?=$row_user['email']?>" id="email" size="32"> <br/>
        <textarea name="comment" cols="45" rows="6" id="comment" class="input" style="width:90%"></textarea><br/>
        <input class="submit" type="submit" name="Submit" value="Send">

    </form> 
<?php
};
?>

1 个答案:

答案 0 :(得分:0)

好吧,我认为这是一个小错误,你因为错误计数器标志太多而感到困惑。

尝试更改此内容:

if($error_message == 0){

为:

if($error_message == 0 && $row_user['district'] != NULL){