【问题标题】:Creating a form to submit data into wordpress database创建表单以将数据提交到 wordpress 数据库
【发布时间】:2014-12-13 10:39:55
【问题描述】:

我一直在尝试想出一些方法来获取我在 wordpress 页面上制作的 html 表单,以获取输入的信息并将其发送到 wordpress 数据库中的自定义表格。我曾尝试调用自定义 php 脚本并在页面本身中编写代码,但我无法弄清楚如何让它工作。我要疯了,想弄清楚这一点,我要放弃了。关于从哪里开始寻找的任何建议,我已经搜索了一周,会很棒。

我曾尝试使用 mysqli_connection,但在连接我放置的位置时一直遇到问题 (mysite.com,user,pass,db);我收到另一个错误“无法连接”user@anotherunknownsite.com“我有一个共享 IP 所以我想知道它是否正在连接到另一个站点,该站点在我的代码中没有引用。我厌倦了使用本地主机而不是我的站点但是没有任何效果。

此代码尝试从数据库中获取一些数据,但没有任何反应,与 b4 相同,其中 mysite.com 显示错误无法连接到 user@randomsite.com 并且 localhost 不起作用。

 <?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);
?>

更新插入页面... setLiquorType.php in website.com/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
                            ));
?>

【问题讨论】:

  • 你将不得不给出一些代码示例
  • 当您尝试执行此操作时,具体的错误是什么?你能添加堆栈跟踪吗?
  • 你给我们的代码只显示了Liquor_Type表的内容。如果您向我们提供您尝试提交的表单的 HTML,以及包含 INSERT 代码的 php 脚本,我们可以提供帮助。
  • 这是我不断遇到的问题

标签: php mysql database wordpress


【解决方案1】:

发帖是这样的:

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>";
                    }

【讨论】:

  • 太棒了,谢谢,但是我如何获取表单数据并将其发送到数据库?
  • wordpress 会将它发送到一个 php 文件还是我必须在 wp 页面中拥有该 php?
  • 我还是有问题,我已经厌倦了你的插入方法,我过去写过类似的东西,但仍然无法将任何内容输入到数据库中。
  • 是时候检查你的错误日志,看看里面写了什么。
  • 好的,我知道为什么简单的输入不起作用,我不得不将我的表重命名为 wp_Liquor_Type。现在我还有一个问题,我无法让我的 html 代码发送我在 wp 主文件夹中的 setLiquorType.php 文件。如果我在 wp 帖子中有代码,我该如何发送输入信息而不在表单中执行 action="phpscript.php"。你发布了我的输入代码。
【解决方案2】:

我建议使用 WP 功能来完成这项工作。您需要全局对象 $wpdb 才能使用它们。对于插入尝试使用$wpdb-&gt;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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 2021-12-14
    • 1970-01-01
    • 2019-01-19
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多