Javascript 我正在尝试从几个表单中提交一个表单,但提交的值只属于第一个表单

Javascript 我正在尝试从几个表单中提交一个表单,但提交的值只属于第一个表单,javascript,php,html,forms,form-submit,Javascript,Php,Html,Forms,Form Submit,我正在从数据库中检索一些信息,以表示如图所示的课程。然后,我想为用户提供一个按钮,供其单击以获取更多信息。为了知道点击了哪个帖子,我创建了一个表单,我把课程id放在里面,然后提交表单。但问题是,一旦我提交,所有帖子的id都相同,这是第一个id <?php $name = $_SESSION["uname"]; $sql = "SELECT * FROM `courses` where course_lec = '$name'";

我正在从数据库中检索一些信息,以表示如图所示的课程。然后,我想为用户提供一个按钮,供其单击以获取更多信息。为了知道点击了哪个帖子,我创建了一个表单,我把课程id放在里面,然后提交表单。但问题是,一旦我提交,所有帖子的id都相同,这是第一个id

<?php 
       $name = $_SESSION["uname"];              
       $sql = "SELECT * FROM `courses` where course_lec = '$name'";
       $result = $conn->query($sql);
       if ($result->num_rows > 0) {
           while($row = $result->fetch_assoc()) {
              echo '
                     <div class="col-md-4">
                     <span class="fa-stack fa-4x">
                     <i class="fa fa-circle fa-stack-2x text-primary"></i>
                     <i class="fa fa-shopping-cart fa-stack-1x fa-inverse"></i>
                     </span>
                     </br>
                    <a href="javascript: functionTest()">Search</a>
                   <form name="myform" id="form"  action="checkMarks.php" method="post">
                    <input type= "text" value ="'. $row["course_id"].' " name="test"></input>
                    </form>
                    </br>
                    </div>';

                             }

                    }

?>
                <script >
                    function functionTest() {

                         document.getElementById("form").submit();

                            }


                </script>

函数测试(){
document.getElementById(“表单”).submit();
}

你知道我该怎么解决吗

由于所有表单都具有相同的id,javascript将选择第一个并提交该id

你必须给他们所有不同的id,然后提交一个用户点击,以获得所需的结果

示例:您的echo将改变,为不同的窗体提供不同的ID,并为函数提供一个参数

... '<a href="javascript: functionTest('.$row["course_id"].')">Search</a>
   <form name="myform" id="form'.$row["course_id"].'"  action="checkMarks.php" method="post">
      <input type= "text" value ="'. $row["course_id"].' " name="test"></input>
   </form>' ...
…'
' ...
脚本将相应地更改:

<script >
    function functionTest(course_id) {
        document.getElementById("form"+course_id).submit();
    }
</script>

功能测试(课程号){
document.getElementById(“表单”+课程id).submit();
}

PS-这可能不是最好的方法,但却是一个好的开始。

由于所有表单都具有相同的id,javascript将选择第一个并提交该id

你必须给他们所有不同的id,然后提交一个用户点击,以获得所需的结果

示例:您的echo将改变,为不同的窗体提供不同的ID,并为函数提供一个参数

... '<a href="javascript: functionTest('.$row["course_id"].')">Search</a>
   <form name="myform" id="form'.$row["course_id"].'"  action="checkMarks.php" method="post">
      <input type= "text" value ="'. $row["course_id"].' " name="test"></input>
   </form>' ...
…'
' ...
脚本将相应地更改:

<script >
    function functionTest(course_id) {
        document.getElementById("form"+course_id).submit();
    }
</script>

功能测试(课程号){
document.getElementById(“表单”+课程id).submit();
}

PS-这可能不是最好的方法,但却是一个好的开始。

这个问题与每次使用相同id(表单)填充数据时的while循环一样合适,要解决这个问题,请在php中创建一个变量,比如$formId=0,并使用0初始化,每次使用while循环递增

$formId = 0
    while(){
echo"<form id="'.$formId.'" /form>"
$formId++;
}
$formId=0
while(){
回声“”
$formId++;
}

该问题适用于while循环,每次使用相同id(表单)填充数据时,要解决此问题,请在php中创建一个变量,比如$formId=0,并使用0初始化,每次使用while循环递增

$formId = 0
    while(){
echo"<form id="'.$formId.'" /form>"
$formId++;
}
$formId=0
while(){
回声“”
$formId++;
}

您的表单必须具有唯一的id:

<?php 
    $name = $_SESSION["uname"];              
    $sql = "SELECT * FROM `courses` where course_lec = '$name'";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        $form_id = 1;
        while($row = $result->fetch_assoc()) {
            echo '
            <div class="col-md-4">
            <span class="fa-stack fa-4x">
            <i class="fa fa-circle fa-stack-2x text-primary"></i>
            <i class="fa fa-shopping-cart fa-stack-1x fa-inverse"></i>
            </span>
            </br>
            <a href="javascript: functionTest()">Search</a>
            <form name="myform" id="form-'.$form_id++.'"  action="checkMarks.php" method="post">
            <input type= "text" value ="'. $row["course_id"].' " name="test" />
            </form>
            </br>
            </div>';

        }
    }
?>
<script >
    function functionTest() {
        document.getElementById("form").submit();
    }
</script>

