默认情况下,HTML按钮被提交到下一个php页面,尽管没有点击


HTML button getting submitted by default to next php page although not clicked

我创建了两个.php网页。第一页有以下代码:

样本1.php

<?php 
echo "<html>";
echo "<body>";
echo "<form action='"sample2.php'" method='"post'">";
echo "<table width='100%'>";
echo "<tr><td width='30%'><font size='5' color='#003399'>Message 1</font></td><td align='center' width='50%'><font size='5' color='#003399'>Message 2</font></td></tr>";
for ($i=0;$i<5;$i++) {
    if($i == 0)
    {
            echo "<tr><td bgcolor='"#EAEAEA'" style='"color:#003399'">$i</td><td align='center'><input type='text' name='tarea'></td></tr>";
    }
    else
    {
        echo "<tr><td bgcolor='"#EAEAEA'" style='"color:#003399'">$i</td></tr>";
    }
    echo "<tr><td><div>";
    echo "<input type='"submit'" name='"version'" value='"ant'"> &nbsp; &nbsp;";
    echo "<input type='"submit'" name='"version'" value='"bat'"> &nbsp; &nbsp;";
    echo "<input type='"submit'" name='"version'" value='"cat'"> &nbsp; &nbsp;";
    echo "</div></tr></td>";
}   
echo "</table>";
echo "</form>";
echo "</body>";
echo "</html>";
?>  

第二页如下:

样本2.php

<?php 
$vers = $_POST['version'];
$area = $_POST['tarea'];
echo "This is selected value: $vers<br>";
echo "this is textbox value: $area<br>";
?>  

当我单击 sample1.php 上的按钮时,它会按预期传递到下一页。但是,当我在文本框中输入值并按 Enter 时,默认情况下第一个按钮也会与文本框值一起提交。

预期输出:

如果单击样本 1.php 上的按钮,则应将相同的按钮传递给样本 2.php。接下来,如果在 sample1.php 的文本区域中输入了值,则只应将该值传递给 sample2.php而不是按钮值。

谢谢

麦迪

您需要

做的是检查提交是否已设置并等于输入的给定值。

这只是这样做的一种方式。还有其他方法。

if(isset($_POST['version']) && $_POST['version'] == 'ant'){
$vers = $_POST['version'];
// ant was fired
}
if(isset($_POST['version']) && $_POST['version'] == 'bat'){
$vers = $_POST['version'];
// bat was fired
}
if(isset($_POST['version']) && $_POST['version'] == 'cat'){
$vers = $_POST['version'];
// cat was fired
}

旁注:不过我会删除这些&nbsp; &nbsp;。它们可能会对PHP产生不利影响。分号是语句字符的结尾。


编辑:

foreach和传递键值的示例:

$var = "";
foreach($_POST['version'] as $key => $value) {
   if(!empty($value)) {
     $var .= $key. "='".$value."',";
   }
}