javascript - 第二行无法在 php 中更新

标签 javascript php html mysql

我创建一个页面,它从寄存器页面获取数据。人们可以向该 ID 发送请求。为此,我放置了请求发送按钮。如果用户单击该按钮,则会出现提示框,并且必须输入主题。

现在我的问题是主题输入仅保存第一行。它不支持第二行。第二行 ID、用户 ID 和好友 ID 仅更新。

希望大家能帮我找出我的错误。

再次感谢

这是我的代码:

<?php
session_start();
$_SESSION['myid'];
$mysqli=new MySQLi('127.0.0.1','root','','learning_malaysia');
$sql = "SELECT * FROM tutor_register INNER JOIN tutorskill ON tutor_register.register_ID = tutorskill.register_ID ORDER BY 
tutor_register.register_ID='".$_SESSION['myid']."'desc";
$result= mysqli_query($mysqli,$sql);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My Resuming</title>
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
</head>
<script>
function myFunction(){
    var subject = prompt("Please enter Subject that want to study");
    if (subject != null){
        document.getElementById("subject").value= subject;
        document.getElementById("form").submit();
    }
}
</script>
<body>
<div class="container">
<?php
if(mysqli_num_rows($result)>0)
{

    while($row = mysqli_fetch_array($result))
{      
        $register_ID=$row["register_ID"];
        $username = $row['username'];
        $profile = $row['profile'];
        $email = $row['email'];
        $address=$row['address'];
        $gender=$row['gender'];
         $main_subject=$row["main_subject"];
         $subject_add=$row["subject_add"];
        $rate_main=$row["rate_main"];
        $rate_add=$row["rate_add"];
        $qualification=$row["qualification"];
        ?>
        <table><form method="post">
        <tr class="border_bottom">
        <td height="230"><img src='<?php echo $profile;?>'width="200" height="200"/>&nbsp;</td><td><td></td></td>
        <td class="data" width="800"><strong>Username:</strong>  <?php echo $username;?></br>
        <strong>Address:</strong>  <?php echo $address;?></br>
        <strong>Gender:</strong><?php echo $gender;?></br>
         <strong>Main Subject:</strong><?php echo $main_subject  ;?></br>
         <strong>Subject Added: </strong><?php echo $subject_add;?></br>
         <strong>Main Subject Rate:</strong> <?php echo $rate_main;?></br>
        <strong> Added Subject Rate:</strong><?php echo $rate_add; ?></br>
         <strong>Qualification:</strong> <?php echo $qualification; ?></td>
           <?php 
         if($register_ID == $_SESSION['myid']){
                ?>
                <td><label>Your Profile</label></td>
                <?php
            } else {
                ?>

                 <form method="post" id="form" enctype="multipart/form-data" autocomplete="off"> 
                 <td><button class='friendBtn unfriend'  name="" data-type="unfriend">Unfriend</button>
                   <input type="hidden" name="id" value="<?php echo $row['register_ID'];?>" />
                 <input type="hidden" id="subject" name="subject" data-uid=<?php echo $_SESSION['id'] ;?>/>
                 <input type="submit" onclick="myFunction()" name="addfriend" data-type='addfriend' id="addfriend" value="<?php 
                     if($register_ID == $_SESSION['friend_id'] && $_SESSION['status'] == "yes" ) {     
                     echo "Request Sent";
                     }
                     else { 
                     echo "Add Friend";
                     }
                     ?>"  /></td>     </form>

 </tr>
</div>
</table></form> 
<?php
            }
}
}?>


</body>
</html>

 <?php


if(isset($_POST['subject']) and $_POST['id']) {
$user_id = $_SESSION['myid'];
$friend_id = $_POST['id'];
$status = "yes";
$subject=$_POST['subject'];
$sql="INSERT INTO friends(user_id,status,subject,friend_id)" ."VALUES('$user_id','yes','$subject','$friend_id') ";

            if($mysqli->query($sql)=== true) {
                          $_SESSION['status']="yes";
                          $_SESSION['id']=$row['id'];
                         $_SESSION['friend_id']=$friend_id;
                         $_SESSION['user_id'] = $user_id;
            } else {}
                              }





?>                    

最佳答案

您的 PHP 代码生成多个表单,每个表单都有一个隐藏的输入字段,其 ID 为“subject”。当您的 JavaScript 尝试使用 document.getElementById("subject") 查找元素时,它始终会找到第一个元素。

要解决此问题,您可以将正确的 form DOM 元素作为参数传递给 myFunction(),并使用它来设置主题字段的值。

要传递表单,只需使用this.form:

<input type="button" onclick="myFunction(this.form)" name="addfriend" data-type='addfriend' id="addfriend" value="xx" />

然后像这样使用它:

