отладка — неверный вывод с таблицей сложения в переполнении стека

У меня проблемы с созданием таблицы дополнений для моей программы php. Я прекрасно создал свою таблицу умножения (она создает правильный вывод), но когда я пытаюсь добавить одно, числа не попадают в таблицу, и я не могу понять, что я делаю неправильно. Я опубликую, как будет выглядеть мой вывод, когда я создаю таблицу дополнений, и как она должна выглядеть, а также код, который я написал. Я чувствую, что я очень близок к завершению этой программы, но сейчас я застрял, спасибо за помощь заранее.

Вот вывод, который я должен получить для таблицы сложений 4×5.

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>

0

Решение

попробуй это.

Замечания: я только изменил оператор elseif, который вы использовали для additioin, так что вы можете просто скопировать и вставить его, поскольку я ничего не меняю

поэтому я разделил решение на три части и оставил комментарий жирным шрифтом, чтобы вы знали, какую часть я изменил. Благодарю.

и оставьте комментарий, что делать дальше. В случае, если это не дает желаемого выхода.

<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>";
}

Отсюда я меняю код В случае, если это не дает желаемых результатов. вам нужно только изменить часть цикла, просто замените $ _post [‘row’] на $ _post [‘columns’] в первом цикле foreach. А во втором — цикл chnage от $ _post [‘columns’] до $ _post [‘lines’]. Спасибо

                    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

Другие решения

На самом деле это простая ошибка!

В вашей логике нет ошибки. Ошибка в вашем эхо-заявлении для добавления.

Вы просто не можете повторить добавление напрямую. Используйте скобку, чтобы окружить их вместо этого. Это будет работать 🙂

Как это;

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

Пожалуйста, дайте нам знать, если это решило вашу проблему.

Спасибо,

0

По вопросам рекламы [email protected]