Javascript 如何区分foreach循环中的每个提交按钮

Javascript 如何区分foreach循环中的每个提交按钮,javascript,php,Javascript,Php,我的代码: <?php require_once 'core/init.php'; if($result = $db->query ("SELECT * from countries")) { if($count = $result->num_rows) { $rows = $result->fetch_all(MYSQLI_ASSOC); } } ?> <div cla

我的代码:

<?php
    require_once 'core/init.php';

    if($result = $db->query ("SELECT * from countries")) {
        if($count = $result->num_rows) {
            $rows = $result->fetch_all(MYSQLI_ASSOC);
        }
    }
?>
    <div class="region">
        <h1>Europe</h1>

            <ul class="country" style ="list-style-type:none">
                <?php foreach ($rows as $key => $row) { ?>
                    <li>
                        <a href=""=<?php echo $row['country_id']; ?>">
                        <a href=""=<?php echo $row['region_id']; ?>">
                        <?php echo $row['country_name']; ?></a> <br>
                        <?php
                        if (isset($_FILES['country_img']) === true) {
                            if (empty($_FILES['country_img']['name']) === true) {
                                echo 'please choose a file!';   
                                print_r ($_POST);
                                } else {

                                $allowed = array('jpg', 'jpeg', 'gif', 'png');

                                $file_name = $_FILES['country_img']['name'];
                                $file_extn = end(explode('.', $file_name));
                                $file_temp = $_FILES['country_img']['tmp_name'];
                                if (in_array($file_extn, $allowed) ===true) {
                                    if ($_POST['id'] = $_POST['id']) {
                                    addcountryimage($row['country_id'], $file_temp, $file_extn);
                                    }
                                    header ('Location: tes2.php');
                                    break;
                                    }else {
                                        echo 'Incorrect file type. Allowed: ';
                                        echo implode (', ', $allowed);
                                }
                            }
                        } 
                            if (empty($row['country_img'] === false)) {
                                echo '<img src="', $row['country_img'], '" alt="', $row['country_name'], '\'s Image">';
                            }                           
                        ?>
                        <p> <?php echo $row['country_bio']; ?></p>
                        <?php
                            global $session_user_id;
                            if (is_admin($session_user_id) === true) { ?>
                            <form action="" method="POST" name="" enctype="multipart/form-data">
                                <input type="hidden" name="id" id="hidden_id">
                                <input type="file" name="country_img"> <input type="submit" onclick="document.getElementById('hidden_id').value=$row['country_id']" />
                            </form>
                        <?php } ?>

                        <p> <a href="#">Tour to <?php echo $row['country_name']; ?></a></p>
                    </li>
                <?php } ?>
            </ul>               
            <h3> <a href="#">More European Country </a></h3>                
    </div>

欧洲


除了不能区分每个提交按钮之外,上面的一切都可以正常工作。例如,当我更新第5张表单上的图像时,它将始终更新第1张表单。如何做到这一点?

问题的根源是在JavaScript事件中使用了多个具有相同值的
id
属性,这被认为是错误的,每个元素id必须是唯一的,除此之外,带有表单提交类型输入的onclick事件无法正常工作

向循环中添加一个增量计数器,然后使用它来区分每个隐藏元素id

<?php $i = 0;?>
<?php foreach ($rows as $key => $row) { ?>
....
<input type="hidden" name="id" id="hidden_id_<?php echo $i;?>">
....
<input type="submit" onclick="document.getElementById('hidden_id_<?php echo $i;?>').value=$row['country_id']" />
<?php 
 $i++;
} ?>

尝试在php逻辑和视图逻辑之间进行分离—将它们混合在一起会使理解和理解变得非常困难maintain@KrismaHero显示结果html中包含表单的部分。我尝试回显隐藏id的值。每次循环后它都保持不变。似乎隐藏字段值无法更改。只有javascript才能使每个循环都是动态的。但是我找不到办法。你有一个变量在每个循环中都是唯一的吗?每个循环中的国家id都是唯一的。你的代码是有意义的。确实如此。但是我不知道为什么,当我打印post数组时,它没有返回任何内容。回到原点无:(@KrismaHero
print\u r
用于什么?检查打印是否正确。调试。
<form action="" method="POST" name="" enctype="multipart/form-data" onsubmit="document.getElementById('hidden_id_<?php echo $i;?>').value=$row['country_id']">