javascript - Ajax 在 php while 循环中更新我表单中的第一行

标签 javascript php jquery

我有一个 PHP while 循环。在我的 while 循环中,我有一个 HTML 表单。我正在通过 ajax 将表单值处理到我的 PHP 中,然后在我的数据库中更新这些值。问题是每当我提交该表单时,它只会更新我表中的第一个获取行。我还通过我的表单将唯一 ID 传递给 ajax,但由于某种原因,只有第一行不断更新。

我的 Php 代码:

<?php
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) { ?><form>
    <input type="text" name="id" value="<?php echo $row['no'] ?>"><br>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio" value="NO">NO
            <input type="radio" name="optradio" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio1" value="NO">NO
            <input type="radio" name="optradio1" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio2" value="NO">NO
            <input type="radio" name="optradio2" value="YES">YES
        </div>
    </fieldset>
    <button type="submit" value="Submit" class="btn">SUBMIT</button>
</form><?php }

我的 Ajax 代码:

$(document).ready(function(){

 var launchAjax = function () { // event handler for button click
 $.post(
 "inbetween.php/",
  {
      id: $("[name=id]").val(),
      question: $("[name=optradio]:checked").val(),
      question1: $("[name=optradio1]:checked").val(),
      question2: $("[name=optradio2]:checked").val(),
  }
);
}
    $(".btn").click(launchAjax);
 }); 

我的 PHP SQL 查询

 <?php

include 'common.php';

$id = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);
$question = filter_input(INPUT_POST, "optradio", FILTER_SANITIZE_STRING);
$question1 = filter_input(INPUT_POST, "optradio1", FILTER_SANITIZE_STRING);
$question2 = filter_input(INPUT_POST, "optradio2", FILTER_SANITIZE_STRING);


function getMark($answer, $mark = 1){ 
    $result = 0;
    if($answer == 'YES'){
        $result = $mark;
    }
    return $result;
}

    $p = 0;
    $p += getMark($question, 1); 
    $p += getMark($question1, .5);
    $p += getMark($question2, 2);


$command1 = "UPDATE rating SET marks = marks + '$c', marks= marks/ totalNumber WHERE no = '$id'";

 // prepare and executing
$stmt1 = $dbh->prepare($command1);
$result = $stmt1->execute();

?>

最佳答案

您正在使用 PDO,但您的 while 循环似乎使用了 mysqli 方法,如果您选择多行,则使用 fetchAll,更新您的代码:

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) {
    $id = $row['no'];
}

更新:如果你想要多个表单,每行一个,你必须这样做:

<?php
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) { ?><form>
    <input type="text" name="id" value="<?php echo $row['no'] ?>"><br>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio" value="NO">NO
            <input type="radio" name="optradio" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio1" value="NO">NO
            <input type="radio" name="optradio1" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio2" value="NO">NO
            <input type="radio" name="optradio2" value="YES">YES
        </div>
    </fieldset>
    <button type="submit" value="Submit" class="btn">SUBMIT</button>
</form><?php }

关于javascript - Ajax 在 php while 循环中更新我表单中的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49077141/

相关文章:

javascript - 常规字符串和模板字符串之间的性能差异?

php - 这在 PHP 中是什么语法?

php - 使用正则表达式匹配具有特定ID的div block

Javascript验证以插入特定名称的文件

JQuery 选择具有相同值的复选框

javascript - Date(dateString) 和 new Date(dateString) 的区别

javascript - 为什么 ajax loadXml 回调似乎不起作用

php - 我的 sql 查询中的语法错误(ON DUPLICATE KEY UPDATE)

javascript - future 日期引发错误 jquery ui datepicker

javascript - 公开 AWS Cognito ID 是否安全?