【发布时间】:2017-03-12 09:59:18
【问题描述】:
我有一个插件,其中包含一个将 POST 数据发送到数据库表的 HTML 表单。 除了一件事,它工作得很好。登录用户的 ID 未发送到 DB 表。我认为这可能是我在第 2 步之前的 IF 语句。我已经改变了很多次,但没有任何结果。我所知道的是,这个 if 语句适用于 GET 请求,它实际上确实为您提供了用户的 ID,但显然不适用于 POST 请求。
function ml_install() {
// #1 CREATE TABLE
global $wpdb;
// creates ml_char in database if not exists
$table = $wpdb->prefix . "ml_char";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table (
`wp_id` mediumint(9) NOT NULL,
`char_id` mediumint(9) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
UNIQUE (`char_id`)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
// starts output buffering
ob_start();
if ( is_user_logged_in() ) {
$wpid = get_current_id();
}
// #2 CREATE HTML FORM
?>
<form action="#ml_form" method="post" id="ml_form">
<input type="hidden" name="wp_id" value="<? echo $wpid; ?>"/>
<input type="text" name="character_name" id="character_name" />
<input type="submit" name="submit_form" value="submit" />
</form>
<?php
$html = ob_get_clean();
// #4 INSERT FORM DATA INTO DB
if ( isset( $_POST["submit_form"] ) && $_POST["character_name"] && $_POST["wp_id"] != "" ) {
$table = $wpdb->prefix."ml_char";
$name = strip_tags($_POST["character_name"], "");
$wpdb->insert(
$table,
array(
'name' => $name,
'char_id' => $wp_id
)
);
$html = "<p>Greetings <strong>$name</strong>, and welcome to Hyreath.</p>";
}
【问题讨论】:
标签: php mysql wordpress phpmyadmin