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']">