Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Форма функции и ее обработчик данных (HTML и PHP на Денвере) (https://javascript.ru/forum/server/80204-forma-funkcii-i-ee-obrabotchik-dannykh-html-i-php-na-denvere.html)

Безнадежный программист 09.05.2020 06:23

Форма функции и ее обработчик данных (HTML и PHP на Денвере)
 
Вложений: 2
Здравствуйте! Я пыталась сделать вычисление функции f(x)=log(3 * arctg(x)) с html и php на Денвере, которое бы по результатам и виду соответствовало прикрепленным скриншотам (простите за качество, если смогу исправить - потом сделаю, надеюсь хоть что-то видно), а также вот таким условиям:
  1. Первая страница (html) - принимает значения в виде имени, начального и конечного значений, их количества в таблице.
  2. Вторая страница (php) - выводит все это, как оформлено. Имя сверху, начальное и конечное значения в таблице, и у них задано количество отсчетов.
  3. У меня не выводится введенное имя. Ни GET, ни POST его не выводят. Скорее всего, я допустила какую-то ошибку синтаксиса, хотя Денвер на этом молчит, а до меня пока что не дошло, как починить это.
  4. Не знаю, как сделать так, чтобы в таблице выводилось именно столько значений, сколько задано в поле количества отсчетов. Может быть, есть какая-то "настройка" для функции?
  5. Последние значения не всегда выводятся. Скажем, единица выводится, а двойка нет, тройка тоже и т.д.
  6. Если возможно, хотелось бы, чтобы в таблицу выбирались более средние значения, а не по рандому, то есть, например, если задается от 1 до 2х и отсчеты равны 5и, то он выводит "1, 1.25 ,1.5, 1.75 , 2" или "1, 1.3 ,1.5, 1.8 , 2", а если так нельзя, то чтобы хотя бы отсчеты заработали по количеству значений нормально.
  7. У меня по-русски нормально в Денвере по какой-то причине не выводит - одни иероглифы.
  8. Хотелось бы весь текст в целом сделать побольше, чем он есть. Скорее всего, это задается классом или функцией, но я не совсем понимаю, как это сделать наравне и на странице html, и на php.
  9. В целом код вышел у меня не совсем толковый и скудноватый, поэтому если у вас будут критика и замечания - я слушаю. Повторяюсь, конечно, но все равно еще раз скажу - я слаба в этих темах и мне толком знакомы в основном html и css. Буду рада слышать профессионалов и знатоков. Заранее спасибо за внимание к моей проблеме :thanks: :victory: .

Вот код. Надеюсь, я смогла сделать его читаемым:

<!DOCTYPE html>
<html>

<head>
  <meta charset="windows-1251">
  <script src="jquery-3.4.1.min.js"></script>
</head>

<body>
  <form action="result.php" method="POST">
    <p action="result.php" method="GET">Введите ваше имя:
      <input type="text" name="name">
    </p>
    <p><b>Вычисление функции f(x)=log(3 * arctg(x)):</b></p>
    <table>
      <tr>
        <td>Начальное значение</td>
        <td>
          <input type="text" name="first">
        </td>
      </tr>
      <tr>
        <td>Конечное значение</td>
        <td>
          <input type="text" name="last">
        </td>
      </tr>
      <tr>
        <td>Количество отсчетов</td>
        <td>
          <input type="text" name="quantity">
        </td>
      </tr>
    </table>
    <h1></h1>
    <input type="submit" value="Вычислить">
  </form>

</body>

</html>


<?php
  header('Content-type: text/html; charset=windows-1251');
?>

<body>
  <p>Задание выполнил(а):<?php
    $_POST['name'];
  ?></p>
  </br>

  <?php
    $xstart = (float)$_POST['first'];
    $xend = (float)$_POST['last'];
    $d = 0.1;
    echo '<table border="1" align="center" valign="center" width="20%">';
    echo "<center><b>Таблица значений функции f(x)=log(3 * arctg(x))<center></p>";
    echo "<tr>";
    echo "<th>x</th>";
    echo "<th><center>f(x) $selectOption<center></th>";
    echo "</tr>";
    for ($x = $xstart; $x<=$xend; $x+=$d){
      $y = log(3 * atan($x));
      echo "<tr><td><center>$x<center></td><td><center>$y<center></td>";
    }
    echo "</table>";
  ?>
</body>

laimas 09.05.2020 06:57

Цитата:

Сообщение от Безнадежный программист
$_POST['name'];

Это не вывод, это вообще никакого действия, вывод это:

<p>Задание выполнил(а):<?php
    echo htmlspecialchars($_POST['name']);
  ?></p>


либо

<p>Задание выполнил(а): <?=htmlspecialchars($_POST['name'])?></p>

Безнадежный программист 09.05.2020 10:33

Цитата:

Сообщение от laimas (Сообщение 523991)
Это не вывод, это вообще никакого действия

Да, здесь я знала, что сильно ошиблась, но исправить хотя бы на GET, чтобы не так странно выглядело, у меня времени уже не оставалось. Спасибо.

laimas 09.05.2020 13:30

Цитата:

Сообщение от Безнадежный программист
исправить хотя бы на GET

Ну изменяйте метод передачи формы на GET и на сервере обрабатывайте массив $_GET, а не $_POST. Одновременно передать данные методом GET и POST форма может только при методе POST.

laimas 12.05.2020 16:12

Цитата:

Сообщение от Безнадежный программист
У меня по-русски нормально в Денвере по какой-то причине не выводит - одни иероглифы.

Не соответствие кодировок - объявленной и файла.

Безнадежный программист 12.05.2020 17:53

Цитата:

Сообщение от laimas (Сообщение 524130)
Не соответствие кодировок - объявленной и файла.

Уже решили конкретно эту проблему, но все равно спасибо.

laimas 12.05.2020 18:52

А в остальном какие проблемы, если "побольше текст", это размер шрифта, то это забота CSS. Нет вывода нужного - выводите в браузер счетчик итерации для понимания проблемы.

Безнадежный программист 12.05.2020 19:47

Цитата:

Сообщение от laimas (Сообщение 524148)
А в остальном какие проблемы

Я все еще решаю проблемы по пунктам 4, 5 и 6, потому что в интернете пока что подходящего ответа не видела, а мои "игры" с кодом в течении всего этого времени не очень удачно заканчиваются.

Цитата:

Сообщение от laimas (Сообщение 524148)
Нет вывода нужного - выводите в браузер счетчик итерации для понимания проблемы.

Не совсем понимаю здесь совета. Вы мне предлагаете работать с консолью браузера или буквально просто выводить код в браузер? Простите, если я вас совсем не так понимаю.

laimas 12.05.2020 20:36

Цитата:

Сообщение от Безнадежный программист
Вы мне предлагаете работать с консолью браузера

Консоль к РНР отношения не имеет, это серверный язык и выполняется на сервере. А вывод в браузер, это результат работы РНР, и это echo, print, и т.д. его функции, которые вполне могут быть простейшим отладчиком. По крайней мере они позволят вам проверить свои ожидания с происходящим реально в коде.

Безнадежный программист 13.05.2020 04:15

Цитата:

Сообщение от laimas (Сообщение 524154)
вывод в браузер, это результат работы РНР, и это echo, print, и т.д. его функции, которые вполне могут быть простейшим отладчиком. По крайней мере они позволят вам проверить свои ожидания с происходящим реально в коде.

Так я это и делаю. Как по вашему я нашла ошибки, которые описала выше? Код-то уже рабочий есть - я ищу решение по паре проблем.


Часовой пояс GMT +3, время: 09:05.