插入的数据未定义,然后在数据库中显示为一个数字


Data being inserted as undefined and then comes up as a number in databasr

我对下面的代码有一些困难。我正在尝试为按下此表单后输出的用户提供数字,如- 1,2,3,4等

 <form method="POST" name="form">
    <input type="submit" value="Create Draft Order" name="shuffle">
</form>

但是,回显出项目id 'undefined'。我不确定我的Javascript是否对我想做的事情是错误的,但其余的输出/回声正确。

然后当我通过点击Finalyze Draft Order按钮提交它时。所有这些都成功地发送到我的数据库中,除了drafted_order列(我试图将这个计数发送到的列)显示为4。它似乎在计算数据库表中的记录数并显示在那里。我不明白的是在页面上,它显示数字是未定义的?

如果我没有将这个输入添加到Js中,脚本就会失败。

 '<input type="hidden" name="count[]" value="' + data[i].drafted_order + '">' +

我不明白为什么它是未定义的,为什么它不是按1、2、3、4等顺序计数,因为用户的输出。

我做错了什么?

echo 'Users to be given draft order: <br>';
$array = array();
while ($row = mysqli_fetch_assoc($query)) {
    $array[] = $row;
    echo $row['firstname'] . ' ' . $row['lastname'] . '<br>';
}
?>
<form method="POST" name="form">
    <input type="submit" value="Create Draft Order" name="shuffle">
</form>
    Shuffled results: <br>
    <div class="main-bag">     
    <div class="shuffle_results" id="results"></div>  
     <form method="post">
<?php
$count = 0;
    foreach ($array as $result) :
    $count++;
    $shuffle_count = $count;
        $shuffle_firstname = htmlentities($result['firstname']);
        $shuffle_lastname = htmlentities($result['lastname']);
        $shuffle_id = htmlentities($result['id']);
        $shuffle_username = htmlentities($result['username']);
        $shuffle_email = htmlentities($result['email']);
?>
    <input type="hidden" name="count[]" value="<?php echo $shuffle_count; ?>">
        <input type="hidden" name="firstname[]" value="<?php echo $shuffle_firstname; ?>">
        <input type="hidden" name="lastname[]" value="<?php echo $shuffle_lastname; ?>">
        <input type="hidden" name="id[]" value="<?php echo $shuffle_id; ?>">
        <input type="hidden" name="username[]" value="<?php echo $shuffle_username; ?>">
        <input type="hidden" name="email[]" value="<?php echo $shuffle_email; ?>">
<?php 
    endforeach;
     if ( isset($_POST['shuffle'] ) ) :
        echo '<input type="submit" value="Finalize Draft Order" name="insert">';
    endif;
?>
    </form>
<?php        
if (isset($_POST['insert'])) {
    $con = mysqli_connect("localhost", "", "", "");
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s'n", mysqli_connect_error());
        exit();
    }
    $draft_stmt1 = $con->prepare("INSERT INTO user_players (user_id, firstname, lastname, username, email) VALUES (?, ?, ?, ?, ?)");
    $draft_stmt2 = $con->prepare("INSERT INTO drafted_players (user_id, drafted_order, firstname, lastname, username, email) VALUES (?, ?, ?, ?, ?, ?)");
  if ( false===$draft_stmt1|| false===$draft_stmt2 ) {
         // Check Errors for prepare
        die('Add to user players prepare() failed: ' . htmlspecialchars($con->error));
    }
     $draft_stmt1->bind_param('issss', $shuffle_id, $shuffle_firstname, $shuffle_lastname, $shuffle_username, $shuffle_email);
     $draft_stmt2->bind_param('iissss', $shuffle_id, $shuffle_count, $shuffle_firstname, $shuffle_lastname, $shuffle_username, $shuffle_email);
    foreach ($_POST['id'] as $i => $shuffle_id) {
        $shuffle_firstname = $_POST['firstname'][$i];
        $shuffle_lastname = $_POST['lastname'][$i];
        $shuffle_username = $_POST['username'][$i];
        $shuffle_email = $_POST['email'][$i];
        $draft_stmt1->execute() or
            die('Add to user players execute() failed: ' . htmlspecialchars($draft_stmt1->error));
        $draft_stmt2->execute() or
            die('Add to user 
Javascript

var displayResults = function(data){
    var i = 0;
    var lineheight = 24;
    var time = 3000;
    var interval = setInterval(function(){ 
        if( i <= data.length){ 
            console.log( data[i] ); 
            $('#results').append('<div class="result">' +
                        //'<div class="shuffle_results">' + data[i].firstname + ' ' + data[i].lastname + '</div>' + 
                        '<div class="shuffle_results">' + data[i].drafted_order + ' '+ data[i].firstname + ' ' + data[i].lastname + '</div>' + 
                        '<input type="hidden" name="count[]" value="' + data[i].drafted_order + '">' +
                        '<input type="hidden" name="firstname[]" value="' + data[i].firstname + '">' +
                        '<input type="hidden" name="lastname[]" value="' + data[i].lastname + '">' +
                        '<input type="hidden" name="id[]" value="' + data[i].id + '">' +
                        '<input type="hidden" name="username[]" value="' + data[i].username + '">' +
                        '<input type="hidden" name="email[]" value="' + data[i].email + '">' +
                    '</div>');

in

if( i <= data.length){ 

尝试用<代替<=。数组的索引不包括长度(因为从0开始)。