将HTML表单发布到新的wp数据库表

时间:2013-04-08 16:18:58

标签: mysql database wordpress

我正在尝试将HTML表单的输入值发布到WordPress数据库中的自定义表。我已设法在新行中显示某些内容,但几乎所有值都返回N;而不是表单中的值。

以下是我的页面模板中的代码:

<?php
global $wpdb;
global $current_user;

$userID = $current_user->ID;
$brand = serialize($_POST["brand"]);
$url = serialize($_POST["url"]);
$sector = serialize($_POST["sector"]);
$keywords = serialize($_POST["keywords"]);
if ( 
'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'updateSearch' ) {
        $ufDataUpdate = $wpdb->insert( 'wp_wct3', array( 
        'date' => current_time('mysql'),
        'userid' => $userID,
        'brand' => $brand,
        'url' => $url, 
        'sector' => $sector,
        'keywords' => $keywords ) );
        }
       ?>

<form method="post">


<label for="brand">Brand/Product Name: </label>
    <input type="text" id="brand" placeholder="eg: Spidr" class="clearfix" required />
    <label for="website">Website address: </label>
    <input type="url" id="url" placeholder="eg: www.spidr.co.uk" class="clearfix" required />
    <label for="sector">Market sector: </label>
    <input type="text" id="sector" placeholder="eg: Internet Marketing Tools" class="clearfix" required />
    <label for="keyword">Keywords/Phrases:<br><span class="orange">(comma separated)</span></label>
    <textarea cols="0" rows="8" class="light" id="keywords" required></textarea>


    <input type="submit" id="submit" name="submit" class="button-65 mobile-button" value="release the spiders!">
    <?php wp_nonce_field( 'updateSearch' ); ?>
    <input name="action" type="hidden" id="action" value="updateSearch" />

</form> 

其中wp_wct3是数据库名称,数组中的每个项目都是该表中每列的名称。

我不确定我的问题是在这个代码中,还是在数据库本身的设置中。我用Wordpress custom tables plugin制作新表。品牌,网址和行业只使用text定义,而关键字使用enum('0','1')

任何人都有任何想法,为什么价值观没有返回,我只是得到N;

2 个答案:

答案 0 :(得分:0)

找出主要问题。我错过了表单本身的name属性,所以我的PHP没有拿到字段值!

答案 1 :(得分:0)

this is my custom-form template.. it works for me

<?php
/**
Template Name: Custom-Form
 * The template for displaying all pages.
 *
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages
 * and that other 'pages' on your WordPress site will use a
 * different template.
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */

get_header(); ?>

    <div id="primary" class="site-content">
        <div id="content" role="main">

        <?php
        if (!empty($_POST)) {
        global $wpdb;
            $table = wp_achord;
            $data = array(
                'name' => $_POST['yourname'],
                'chord'    => $_POST['chord']
            );
            $format = array(
                '%s',
                '%s'
            );
            $success=$wpdb->insert( $table, $data, $format );
            if($success){
            echo 'data has been save' ; 
}
}
else   {
?>
        <form method="post">
        <input type="text" name="yourname">
        <textarea name="chord"></textarea>
        <input type="submit">
        </form>

       <?php }  ?>

        </div><!-- #content -->
    </div><!-- #primary -->

<?php get_footer(); ?>