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

时间:2016-12-28 05:21:58

标签: php mysql wordpress wordpress-theming

我正在设计一个WordPress网站,我对设计部分进行了深入研究,现在下一阶段是与数据库相关的事情。

1. Insert data into database.
2. Select the data and display it in the page.
3. Where i need to create a php page if i dont want to install widget.? where i need the place the code?

我搜索了一些插件,我获得了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 Increament.
 Ritual_Name-> varchar
 Ritual_Active-> varchar.

现在我需要将Ritual名称插入数据库, 通过一些参考,我得到了这个代码,我把它放在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页面中显示数据。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您必须自定义主题

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

<强>的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');  

        });




});