За последние 24 часа нас посетили 22790 программистов и 1271 робот. Сейчас ищут 789 программистов ...

Сайт с формулой и выводом результатов на php-страницу

Тема в разделе "PHP для новичков", создана пользователем Программист без будущего, 11 май 2020.

  1. Программист без будущего

    С нами с:
    11 май 2020
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте. Я пытаюсь создать сайт на локальном сервере Денвер, где у меня должна работать формула, которая принимает диапазон значений (начало и конец), введенный мною на странице html, и выводит его в таблицу с двумя столбцами. Я также должна задать количество строк на html-странице, но здесь у меня возникла проблема. Я нашла способ, которым это можно сделать, но, кажется, для моего кода он не совсем подходит, потому что я пыталась его изменить, но Денвер жаловался на долгую загрузку и на ошибку в строке кода, которую я так и не поняла. Он выводит все, кроме введенных значений.
    Так же остается проблема с тем, что у меня при некоторых числах не выводится последнее значение. Не знаю, может быть это особенность формулы или код неудобно задан, но при возможности решить эту проблему мне бы хотелось знать, как это исправить с минимальными изменениями условий конкретно формулы.

    Вот как выглядят кода:
    HTML:
    1. <!DOCTYPE html>
    2.  
    3.   <meta charset="windows-1251">
    4.   <script src="jquery-3.4.1.min.js"></script>
    5. </head>
    6.  
    7.   <form action="result.php" method="POST">
    8.     <p>Введите ваше имя:
    9.       <input type="text" name="name">
    10.     </p>
    11.     <p><b>Вычисление функции f(x)=log(3 * arctg(x)):</b></p>
    12.     <table>
    13.       <tr>
    14.         <td>Начальное значение</td>
    15.         <td>
    16.           <input type="text" name="first">
    17.         </td>
    18.       </tr>
    19.       <tr>
    20.         <td>Конечное значение</td>
    21.         <td>
    22.           <input type="text" name="last">
    23.         </td>
    24.       </tr>
    25.       <tr>
    26.         <td>Количество отсчетов</td>
    27.         <td>
    28.           <input type="text" name="quantity">
    29.         </td>
    30.       </tr>
    31.     </table>
    32.     <h1></h1>
    33.     <input type="submit" value="Вычислить">
    34.   </form>
    35.  
    36. </body>
    37.  
    38. </html>


    PHP:
    1. <?php
    2.   header('Content-type: text/html; charset=windows-1251');
    3. ?>
    4.  
    5. <body>
    6. <p>Задание выполнил(а): <?php
    7.     echo htmlspecialchars($_POST['name']);
    8.   ?></p>
    9.   </br>
    10.  
    11.   <?php
    12.     $limit = $_POST['quantity'];
    13.     $xstart = (float)$_POST['first'];
    14.     $xend = (float)$_POST['last'];
    15.     $d = 0.1;
    16.     echo '<table border="1" align="center" valign="center" width="20%">';
    17.     echo "<center><b>Таблица значений функции f(x)=log(3 * arctg(x))<center></p>";
    18.     echo "<tr>";
    19.     echo "<th>x</th>";
    20.     echo "<th><center>f(x) $selectOption<center></th>";
    21.     echo "</tr>";
    22.     for ($x =$limit, $x = $xstart; $x<=$xend; $x+=$d){
    23.       $y = log(3 * atan($x));
    24.  
    25.       echo "<tr><td><center>$x<center></td><td><center>$y<center></td>";
    26.    }
    27.    echo "</table>";
    28.    ?>[/B]
    29. </body>

    Сделать так, чтобы у меня а таблице выводилось именно столько строк с результатами, сколько я задам на странице html, хотела так:

    HTML:
    1.  
    2.  
    3. </head>
    4.  
    5.   <form method="GET" action="result.php">
    6.     <table border=0>
    7.       <tr>
    8.         <td> <b> Количество строк: </b> </td>
    9.         <td>
    10.           <input type="text" name="r"> </td>
    11.       </tr>
    12.       <tr>
    13.         <td> <b> Количество столбцов: </b> </td>
    14.         <td>
    15.           <input type="text" name="c"> </td>
    16.       </tr>
    17.     </table>
    18.     <p>
    19.       <input type="submit" name="sub" value="Отправить">
    20.     </p>
    21.   </form>
    22. </body>
    23.  
    24. </html>
    PHP:
    1. <?php
    2.  
    3.   $rows = $_GET['r'];
    4.   $cols = $_GET['c'];
    5.   $table = '<table border="1">';
    6.   for ($tr=1; $tr<=$rows; $tr++){
    7.     $table .= '<tr>';
    8.     for ($td=1; $td<=$cols; $td++){
    9.       if ($tr===1 or $td===1){
    10.         $table .= '<th style="color:hotpink;background-color:gold;">'. $tr*$td .'</th>';
    11.       }
    12.       else{
    13.         $table .= '<td style="color:blue;background-color:gray;">'. $tr*$td .'</td>';
    14.       }
    15.     }
    16.     $table .= '</tr>';
    17.   }
    18.  
    19.    $table .= '</table>';
    20.    echo $table;
    21.  
    22. ?>
    Если что не так у меня в теме - прошу, дайте знать. Надеюсь, что коды читаемые.
     
    #1 Программист без будущего, 11 май 2020
    Последнее редактирование: 11 май 2020
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    1. Поставьте что-то поновее, XAMPP или Open Server, а то сейчас вам набегут подсказывать современным синтаксисом, а у вас ответы просто не запустятся, в денвере очень-очень старый php.
    2. Шаг надо рассчитывать исходя из количества значений, которые должны быть выведены, ($xend- $xstart) / $quantity
    3. При сравнении вещественных чисел далеть поправку на точность.
    4. Приведите ошибку
     
  3. Программист без будущего

    С нами с:
    11 май 2020
    Сообщения:
    6
    Симпатии:
    0
    Я бы с радостью использовала поновее, но по условиям я этого не могу использовать. Там только Денвер можно, потому что других локальных серверов включено в программу не было и у них там этого тоже в основном нет.

    Хорошо, я попробую в этой теме разобраться. Просто php здесь должен принимать любой диапазон из начального и конечного значения вместе с количеством строк. В пределах разумного, конечно.

    Имеете в виду if вставить или какой-нибудь спецсимвол к сравнениям? Не совсем понимаю.

    В этом коду такой ошибки нет - она возникала, когда я пыталась его изменить под второй код из этой же темы. Скриншоты, боюсь, мало что покажут, но пусть будут. Надеюсь, я вас правильно поняла.
    Первый скриншот - это код, который здесь, а второй - это код, который я, если это к месту вообще говорить, "испортила".

    1.png

    2.png
     
  4. SibBear

    SibBear Новичок

    С нами с:
    4 апр 2020
    Сообщения:
    127
    Симпатии:
    7
    Ну как бы подход то правильный, что именно не работает?
    во вторых (ваших) кодах логика правильная, по сути должно отработать, передали границы, отработали циклом по границам.
    или Вы первый код и свой пытаетесь слепить? там тогда одна из проблем в разных методах передачи пост и гет, Вы часть данных не получаете и обрабатывать нечего
     
  5. Программист без будущего

    С нами с:
    11 май 2020
    Сообщения:
    6
    Симпатии:
    0
    К сожалению, я сама точно определить не могу. Скорее всего проблема именно в том, что я просто не могу красиво "сплести" вместе мой код с кодом, в котором можно ввести количество строк и столбцов.

    Я все меняла на GET, точно помню. Если я не ошибаюсь, то у POST должен и GET работать, но либо я что-то не так поняла здесь, либо это актуально, как вы могли приближенно мне намекнуть об этом, для более новых версий php и локальных серверов. Как будет момент, постараюсь и здесь узнать побольше.