簡體   English   中英

創建一個表單以將數據提交到Wordpress數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM