将数据插入到定制表中

时间:2014-10-14 作者:Matthew

我正在尝试创建自定义输入表,以便将数据发送到wp数据库上的自定义表中。我无法让我的脚本做任何事情。用户将输入一种酒,如伏特加或威士忌,提供描述,并将其发送到数据库,其中wordpress数据库中有自定义表。我在wordpress页面中有html代码,在名为SetLixOrType的文件中有php。位于wordpress主文件夹中的php。

HTML表单

<form method = "post" action = "setLiquorType.php">
Add a New Liquor Type</br></br>
<p>Name: <input type="text" name="name"/></p>
<p>Description <input type="text" name="description"/></p>
----------------------------------------------
<input type="submit" value="Submit"/>
</form>
</br>
我的php脚本

<?php 
$name = $_POST[\'name\'];
$global $wpdb, $name, $description;
$table_name = $wpdb->prefix . "Liquor Type";
$wpdb->insert($table_name, array(
                            \'lq_name\' => $lq_name,
                            \'description\' => $lq_descrip
                            ),array(
                            \'%s\',
                            \'%d\')
    );
}
?>
任何帮助都会很好

1 个回复
SO网友:Aleksej

你说你的表格在主文件夹里?我想你需要为action="". 您可以尝试:

action="<?php echo site_url() . \'/setLiquorType.php\'; ?>"
将表单代码放入函数中是最佳做法。php,然后离开表单操作"E 空的。然后,您可以在提交表单时触发表单函数。

您的表单HTML:

<form method = "post" action = ""> //edited form action
     
      <h3>Add a New Liquor Type</h3> //wrapped title with <h3> tags and removed <br> because h3 element will have padding that will separate it from form (if not provided in your style.css it will be assigned by the browser)
      <p>  //wraping field with paragraph to generate automatic space between them without styling it
         <label for="name">Name:</label>  //removed <p> element and used <label> instead
         <input type="text" name="name"/>
      </p>
      <p>
         <label for="description">Description</label>
         <input type="text" name="description"/>
      </p>
      <hr> //replaced unnecessary --- lines 
      <input type="submit" value="Submit" name="liquor_submit"/>  // added name attribute that will be used to check if the form is submitted
</form>
</br>
现在在您的功能中。php您可以添加以下内容:

//setting up the form
function themename_add_new_liquor() {
    
    $name         = $_POST[\'name\'];
    $description  = $_POST[\'description\'];  //You forgot to collect data from "description" field
    
    global $wpdb; //removed $name and $description there is no need to assign them to a global variable
    $table_name = $wpdb->prefix . "liquor_type"; //try not using Uppercase letters or blank spaces when naming db tables

    $wpdb->insert($table_name, array(
        \'lq_name\' => $name, //replaced non-existing variables $lq_name, and $lq_descrip, with the ones we set to collect the data - $name and $description
        \'description\' => $description
    ),
    array(
        \'%s\',
        \'%s\'
    ) //replaced %d with %s - I guess that your description field will hold strings not decimals
    );
}

//And now to connect the  two:  
if( isset($_POST[\'liquor_submit\']) ) themename_add_new_liquor();
我希望这能有所帮助。此外,如果您没有首先创建数据库表,则所有这些都不起作用($wpdb->insert 函数用于在现有表中插入数据)。

结束

相关推荐

Storing user submitted forms

我想知道创建一个只有注册用户才能看到的表单的最佳方法是什么。我想在这里实现的主要想法是让用户登录并访问一个页面,其中有一个可以多次提交的申请表。每个表单将存储在数据库中并与用户关联。它还可以选择将文件附加到系统。在WP仪表板中,管理员可以浏览系统中的所有用户,并查看他们提交的所有应用程序。是否最好在仪表板中创建一个自定义选项卡并显示每个用户?表单数据是否会被分类为每个用户的元数据?我对如何开发这个有点困惑,如果有任何建议,我将不胜感激。