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

时间:2014-09-14 20:09:21

标签: php debugging html-table

我在创建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>

2 个答案:

答案 0 :(得分:0)

试试这个。

注意:我只更改了你用于additioin的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 [&#39; rows&#39;]更改为$ _post [&#39; columns&#39;]。在第二个for循环chnage $ _post [&#39; columns&#39;]到$ _post [&#39; rows&#39;]。感谢

                    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>

答案 1 :(得分:0)

这实际上是一个简单的错误!

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

你无法直接回应添加内容。使用支架代替它们。它会起作用: - )

喜欢这个;

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

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

谢谢,