Ajax从数据库检查多个相同类型行的重复数据

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

我试图在Wordpress中创建一个具有多个相同类型字段(即标题)的表单。在这种情况下,我需要确保在提交表单之前没有尝试插入重复数据。我有以下代码块:

Titles.php

<?php /* Template Name: Titles */ 
get_header();
?>

<form action="<?php the_permalink(); ?>" method="POST">
    <input type="text" id='title' name="title[]" placeholder="এখানে শিরোনামটি দিন" required><span id="availability"></span><br/>
    <input type="text" id='title' name="title[]" placeholder="এখানে শিরোনামটি দিন" required><span id="availability"></span><br/>
    <input type="text" id='title' name="title[]" placeholder="এখানে শিরোনামটি দিন" required><span id="availability"></span><br/>
    <button class="myBtn" type="submit" id='submit' name="submit" value="সাবমিট করুন">সাবমিট করুন</button>
</form>

<script>  
    $(document).ready(function(){
        $('#title').blur(function(){
            var title = $(this).val();
            $.ajax({
                url:'http://localhost/research/?page_id=222',    //code for duplicate data check
                method:"POST",
                data:{title: title},
                success:function(data)
                {
                    if(data != '0')
                    {
                        $('#availability').html('<span>Title already exist</span>');
                        $('#submit').attr("disabled", true);
                    }
                }
            })
        });
    });  
</script>

check.php

<?php /* Template Name: Check Duplicate Titles */ ?>

<?php
{
    if(isset($_POST['title'])){
        global $wpdb;
        add_filter( 'pre_get_table_charset', '__return_false' );
        $results = $wpdb->get_results( "SELECT * FROM wp_webmon WHERE title='".$_POST['title']."'");
        echo $wpdb->num_rows;
    }
}
?>

实际上什么都没做。我真的需要帮助才能使这段代码正常工作。提前致谢。

php ajax wordpress duplicates real-time
1个回答
0
投票

试试这个代码

Titles.php

    <?php 
    /*Template Name: Titles*/
    get_header();
    ?>

    <form action="<?php the_permalink(); ?>" method="POST" id="formid">
        <input type="text" class='title' name="title[]" placeholder="এখানে শিরোনামটি দিন" required><span id="availability"></span><br/>
        <input type="text" class='title' name="title[]" placeholder="এখানে শিরোনামটি দিন" required><span id="availability"></span><br/>
        <input type="text" class='title' name="title[]" placeholder="এখানে শিরোনামটি দিন" required><span id="availability"></span><br/>
        <button class="myBtn" type="submit" id='submit' name="submit" value="সাবমিট করুন">সাবমিট করুন</button>
    </form>

    <script>  
        jQuery(document).ready(function(){
            jQuery('.title').blur(function(){
                var title = jQuery(this).val();
                jQuery.ajax({
                     type : "POST",
                     dataType : "json",
                     url : "<?php echo admin_url('admin-ajax.php'); ?>",
                     data:{data: jQuery('#formid').serialize(), action: "check_title"},
                     success: function(data) {
                         data = jQuery.trim(data);
                         console.log(data);
                        if(data != '0'){
                            jQuery('#availability').html('<span>Title already exist</span>');
                            jQuery('#submit').attr("disabled", true);
                        }
                    }
                });   
            });
        });  
    </script>

的functions.php

function check_title() {
    global $wpdb;
    parse_str($_POST['data'], $get_array);
    $get_array = array_filter($get_array['title']);

    $results = $wpdb->get_results( "SELECT * FROM wp_webmon WHERE title in (".implode(',',$get_array).")");
    echo $wpdb->num_rows;
    exit;
}

add_action( 'wp_ajax_nopriv_check_title', 'check_title' );
add_action( 'wp_ajax_check_title', 'check_title' );
© www.soinside.com 2019 - 2024. All rights reserved.