[英]Creating a form to submit data into wordpress database
我一直試圖想出一種方法來獲取我在wordpress頁面上制作的html表單,以獲取輸入的信息並將其發送到wordpress數據庫中的自定義表格。 我嘗試調用自定義php腳本並在頁面本身中編寫代碼,但我不知道如何使它工作。 我快瘋了,想弄清楚這一點,我要放棄。 我一直在搜索一個星期,關於從哪里開始尋找的任何建議都很好。
我已經嘗試使用mysqli_connection,但是在連接我放置的地方(mysite.com,user,pass,db)時仍然遇到問題; 而且我收到另一個錯誤“無法連接“ user@anotherunknownsite.com””,我有一個共享的IP,所以我想知道它是否正在連接到該其他站點,而該站點在我的代碼中沒有引用。我用本地主機而不是我的站點感到疲倦,但是沒有任何效果。
這段代碼試圖從數據庫中獲取一些數據,但沒有任何反應,與b4相同,在b4中,mysite.com顯示無法連接到user@randomsite.com且本地主機無法正常工作的錯誤。
<?php
$con=mysqli_connect("mysite.com","user","pass","db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Liquor_Type");
while($row = mysqli_fetch_array($result)) {
echo $row['lq_name'] . " " . $row['description'];
echo "<br>";
}
mysqli_close($con);
?>
我的表格
<form action = "setLQType.php" method="post">
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" name="Submit"/>
</form>
</br>
setLQType php文件,在主要的wordpress詞典中。 它將到達文件,但不執行任何操作。
<?php
$con=mysqli_connect("mysite.com","user","pass","db_name");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$name = mysqli_real_escape_string($con, $_POST['name']);
$description = mysqli_real_escape_string($con, $_POST['description']);
$sql="INSERT INTO Liquor_Type(lq_name, description)
VALUES ('$name ', '$description)";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
更新了插入頁面... website.com/setLiquorType.php中的setLiquorType.php
<?php
$global $wpdb;
$name = $_POST['name'];
$description = $_POST['description'];
$table_name = $wpdb->prefix . "wp_Liquor_Type";
$wpdb->insert($table_name, array(
'lq_name' => $name,
'description' => $description
));
?>
發布如下:
global $wpdb;
$name = sanitize_text_field( $_POST['name']);
$lq_name = sanitize_text_field( $_POST['lq_name']);
$description = $_POST['description'];
$table_name = $wpdb->prefix . "Liquor_Type";
$wpdb->insert( $table_name, array(
'liquor_name' => $liquor_name,
'description' => $description
) );
您的mysql連接在var $ wpdb中可用
global $wpdb;
$sql="SELECT * FROM Liquor_Type";
$row = $wpdb->get_results($sql);
foreach ($row as $data)
{
echo $data->lq_name. " " . $data->description;
echo "<br>";
}
我建議使用WP函數來完成這項工作。 您需要全局對象$wpdb
才能使用它們。 對於插入,請嘗試使用$wpdb->insert($table, $array)
。
您可以定義一個短代碼,然后將其放入functions.php
或為此制作一個小插件。 在同一函數中,您可以繪制表單並嘗試從中獲取數據(我認為我更喜歡先獲取數據並最后繪制表單)
在這里,您有一個有效的代碼:
<?php
if( $_POST['name'] != '' && is_email($_POST['email']) && wp_verify_nonce( $_POST['aspirante_nonce'], 'graba_aspirante')) {
$table = 'Liquor_Type';
$nombre = sanitize_text_field($_POST['nombre']);
$correo = $_POST['correo'];
$web = esc_url($_POST['web']);
$created_at = date('Y-m-d H:i:s');
$wpdb->insert(
$table,
array(
'name' => $name,
'email' => $email,
'web' => $web,
'created_at' => $created_at,
)
);
echo "<p>Your data has been recorded. Thanks!<p>";
} else {
echo "<p>There was an error. Try again, please!<p>";
}
ob_start();
?>
<form action="<?php get_the_permalink(); ?>" method="post" id="my_form">
<?php wp_nonce_field('save_it', 'form_nonce'); ?>
<div class="form-input">
<label for="name">Name</label>
<input type="text" name="name" id="name" required>
</div>
<div class="form-input">
<label for='email'>Email</label>
<input type="email" name="email" id="email" required>
</div>
<div class="form-input">
<label for="web">Web</label>
<input type="text" name="web" id="web">
</div>
<div class="form-input">
<input type="submit" value="Submit">
</div>
</form>
<?php
return ob_get_clean();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.