function myFunction(form){
    var subject = prompt("Please enter Subject that want to study");
    if (subject != null){
        form['subject'].value= subject;
        form.submit();
    }
}

这是最终的代码:

<?php
session_start();
$_SESSION['myid'];
$mysqli=new MySQLi('127.0.0.1','root','','learning_malaysia');
$sql = "SELECT * FROM tutor_register INNER JOIN tutorskill ON tutor_register.register_ID = tutorskill.register_ID ORDER BY 
tutor_register.register_ID='".$_SESSION['myid']."'desc";
$result= mysqli_query($mysqli,$sql);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My Resuming</title>
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
</head>
<script>
function myFunction(form){
    var subject = prompt("Please enter Subject that want to study");
    if (subject != null){
        form['subject'].value= subject;
        form.submit();
    }
}
</script>
<body>
<div class="container">
<?php
if(mysqli_num_rows($result)>0)
{

    while($row = mysqli_fetch_array($result))
{      
        $register_ID=$row["register_ID"];
        $username = $row['username'];
        $profile = $row['profile'];
        $email = $row['email'];
        $address=$row['address'];
        $gender=$row['gender'];
        $main_subject=$row["main_subject"];
        $subject_add=$row["subject_add"];
        $rate_main=$row["rate_main"];
        $rate_add=$row["rate_add"];
        $qualification=$row["qualification"];
        ?>
        <table><form method="post">
        <tr class="border_bottom">
        <td height="230"><img src='<?php echo $profile;?>'width="200" height="200"/>&nbsp;</td><td><td></td></td>
        <td class="data" width="800"><strong>Username:</strong>  <?php echo $username;?></br>
        <strong>Address:</strong>  <?php echo $address;?></br>
        <strong>Gender:</strong><?php echo $gender;?></br>
        <strong>Main Subject:</strong><?php echo $main_subject  ;?></br>
        <strong>Subject Added: </strong><?php echo $subject_add;?></br>
        <strong>Main Subject Rate:</strong> <?php echo $rate_main;?></br>
        <strong> Added Subject Rate:</strong><?php echo $rate_add; ?></br>
        <strong>Qualification:</strong> <?php echo $qualification; ?></td>
          <?php 
        if($register_ID == $_SESSION['myid']){
                ?>
                <td><label>Your Profile</label></td>
                <?php
            } else {
                ?>

                <form method="post" id="form" enctype="multipart/form-data" autocomplete="off"> 
                <td><button class='friendBtn unfriend'  name="" data-type="unfriend">Unfriend</button>
                  <input type="hidden" name="id" value="<?php echo $row['register_ID'];?>" />
                <input type="hidden" id="subject" name="subject" data-uid=<?php echo $_SESSION['id'] ;?>/>
                <input type="submit" onclick="myFunction(this.form)" name="addfriend" data-type='addfriend' id="addfriend" value="<?php 
                    if($register_ID == $_SESSION['friend_id'] && $_SESSION['status'] == "yes" ) {     
                    echo "Request Sent";
                    }
                    else { 
                    echo "Add Friend";
                    }
                    ?>"  /></td>     </form>

</tr>
</div>
</table></form> 
<?php
            }
}
}?>


</body>
</html>

<?php


if(isset($_POST['subject']) and $_POST['id']) {
$user_id = $_SESSION['myid'];
$friend_id = $_POST['id'];
$status = "yes";
$subject=$_POST['subject'];
$sql="INSERT INTO friends(user_id,status,subject,friend_id)" ."VALUES('$user_id','yes','$subject','$friend_id') ";

            if($mysqli->query($sql)=== true) {
                          $_SESSION['status']="yes";
                          $_SESSION['id']=$row['id'];
                        $_SESSION['friend_id']=$friend_id;
                        $_SESSION['user_id'] = $user_id;
            } else {}
                              }





?>

顺便说一句,今后您应该真正保护自己免受 SQL injection 的侵害。 (通常使用 prepared statements )。

关于javascript - 第二行无法在 php 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51511495/

相关文章:

javascript - 将变量传递给函数时出错 javascript 不允许更改 CSS

javascript - 如何在javascript中根据提示存储数组的值?

javascript 将日期时间解析为指定时区

php - 仅在没有引用时引用复合键的一个字段和 'ON DELETE CASCADE'

php - 有谁知道开始使用 YUI 的好网站吗?

javascript - 为什么声明 xmlhttp.onreadystatechange 导致这个程序只工作一次?

javascript - 如何在 <select> 下拉列表中使用 for 循环创建 .append

javascript - 如何在Jquery Mobile中恢复页面URL?

php - 如何在 PHP 中异步执行 MySQL 存储过程

javascript - 选中复选框后如何验证我的表单字段?