2017-11-03 10 views
0

誰かがwpdbに情報行を保存できるようにするためのフォームを作成しようとしています。何らかの理由で私がフォームを送信するときに、テーブルに何も格納されません。私はフォームからすべてを取り出し、私は "名前"の値を提出することができるとデータベースに格納しますが、フォームにフィールドを追加し、配列にデータを追加しようとすると何も起こりません。ここに私がこれまで持っているものがあります。WordPressデータベース配列がデータを渡していない

function elh_insert_into_db() { 

global $wpdb; 
// creates safety_users in database if not exists 
$table = $wpdb->prefix . "safety_users"; 
$charset_collate = $wpdb->get_charset_collate(); 
$sql = "CREATE TABLE IF NOT EXISTS $table (
    `id` mediumint(9) NOT NULL AUTO_INCREMENT, 
    `name` text NOT NULL, 
UNIQUE (`id`) 
) $charset_collate;"; 
require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
dbDelta($sql); 
// starts output buffering 
ob_start(); 
?> 
<form action="#v_form" method="post" id="v_form"> 
    <label for="first_name"><h3>First Name</h3></label> 
    <input type="text" name="first_name" id="first_name" /> 
    <label for="last_name"><h3>Last Name</h3></label> 
    <input type="text" name="last_name" id="last_name" /> 
    <input type="submit" name="submit_form" value="submit" /> 
</form> 
<?php 
$html = ob_get_clean(); 
// does the inserting, in case the form is filled and submitted 
if (isset($_POST["submit_form"]) && $_POST["first_name"] != "") { 
    $table = $wpdb->prefix."safety_users"; 
    $name = ($_POST["first_name"]); 
    $lname = ($_POST["last_name"]); 
    $wpdb->insert( 
     $table, 
     array( 
      'name' => $name, 
      'lname' => $lname 
     ) 
    ); 
    $html = "<p>Your name <strong>$name</strong> was successfully recorded. Thanks!!</p>"; 
} 
// if the form is submitted but the name is empty 
if (isset($_POST["submit_form"]) && $_POST["first_name"] == "") 
    $html .= "<p>You need to fill the required fields.</p>"; 
// outputs everything 
return $html; 

} 
// adds a shortcode you can use: [insert-into-db] 
add_shortcode('elh-db-insert', 'elh_insert_into_db'); 

私のコードで誰かが間違いを見たら私に知らせてください!

+0

保存していたファーストネームは姓ではなく、これに関連しているとお伝えしましたか? '$ name = s($ _ POST [" first_name "]); $ lname =($ _POST ["last_name"]); 'sがありません? '($ _POST [" last_name "])' '($ _ POST [" last_name "])'に変更しますか? – admcfajn

+1

私はちょうど私がちょうど私がコードの上にコピーしていたときに私はそれが私のサイトではそうではないが気づいてくれてありがとう! – WordPressFreddie

+0

np、私はmySqlプロではありませんが、各パラメータの列を追加する必要はありませんか?あなたのCreate Tableステートメントは、IDと名前のカラムだけを追加しています。名前が '' '$ sql ="であることが期待されます。テーブルが存在しない場合$ table( 'id' mediumint(9)NOT NULL AUTO_INCREMENT、 'name'テキストはNULLでなく、' lname'テキストではありません。 ユニーク( 'id') )$ charset_collat​​e;"; '' – admcfajn

答えて

0

試してみてください。

<form action="index.php" method="POST" id="v_form"> 

の代わりに:

<form action="#v_form" method="post" id="v_form"> 

あなたのPHPファイルの名前でindex.phpを交換してください。

編集: でエラーが発生しているようです。

$name = s($_POST["first_name"]); 

($_POST

+0

私は残念なことに幸運にもこれを試しました。これはfunctions.phpファイルに存在するショートコードなので、私はフォームアクションindex.phpを使用しようとしましたが、ブラックだけで ""もデータベースにも記録されていません – WordPressFreddie

+0

このテーブルのファイル名は?それが 'functions.php'なら' action = "functions.php" ' –

+0

が必要です。もう一つの考え方は、array()を使う代わりに、mysql_query()を姓と名字の両方に2回使うことです。 –

0

前に「s」を削除するので、myPHPadminを見た後、私は最後の名前の列を作成することができましたし、私が提出する任意の他、それはすべて今の列そのデータベースに追加しています作成する必要はありません。

関連する問題