HTML 按钮虽然未被点击,但默认提交到下一个 php 页面

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

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

sample1.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>";
?>  

第二页如下:

sample2.php

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

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

预期输出:

如果在 sample1.php 上单击按钮,则应将相同的按钮传递给 sample2.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."',";
   }
}