在 WordPress 页面中从 MySQL 插入并选择数据

问题描述 投票:0回答:1

我正在设计一个WordPress网站,我已经完成了设计部分,现在下一阶段是数据库相关的事情。

  1. 将数据插入数据库。
  2. 选择数据并显示在页面中。
  3. 如果我不想安装小部件,我需要在哪里创建 PHP 页面?我需要将代码放在哪里?

我用谷歌搜索了一些插件,我得到了

php code widget
插件并作为小部件插入到我的页面之一

我尝试安装

insert_php
插件,但它不起作用,所以我继续使用 php_code_widget

Pages-> All Pages-> Home Page -> Add Row -> Add Widget -> Php Code Widget.

现在在我的 MySQL 数据库中,我有一个名为

Rituals
的简单表,包含三列

 Ritual ID-> Int -> Auto Increment.
 Ritual_Name-> varchar
 Ritual_Active-> varchar.

现在我需要将仪式名称插入数据库,通过一些参考,我获得了此代码,并将其放入 php 代码小部件窗口中。

<?php
 require_once('../../../wp-load.php');
 function insertuser(){

 if(isset($_POST['submit']){
 global $wpdb;
 $rname=$_POST['rname'];
 $ractive=$_POST['ractive'];
 $table_name = $wpdb->prefix . "mahathiwp";
  $wpdb->insert($table_name, array ('Ritual_Name' => $rname, 'Ritual_Active' =>   $ractive) ); 
 }
 ?>
  <form action="" method="post">
  Ritual Name: <input type="text" name="rname" /><br><br>
  Ritual Active: <input type="text" name="ractive" /><br><br> 
 <input type="submit" name="submit"/>
 </form>

 <?php

 }

insertuser();
?>

Data is not getting inserted. 

您能否建议将数据插入数据库以及检索数据并将其显示在我的 WordPress 页面中的正确且更快的方法。任何帮助表示赞赏。

php mysql wordpress wordpress-theming
1个回答
1
投票

您必须自定义您的主题,

添加代码以在提交表单时执行操作。

functions.php

function childtheme_style_andscripts(){
    //wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_script('ajax-function',  get_stylesheet_directory_uri() . '/js/ajaxfunction.js', array('jquery'), '1.0', true );
    wp_localize_script( 'ajax-function', 'usersubmitform', array(
        'url'=> admin_url('admin-ajax.php'),
        'security'=> wp_create_nonce('our-nonce')
    ) );
}

add_action('wp_enqueue_scripts','childtheme_style_andscripts');


function form_action_function(){
    require_once(dirname( __FILE__ ).'/../../../wp-load.php');
    $data = $_POST['data'];
    global $wpdb;
    if( !check_ajax_referer('our-nonce', 'security' ) ){

        wp_send_json_error('security failed');

        return;

    }
    //var_dump($data);
    $rname=$data['rname'];
    $ractive=$data['ractive'];

    $table_name = "rituals";
    $wpdb->insert($table_name, array ('rname' => $rname, 'ractive' => $ractive) ); 

    $wpdb->show_errors();
    $wpdb->print_error();
    echo 'From Submitted Successfully';

    die();
}
add_action('wp_ajax_nopriv_form_action_function','form_action_function');
add_action('wp_ajax_form_action_function','form_action_function');

自定义页面模板

<?php
/**
    Template Name: Form For User
 */

get_header(); ?>

<div id="main-content" class="main-content">

<?php
    if ( is_front_page() && twentyfourteen_has_featured_posts() ) {
        // Include the featured content template.
        get_template_part( 'featured-content' );
    }
?>
    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">
            <h1 class="headingform">User Form</h1>
            <div class="msg"></div>
            <form  class="userform">
                Ritual Name: <input type="text" id="rname" name="rname" /><br><br>
                Ritual Active: <input type="text" id="ractive" name="ractive" /><br><br> 
                <input  id="usersubmit"type="submit" Value="Submit" />
            </form>

        </div><!-- #content -->
    </div><!-- #primary -->
    <?php get_sidebar( 'content' ); ?>
</div><!-- #main-content -->

<?php
get_sidebar();
get_footer();

ajax-admin.js

这里我使用了ajax,这就是为什么创建这个文件的原因。将此文件放入你的主题js文件夹中。

jQuery(document).ready(function($){

    var submitButton = document.getElementById('usersubmit');

    var ajaxFunctionformprocess = function(fromdata, action){
        $.ajax({
            type:'post',
            url: usersubmitform.url,
            data:{
                action:action,
                data:fromdata,
                security:usersubmitform.security,



            },
            success:function(reponse){
                $('div.msg').html(reponse);
            },
            error:function(response){
                alert(response);
            }

        });



    }

    submitButton.addEventListener('click', function(event){
        event.preventDefault();
        var fromdata = {
            'rname':document.getElementById('rname').value,
            'ractive':document.getElementById('ractive').value,
        };
        ajaxFunctionformprocess(fromdata, 'form_action_function');  

        });




});
© www.soinside.com 2019 - 2024. All rights reserved.