Я хочу взять идентификатор из базы данных и добавить его инкремент и сгенерировать новый идентификатор при нажатии кнопки и показать его в поле ввода - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу сгенерировать идентификатор при нажатии кнопки создания идентификатора.Когда кнопка нажата, я хочу получить максимальный идентификатор из базы данных и разделить его на 2 строки, чтобы отделить целую часть (идентификатор выглядит как SFABCD123456).затем я хочу увеличить целую часть на единицу и объединить 2 строки снова.Затем я хочу отобразить его в текстовом вводе empid.Я хочу, чтобы все это происходило без загрузки страницы. В моем коде, когда я нажимаю кнопку создания идентификатора, ничего не происходит .

index.php

<!DOCTYPE html>
<html>
<head>
<title></title>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
</head>

<?php 
//database connection
include 'includes/dbh.php'
?>

<body>

    <form method="POST" action="index.php">
        <label>Name :</label>
        <input type="text" name="name">

        <label>ID :</label>
        <input type="text" name="empid" id="empid">
        <button type="submit" id="generateID">GENERATE ID</button>


        <button type="submit" name="submit">SUBMIT</button>
    </form>

</body>
    <?php

        if(isset($_POST['submit']))
        {
            $name = $_POST['name'];
            $id = $_POST['empid'];


    ?>

    <p>
        Name : "<?php echo $name ?>;"
        <br>
        ID: "<?php echo $id ?>;"
    </p>

<?php

    }

?>


<script>
    $("document").ready(function(){
        $("#generateID").click(function(){
            $.post("generateid.php",function(){
                $("#empid").html(data);
            });
        });
    });
</script>

</html>

generateid.php

<?php


//database connection
include 'includes/dbh.php'


  if(isset($_POST['generateID']))
        {

            $query = "SELECT max(staffID) FROM staff";
            $result = mysqli_query($conn, $query);


            if(mysqli_num_rows($result) > 0)
             {
                while ($row = mysqli_fetch_array($result))
                {
                    $empid = $row['staffID'];
                }
            }


            $part1 = substr($empid, 0, 6);
            $part2 = intval(substr($empid, 6))+1;
            $part2 = str_pad($part2, 6, '0', STR_PAD_LEFT);
            $newstaffID = $part1.$part2;


            echo $newstaffID;

        }

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Попробуйте это, когда загружаете ваш index.php, вызываете функцию init,
функция init имеет запрос для получения максимального идентификатора персонала.Таким образом, вам не нужно вызывать запрос ajax.когда ваша функция инициализации загрузки index.php возвращает максимальный идентификатор персонала.сохраните его в переменной php.

<?php 
function init(){
$query = "SELECT max(staffID) FROM staff";
            $result = mysqli_query($conn, $query);


            if(mysqli_num_rows($result) > 0)
             {
                while ($row = mysqli_fetch_array($result))
                {
                    $maxstaff_id = $row['staffID'];
                }
            }
}
?>
on generate button click, store php variable value in to javascript variable . var maxstaff_id ="<?php echo $maxstaff_id; ?>";  you can use substr method to get integere portion and you can increment it by 1.   

example : 

var maxstaff_id='php echo $maxstaff_id ?>';   
$(document).ready(function(){ 

        $("#generateID").click(function(){
                var maxstaff_id = maxstaff_id.substr(6);
                maxstaff_id=parseInt(maxstaff_id)+1;
                $("#empid").val(maxstaff_id);
        });
    }); 
0 голосов
/ 28 сентября 2018

index.php

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){
        $.ajax({url: "generateid.php", success: function(result){
            $("#empid").val(result);
        }});
    });
});
</script>
</head>
<body>
<label>Name :</label>
<input type="text" name="name">

<label>ID :</label>
<input type="text" name="empid" id="empid">

<button>Generate Id</button>
</body>
</html>

generateid.php

$sql = "SELECT max(staffID) as max FROM staff";
        $result = $con->query($sql);
        $row = mysqli_fetch_array($result);

        $eid= $row['max'];
        $eid = substr($eid,6) + 1;
        $neweid = "SFABCD" . $eid;
        echo $neweid;

Я надеюсь, что это работает для вас.

0 голосов
/ 28 сентября 2018

попробуйте этот шаг

используйте type=button вместо type=submit

<button type="button" id="generateID">GENERATE ID</button>

используйте код jquery ajax, как показано ниже

<script>
    $("document").ready(function(){
        $("#generateID").click(function(){
            var id = $('#empid').val();
            $.post("generateid.php",{generateID:id},function(data){
                $("#empid").html(data);
            });
        });
    });
</script>

pass generated id textboxзначение на generateid.php странице и получить данные обратно в function(data)

добавить точку с запятой в generateid.php

include 'includes/dbh.php'; // add semicolon hehe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...