Задание.
Сделать таблицу умножения. Заполнить форму, куда вписать кол-во строк и столбцов, в зависимости что запишешь такая и будет таблица. Ниже код файла table.php
<?php
$act = $_GET['act'];
switch($act){
case 'result':
$cols = $_GET['cols'];
$rows = $_GET['rows'];
$color = 'blue';
//вывод таблицы умножения циклом for
echo "<table border='1' align='center'>";
for($tr=1;$tr<$rows;$tr++){
echo '<tr>';
for($td=1;$td<$cols;$td++){
echo "<td>".$tr*$td."</td>";
}
echo '</tr>';
}
echo '</table>';
break;
default:
//forma
echo '
<form action="table.php?act=result" metod="post" >
Количество строк:
<input type="text" name="rows" value="10"/><br/>
Количество столбцов:
<input type="text" name="cols" value="10"/><br/>
<input type="submit" name="submit" value="Отправить"/>
</form>';
break;
}
?>
Вообщем он не работает, страница просто обновляется. Если код создания таблицы вынести в другой файл, то работает.
Сильно не пинайте, только начинаю изучать php
Krite (22.12.2011/08:03)
$_GET на $_POST замени
Пробовал, тоже просто обновляется. После заполнения формы и нажатия отправить, в адресной строке такой адрес
http://127.0.0.1/table.php?row ... D1%8C, а должен быть таким чтоб switch работал
http://127.0.0.1/table.php?act ... D1%8C
Трабла в строке <form action="table.php?act=result"
metod="post" >
Правильно
method
$act = $_GET['act'];
switch($act){
case 'result':
$cols = $_POST['cols'];
$rows = $_POST['rows'];
$color = 'blue';
//вывод таблицы умножения циклом for
echo "<table border='1' align='center'>";
for($tr=1;$tr <$rows;$tr++){
echo '<tr>';
for($td=1;$td <$cols;$td ++){
echo "<td width='15px'>".$tr*$td."</td>";
}
echo '</tr>';
}
echo '</table>';
break;
default:
//forma
echo '
<form action="table.php?act=result" method="post" >
Количество строк:
<input type="text" name="rows" value="10"/><br/>
Количество столбцов:
<input type="text" name="cols" value="10"/><br/>
<input type="submit" name="submit" value="Отправить"/>
</form>';
break;
}
desay, спасибо, работает. А я час мучался, не мог понять почему не работает
Zheka12345, И посмотри внимательно . Он считает не правильно , разве будет 2*2=1
поставь значение 0 вместо 1
Zheka12345, Небольшое изменение. Данные с формы не мешало бы фильтровать хоть "как то"
$act = trim($_GET['act']);
switch($act){
case 'result':
$cols = intval($_POST['cols']);
$rows = intval($_POST['rows']);
if ($cols == 0 || $rows == 0)
{
echo 'Ошибочка!';
exit;
}
$cols = $cols+1;
$rows = $rows+1;
$color = '#ff0000';
//вывод таблицы умножения циклом for
echo "<table border='1' align='center'>";
for($tr = 1;$tr <$rows;$tr++){
echo '<tr>';
for($td = 1;$td <$cols;$td ++){
echo "<td width='15px' style='padding: 1px; text-align: center';>".$tr *$td."</td>";
}
echo '</tr>';
}
echo '</table>';
break;
default:
//forma
echo '
<form action="table.php?act=result" method="post" >
<b>Количество строк:</b><br/>
<input type="text" size="5" name="rows" value="10"/><br/>
<b>Количество столбцов:</b><br/>
<input type="text" size="5" name="cols" value="10"/><br/>
<input type="submit" name="submit" value="Отправить"/>
</form>';
break;
}
venom, правильно все считает, ты наверно не правильно смотрел.
Desay, я знаю что фильтровать нужно, просто сразу хотел привести к рабочему состоянию, а потом уже фильтровать
Без этих действий не правильно выводит...
$cols = $cols+1;
$rows = $rows+1;