AJAX вставка данных для проверки имени пользователя, приводит к дублированию элементов div и отсутствию данных - PullRequest
0 голосов
/ 28 декабря 2018

Предполагается, что приведенный ниже код проверяет, было ли имя пользователя уже занято до отправки формы.Однако после ввода имени во входные данные элементы div повторяются и данные не выводятся.Кто-нибудь может помочь с этой проблемой, используя AJAX?

PHP-код:

if (isset($_POST['check_username'])) {
    $user_login_name = $_POST['check_username'];

    $sql = "SELECT user_login_name FROM users;";
    $result = mysqli_query($conn, $sql);
    $rows = mysqli_fetch_array($result);

    if (!empty($user_login_name)) {
        foreach ($rows as $row) {
            if (strpos($row, $user_login_name) != false) {
                echo $row;
                echo "<br>";
            }
        }
    } else {
        echo "Database empty!";
    }
}

HTML-код:

<div class="register">
            <div class="band_1">
                <div class="box">
                    <form action="../server/register.php" method="POST">
                        <div class="input_table">                           
                            <table>
                                <thead>
                                    <tr>
                                        <th><h1>Register to LIMS</h1></th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td><input type="text" name="user_first_name" placeholder="Enter First Name"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="text" name="user_last_name" placeholder="Enter Last Name"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="text" name="user_phone" placeholder="Enter Contact Number"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="email" name="user_email" placeholder="Enter Email"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="text" name="user_login_name" placeholder="Select a Username"><p id="test"></p></td>
                                    </tr>
                                    <tr>
                                        <td><input type="password" name="user_password" placeholder="Select a Password"></td>
                                    </tr>
                                    <tr>
                                        <td><input type="password" name="user_password_2" placeholder="Repeat Password"></td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                        <button type="submit" name="user_register" class="button_1">Register</button>
                        <button type="button" class="button_3">Cancel</button>              
                    </form>
                </div>
            </div>
        </div>

и AJAX:

$(document).ready(function() {

    $("input[name=user_login_name]").keyup(function(){
        var user_login_name = $("input[name=user_login_name]").val();
        $.post("../server/register.php", {
            check_username: user_login_name
        }, function(data, status) {
            $("#test").html(data);
        });

    });

});

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Это ваш php-код с лучшим способом проверить, существует ли пользователь в БД.Просто проверьте в запросе, если пользователь существует и номер, вам не нужно проверять его с помощью php.

if(isset($_POST['check_username'])){
    $user_login_name=$_POST['check_username'];
    $sql="SELECT user_login_name FROM users WHERE user_login_name='$user_login_name'";
    $result=mysqli_query($conn, $sql);
    $numRows=mysqli_num_rows($result);
    $rows=mysqli_fetch_array($result,MYSQLI_NUM);
    var_dump($rows);
    if($numRows>0){ // If exists rows
        foreach($rows as $field)
            echo $field." => ";
        echo "<br>";
    }
    else
        echo "Database empty!";
}

Также для подключения ваших данных вы можете попробовать:

$.ajax({

});

Passingпеременные из PHP и вы можете решить, если вы показываете данные или нет со стороны JavaScript.

Надеюсь, это поможет C:

0 голосов
/ 28 декабря 2018

Кажется, просто улучшите php:

1) вам нужно проверить ввод пользователя пустоты, 2) и выбрать только совпадающие, 3) и, наконец, позвонить die:

if (!empty($_POST['check_username'])) {
    $user_login_name = $_POST['check_username'];

    $sql = "SELECT user_login_name FROM users where user_login_name like '%$user_login_name%';";
    $result = mysqli_query($conn, $sql);
    $rows = mysqli_fetch_array($result);

    if ($rows) {
        foreach ($rows as $row) {
            echo "$row<br>";
        }
    } else {
        echo "Database empty!";
    }

    die;
}

ОБНОВИТЬ.Также для этого лучше позвонить: $rows = mysqli_fetch_array($result, MYSQLI_ASSOC); - чтобы предотвратить получение дополнительных данных дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...