首页 > 解决方案 > 在表单提交时,将表单数据发送到数据库

问题描述

在尝试将表单数据发送到数据库表时,我遇到了问题(和担忧,将在最后解释)。提交时,它什么也不做,我的表中没有生成新行。

我有以下文件夹结构:

template-parts
   form
      form.php
      send-to-database.php
snippets
    form-step-1.php
    form-step-2.php
    form-step-3.php

在我的database中,我创建了一个名为attendants. 任何表单提交数据都将发送到这里。

表单.php

<div class="form" id="rsvp-form">
    <div class="container">
        <div class="row">
            <div class="col-12">
                <form id="rsvpForm" action="send-to-database.php" method="post">
                    <?php get_template_part('template-parts/snippets/form-step-1'); ?>
                    <?php get_template_part('template-parts/snippets/form-step-2'); ?>
                    <?php get_template_part('template-parts/snippets/form-step-3'); ?>
                </form>
            </div>
        </div>
    </div>
</div>

form-step-1.php

<fieldset>
    <input type="text" name="fname" placeholder="First name*" required />
    <input type="text" name="lname" placeholder="Surname*" required />
    <input type="text" name="email" placeholder="Email address*" required />
    <textarea name="address" placeholder="Address*" required></textarea>
    <input type="button" name="next" class="next action-button" value="Next" />
</fieldset>

表单-step-2.php

<fieldset>
    <div class="attending">
        <p>Which events will you be attending?</p>
        <div class="checkbox">
            <input type="checkbox" id="event1" name="jago" value="Jago">
            <label for="event1">Jago</label>
        </div>
        <div class="checkbox">
            <input type="checkbox" id="event2" name="wedding" value="Wedding">
            <label for="event2">Wedding</label>
        </div>
        <input type="text" name="attendee" placeholder="Attendee name">
    </div>
    <div class="coaches">
        <p>Will you be travelling by the coaches provided?</p>
        <div class="radio">
            <label>
                <input type="radio" id="travel_yes" name="travel" value="Yes">
                <span>Yes</span>
            </label>
        </div>
        <div class="radio">
            <label>
                <input type="radio" id="travel_no" name="travel" value="No">
                <span>No</span>
            </label>
        </div>
    </div>
    <input type="button" name="previous" class="previous action-button" value="Previous" />
    <input type="button" name="next" class="next action-button" value="Next" />
</fieldset>

表单-step-3.php

发送到数据库.php

<?php

// fieldset 1
$first_name     = $_POST['fname']; // varchar
$last_name      = $_POST['lname']; // varchar
$email          = $_POST['email']; // varchar
$address        = $_POST['address']; // varchar

// fieldset 2
$jago           = $_POST['jago']; // boolean
$wedding        = $_POST['wedding']; // boolean
$attendee_name  = $_POST['attendee']; // varchar
$travel         = $_POST['travel']; // boolean

// fieldset 3
$note           = $_POST['other']; // varchar

// connect to database
$host = "localhost"; // Host name 
$username = "****"; // Mysql username 
$password = "****"; // Mysql password 
$db_name = "rsvp"; // Database name 

// Connect to server and select databse. 
$dbconn = mysqli_connect($host, $username, $password)or die("cannot connect"); 
mysqli_select_db($dbconn, $db_name)or die("cannot select DB"); 


$query = "INSERT INTO `attendants` (`first_name`, `last_name`, `email`, `address`, 'attending_jago', 'attending_wedding', 'attendee_name', 'additional_note') VALUES ('$first_name', '$last_name','$email', '$address', '$jago', '$wedding', '$attendee_name', '$travel', '$additional_note' )";  

var_dump($query);

mysqli_query($dbconn, $query);

?>

我还担心主题本身中存在与数据库的连接详细信息,我想避免这种情况,但我还没有看到任何其他方法来做到这一点?

标签: phpdatabasewordpress

解决方案


推荐阅读