函数测试(){
document.getElementById(“表单”).submit();
}

您的表单必须具有唯一的id:

<?php 
    $name = $_SESSION["uname"];              
    $sql = "SELECT * FROM `courses` where course_lec = '$name'";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        $form_id = 1;
        while($row = $result->fetch_assoc()) {
            echo '
            <div class="col-md-4">
            <span class="fa-stack fa-4x">
            <i class="fa fa-circle fa-stack-2x text-primary"></i>
            <i class="fa fa-shopping-cart fa-stack-1x fa-inverse"></i>
            </span>
            </br>
            <a href="javascript: functionTest()">Search</a>
            <form name="myform" id="form-'.$form_id++.'"  action="checkMarks.php" method="post">
            <input type= "text" value ="'. $row["course_id"].' " name="test" />
            </form>
            </br>
            </div>';

        }
    }
?>
<script >
    function functionTest() {
        document.getElementById("form").submit();
    }
</script>

函数测试(){
document.getElementById(“表单”).submit();
}

每个元素都必须有唯一的ID,或者根本没有ID。如果删除ID,则需要使用不同的方法来查找特定表单

<?php 
       $name = $_SESSION["uname"];              
       $sql = "SELECT * FROM `courses` where course_lec = '$name'";
       $result = $conn->query($sql);
       if ($result->num_rows > 0) {
           while($row = $result->fetch_assoc()) {
              echo '
                <div class="col-md-4">
                    <span class="fa-stack fa-4x">
                        <i class="fa fa-circle fa-stack-2x text-primary"></i>
                        <i class="fa fa-shopping-cart fa-stack-1x fa-inverse"></i>
                    </span>

                    </br>

                    <a href="javascript: functionTest()">Search</a>
                    <!-- remove the ID -->
                    <form name="myform" action="checkMarks.php" method="post">
                        <input type= "text" value ="'. $row["course_id"].' " name="test"></input>
                    </form>
                    </br>
                </div>';

            }
       }

?>

<script>
    function functionTest( event ){
        try{
            var a=event.target;
            var parent = a.parentNode;/* this will be the containing DIV */
            /* search within container for a form */
            var form=parent.querySelectorAll('form[name="myform"]')[0];
            /* submit the data */
            if( form )form.submit();
        }catch( err ){
            alert(err)
        }
    }
</script>

功能测试(事件){
试一试{
var a=事件目标;
var parent=a.parentNode;/*这将是包含的DIV*/
/*在容器中搜索表单*/
var form=parent.querySelectorAll('form[name=“myform”]')[0];
/*提交数据*/
if(form)form.submit();
}捕捉(错误){
警报(错误)
}
}

使用javascript是一种解决方案——您可以在每个表单中设置一个类似纯文本的提交按钮。或者,您可以使用单个表单,并在提交之前使用javascript设置值。

每个元素都必须有唯一的ID,或者根本没有ID。如果删除ID,则需要使用不同的方法来查找特定表单

<?php 
       $name = $_SESSION["uname"];              
       $sql = "SELECT * FROM `courses` where course_lec = '$name'";
       $result = $conn->query($sql);
       if ($result->num_rows > 0) {
           while($row = $result->fetch_assoc()) {
              echo '
                <div class="col-md-4">
                    <span class="fa-stack fa-4x">
                        <i class="fa fa-circle fa-stack-2x text-primary"></i>
                        <i class="fa fa-shopping-cart fa-stack-1x fa-inverse"></i>
                    </span>

                    </br>

                    <a href="javascript: functionTest()">Search</a>
                    <!-- remove the ID -->
                    <form name="myform" action="checkMarks.php" method="post">
                        <input type= "text" value ="'. $row["course_id"].' " name="test"></input>
                    </form>
                    </br>
                </div>';

            }
       }

?>

<script>
    function functionTest( event ){
        try{
            var a=event.target;
            var parent = a.parentNode;/* this will be the containing DIV */
            /* search within container for a form */
            var form=parent.querySelectorAll('form[name="myform"]')[0];
            /* submit the data */
            if( form )form.submit();
        }catch( err ){
            alert(err)
        }
    }
</script>

功能测试(事件){
试一试{
var a=事件目标;
var parent=a.parentNode;/*这将是包含的DIV*/
/*在容器中搜索表单*/
var form=parent.querySelectorAll('form[name=“myform”]')[0];
/*提交数据*/
if(form)form.submit();
}捕捉(错误){
警报(错误)
}
}

使用javascript是一种解决方案——您可以在每个表单中设置一个类似纯文本的提交按钮。或者,您可以使用单个表单,并在提交之前使用javascript设置值。

每个表单都需要有唯一的id,或者根本没有id。javascript函数将根据其id仅查找第一个表单。。。你需要一种不同的方法——答案已经非常正确了。检查一下。我给你的建议是,如果可以的话,把表格和课程分开。然后,当用户单击时,使用javascript或jquery填充表单,然后提交表单。每个表单都需要有唯一的id,或者根本没有id。javascript函数将根据其id仅查找第一个表单。。。你需要一种不同的方法——答案已经非常正确了。检查一下。我给你的建议是,如果可以的话,把表格和课程分开。然后,当用户单击时,使用javascript或jquery填充表单,然后提交表单。