Задание по PHP 1 Реализовать скрипт, выполняющий следующие действия: Пользователь вводит число в форму на странице и нажимает кнопку «Ввод». После этого на страницу выводится таблица. В первом столбце – числа от 1 до 10, во втором – результат сложения числа из первого столбца с введенным, в третьем – результат умножения, в четвертом – результат деления. Предусмотреть защиту от ввода некорректных данных (например, строк) выводить соответствующее предупреждение и предложение повторить ввод. Предусмотреть вывод в ячейках таблицы соответствующего сообщения «На 0 делить нельзя», если введен ноль. файл form.html Код (PHP): <!DOCTYPE html> <html> <head> <meta charset="windows-1251"> <title></title> <script> function validate(){ if(isNaN(document.getElementById('number').value)){ alert('Не число. Введите число.'); return false; } return true; } </script> </head> <body> <form method="post" action="form.php" onsubmit="return validate()"> <label>Число <input type="text" id="number" name="number"> </label> <input type="submit" value="Ввод"> </form> </body> </html> файл form.php Код (PHP): <!DOCTYPE html> <html> <head> <meta charset="windows-1251"> <title></title> </head> <body> <?php $number=$_POST['number']; function division($number1,$number2){ if($number2==0){ return 'На 0 делить нельзя'; } return $number1/$number2; } echo '<table border="1">'; for($i=1;$i<=10;$i++){ echo '<tr><td>'.$i.'</td><td>'.($i+$number).'</td><td>'.$i*$number.'</td>'; echo '<td>'.division($i,$number).'</td></tr>'; } echo '</table>'; ?> </body> </html> Прислали замечания по коду Недостатки: 1) Нет валидации на стороне сервера - есть только на стороне клиента 2) Два файла именно таким образом - неоправданно. Можно (и нужно!) разделить html и php. Но точка входа в приложение (обработки входящего запроса) должна быть одна. Как сделать сделать валидацию на php с предложением повторить ввод? и что имеется ввиду во втором пункте недостатков?
А на работу тоже мы устроимся твою? Давай так, никакой конкретики, я просто выделю, что тебе надо самому поискать, ок? В пхп есть функции проверки типов. Во втором файле у тебя всякие head и body рогом не вперлись. Просто инклудь одно в другое.
Исправил. Есть замечания? Код (Text): <html> <body> <form method="post" action="form.php"> <input type="text" id="number" name="number"> <input type="submit" value="Ввод"> </form> <?php $number = $_POST['number']; function division($number1, $number2) { if ($number2 == 0) { return 'На 0 делить нельзя'; } return $number1 / $number2; } if (is_numeric($number)) { echo '<table border="1">'; for ($i = 1; $i <= 10; $i++) { echo '<tr><td>' . $i . '</td><td>' . ($i + $number) . '</td><td>' . $i * $number . '</td> <td>' . division($i, $number) . '</td></tr>'; } echo '</table>'; } else if(empty($number)){ echo 'Введите число'; } else { echo 'Не число. Введите число.'; } ?> </body> </html>
А если я передам в качестве $number2 строку? Мне тоже выдаст, что на ноль делить нельзя, но...я же не ноль передал. Ошибка деления на ноль меня, как глупого неподготовленного пользователя удивит и испугает. Нагромождения elseif лично я не люблю. И не только я. Это можно развязать более красиво в 99% случаев. Ну и да, html и php, который вам "можно и нужно разделить" у вас не разделены. Я вам про инклуд, вы про копипасту из файла в файл.. Мержить их не нужно было
строку передать не получится, ибо есть проверка на is_numeric. else if имеется ввиду лучше заменить на switch? я так и не понял, что и куда нужно инклюдить?
Забавно написано конечно Возникло ощущение, что тот, кто писал задание и тот кто его проверял разные люди
Свитч у тебя там не нарулится. html-обертку над твоим генератором таблички инклюдить в него. Половину сверху, половину снизу.
Ну мои замечания бы ещё включали: Зачем здесь POST-запрос? А если уж POST, то надо делать редирект, чтоб не вылезало окошко о повторной отправке данных Вывод ошибки лучше сделать прямо в форму (ну это ИМХО) А ещё, дабы разделить логику и вывод, можно собрать все рассчитанные данные в массив, и только после этого их показывать