使用POST方法提交两个不同的HTML表单


submit 2 different forms in HTML using POST method

我在一个HTML页面中有两个表单。一个表单发布到数据库,另一个表单发送一封包含表单中详细信息的电子邮件。我想起来很简单,但尝试了很长时间都没有成功。

HTML:

    <ul class="slides">
        <li>
            <div id="contactFormContainer" class="container">
                <div class="left">
                    <h1 class="uppercase">do you  have project inquiry??</h1>
                    <form id="contactForm" method="POST" name="contactForm" action="">
                        <fieldset>
                            <p> 
                                <label for="fullname">Fullname</label> 
                                <input name="fullname" id="fullname" type="text">
                            </p>
                            <p> 
                                <label for="email">Email</label> 
                                <input name="email" id="contact_email" type="text">
                            </p>
                            <p> 
                                <label for="fullname">Subject</label> 
                                <input name="fullname" id="fullname" type="text">
                            </p>
                            <p> 
                                <label for="fullname">Project Description</label> 
                                <textarea name="message" id="message" rows="2" cols="20"></textarea>
                            </p>
                            <p> 
                                <input class="btn" id="contactSubmit" type="submit" value="Submit">
                            </p>
                        </fieldset>
                    </form>     
                </div> <!-- end left -->
                <div class="right">
                    <span class="head">Twitter Feeds</span>
                    <div class="twitter">
                        <!-- twitter feed will be generated -->
                    </div>
                </div> <!-- end right -->
            </div> <!-- end contact form container -->
        </li>
        <li>
            <div class="head container">
                <h2>coming soon...</h2>
            </div>
            <div class="body container">
                <h1 class="uppercase">Subash.com is coming with new face.</h1>
                Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Donec id elit non mi porta gravida at eget metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Cum sociis natoque penatibus et magnis dis parturient.
            </div>
            <div class="footer container">
                <p class="signup"><span class="cursive">sign up</span> ..be the first to be notified</p>
                <div class="inputbox">
                    <form accept-charset="UTF-8" action="" name="subscribeForm" id="subscribeForm" method="post">
                        <input class="email_field" id="email" name="email" placeholder="Type your email address..." type="email">
                        <input class="submit_button" type="submit">
                    </form>  
                    <div class="status">
                        <?php 
                            if(isset($status)){
                                echo '<p>' . $status . '</p>';
                            } else {
                                echo '<p class="spam">We will never spam you.</p>';
                            }
                        ?>
                    </div>
                 </div>
            </div>
        </li>
    </ul>

PHP

    <?php
require_once('includes/db.php');
require_once('includes/functions.php');
require_once('includes/validate.php');
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// subscribe form
$email = trim($_POST['email']);
if(empty($email) || !valid_email($email)){
    $status = 'Please provide valid email address.';
} else {
    if(email_exist($email)){
        $status = 'You are already subscribed.';
    } else {
        add_email($email);
        $status = 'Thank you for subscribing.';
    }
}   
 }
require 'index.tmpl.php';
?> 

这段代码完全符合预期。但现在我需要提交另一个表单。我尝试在REQUEST_METHOD检查中添加此代码,但没有成功:

    $fullname = $_POST['fullname'];
if(!empty($fullname)){
    $status = 'sucess';
    echo $status;
} else {
    echo $fullname;
}

我也试过做:

if (!empty($_POST['contactForm'])) {
   //do something here;
}
if (!empty($_POST['subscribeForm'])) {
   //do something here;
}

我缺了什么吗??

您对fullnamesubject字段使用了相同的id和名称,这可能会导致一些问题。。。

为提交按钮使用name属性,并在单击按钮时检查php。

<input class="btn" id="contactSubmit" name ="contactSubmit"
type="submit" value="Submit">
<input class="submit_button" name="submitEmail" id="submitEmail" type="submit">

然后在php 中

if(isset($_REQUEST['contactSubmit']))
{
       // contact submit clicked do action based on that
} 
if(isset($_REQUEST['submitEmail']))
{
    // Send email
} 

只发送表单(以及与之关联的值)。所以你不能用正常的方式。

您可能需要一些JavaScript来"点击"另一个提交按钮。

还要检查这个问题:提交多个表单