错误的输出与PHP中的添加表

问题描述 投票:0回答:2

我无法为我的php程序创建一个附加表。我创建了我的乘法表就好了(它创建了正确的输出),但是当我尝试添加一个数字不在表格中时我无法弄清楚我做错了什么。我将在创建添加表时显示我的输出,以及它应该是什么样子以及我编写的代码。我觉得我非常接近完成这个程序,但是现在我被卡住了,谢谢你的帮助。

这是我应该为4x5附加表获得的输出。

0   1   2   3   4
1   2   3   4   5
2   3   4   5   6
3   4   5   6   7
4   5   6   7   8
5   6   7   8   9

这是我的输出。

11112222333344445555
0   1   2   3   4
1
2
3
4
5

这是我的代码。任何帮助表示赞赏。

<html>
<head/>
<body>
<form method="POST" action="<?= $_SERVER['PHP_SELF'] ?>" >
<table border="1">
<tr><td>Number of Rows:</td><td><input type="text" name="rows" /></td></tr>
<tr><td>Number of Columns:</td><td><select name="columns">
<option value="1">1</option>
<option value="2">2</option>
<option value="4">4</option>
<option value="8">8</option>
<option value="16">16</option>

</select>
</td></tr>
<tr><td>Operation:</td><td><input type="radio" name="operation" value="multiplication" checked="yes">Multiplication</input><br/>
<input type="radio" name="operation" value="addition">Addition</input>
</td></tr>
</tr><td colspan="2" align="center"><input type="submit" name="submit" value="Generate" /></td></tr>
</table>
</form>

<?php
    if(isset($_POST["submit"])){

        //check to see if num of rows is numberic
    if ( isset($_POST["rows"]) && is_numeric($_POST["rows"])){
            //check to see if rows is a positive number
            if($_POST["rows"] > 0){

                    if(isset($_POST) && $_POST["operation"] == "multiplication"){
                            echo 'This is a '. $_POST["rows"] . ' x ' . $_POST["columns"] .'multiplication table';
                            echo "<table border=1";
                            echo'<tr>';
                    for($b = 0; $b <= $_POST["columns"];$b++){
                            echo '<th>'.$b.'</th>';}
                            echo '</tr>';
                    for($r = 1; $r <= $_POST["rows"]; $r++){
                            echo'<tr><th>'.$r.'</th>';

                            for($c = 1; $c <= $_POST["columns"]; $c++){
                                    echo '<td>' .$c*$r. '</td>';
                            }
                                            echo '</tr>';
                                    }
            echo "</table>";
            }

                    else if (isset($_POST) && $_POST["operation"] == "addition")
                    {
                            echo 'This is a '. $_POST["rows"]. ' x ' . $_POST["columns"] .' addition table';
                            echo "<table border = 1";
                            echo'<tr>';
                            for($a = 0; $a <= $_POST["columns"];$a++){
                                    echo '<th>'.$a.'</th>';}
                                    echo '</tr>';
                                    for($r = 1; $r <= $_POST["rows"]; $r++){
                                            echo '<tr><th>'.$r.'</th>';
                                            for($c = 1; $c <= $_POST["columns"]; $c++)
                                            {
                                                            echo '<td>' .$c+$r. '</td>';
                                            }
                                                    echo '</tr>';
            }
            echo "</table>";
            }

            else{
            echo 'Invalid rows columns parameters';
            exit();
            }
    }
    exit();
            }}

?>
</body>
</html>
php debugging html-table
2个回答
0
投票

试试这个。

注意:我只更改了用于添加的elseif语句,因此您可以复制并粘贴此项,因为我没有更改任何其他内容。

所以我将解决方案分为三部分,并以粗体显示,以便您知道我改变了哪个部分。谢谢。

并发表评论你接下来应该做什么。如果它没有给你你想要的出来。

<html>
<head/>
<body>
<form method="POST" action="<?= $_SERVER['PHP_SELF'] ?>" >
<table border="1">
<tr><td>Number of Rows:</td><td><input type="text" name="rows" /></td></tr>
<tr><td>Number of Columns:</td><td><select name="columns">
<option value="1">1</option>
<option value="2">2</option>
<option value="4">4</option>
<option value="8">8</option>
<option value="16">16</option>

</select>
</td></tr>
<tr><td>Operation:</td><td><input type="radio" name="operation" value="multiplication" checked="yes">Multiplication</input><br/>
<input type="radio" name="operation" value="addition">Addition</input>
</td></tr>
</tr><td colspan="2" align="center"><input type="submit" name="submit" value="Generate" /></td></tr>
</table>
</form>

<?php
    if(isset($_POST["submit"])){

        //check to see if num of rows is numberic
    if ( isset($_POST["rows"]) && is_numeric($_POST["rows"])){
            //check to see if rows is a positive number
            if($_POST["rows"] > 0){

                    if(isset($_POST) && $_POST["operation"] == "multiplication"){
                            echo 'This is a '. $_POST["rows"] . ' x ' . $_POST["columns"] .'multiplication table';
                            echo "<table border=1";
                            echo'<tr>';
                    for($b = 0; $b <= $_POST["columns"];$b++){
                            echo '<th>'.$b.'</th>';}
                            echo '</tr>';
                    for($r = 1; $r <= $_POST["rows"]; $r++){
                            echo'<tr><th>'.$r.'</th>';

                           // for($c = 1; $c <= $_POST["columns"]; $c++){
                             //       echo '<td>' .$c*$r. '</td>';
                            //}
                                            echo '</tr>';
                                    }
            echo "</table>";
            }

从这里我改变代码如果它没有给你想要的结果。你只需要改变循环部分就可以在第一个foreach循环中将$ _post ['rows']更改为$ _post ['columns']。并在第二个for循环chnage $ _post ['columns']到$ _post ['rows']。谢谢

                    else if (isset($_POST) && $_POST["operation"] == "addition")
                    {
                            for($x=0; $x<$_POST['rows']+1; $x++)
{
    $i=0;
    $y= $i+$x;

    echo '<table border 1px solid black>';
    echo '<tr>';
    //$value[]=$x;
    echo '<td>'.$y.'</td>';
    for($value=1;$value<$_POST['columns']+1;$value++){
    $c=$y+$value;
   // $c=$y+$value;
        echo '<td>'.$c;

    echo '</td>';
    }
    echo '</tr>';
    echo '</table>';
}

我的更改已完成每件事都是您的代码。

echo "</table>";
                }

                else{
                echo 'Invalid rows columns parameters';
                exit();
                }
        }
        exit();
                }}

    ?>

</body>
</html>

0
投票

这实际上是一个简单的bug!

您的逻辑没有错误。该错误在您的echo语句中添加。

你不能直接回应添加。使用支架代替它们。它会工作:-)

像这样;

   echo '<td>'.($c+$r).'</td>';

如果它解决了您的问题,请告诉我们。

谢谢,

© www.soinside.com 2019 - 2024. All rights reserved.