Как я передаю переменные JavaScript PHP?

Я хочу передать переменные JavaScript PHP использование скрытого входа в форме.

Но я не могу получить значение $_POST['hidden1'] в $salarieid. Есть ли что-то не так?

Вот код:

<script type="text/javascript">
    // View what the user has chosen
    function func_load3(name) {
        var oForm = document.forms["myform"];
        var oSelectBox = oForm.select3;
        var iChoice = oSelectBox.selectedIndex;
        //alert("You have chosen: " + oSelectBox.options[iChoice].text);
        //document.write(oSelectBox.options[iChoice].text);
        var sa = oSelectBox.options[iChoice].text;
        document.getElementById("hidden1").value = sa;
    }
</script>

<form name="myform" action="<?php echo $_SERVER['$PHP_SELF']; ?>" method="POST">
    <input type="hidden" name="hidden1" id="hidden1" />
</form>

<?php
   $salarieid = $_POST['hidden1'];
   $query = "select * from salarie where salarieid = ".$salarieid;
   echo $query;
   $result = mysql_query($query);
?>

<table>
   Code for displaying the query result.
</table>
136
задан Peter Mortensen 2 August 2019 в 01:02
поделиться

3 ответа

Вы не можете передавать значения переменных из кода JavaScript текущей страницы в код PHP текущей страницы ... Код PHP выполняется на стороне сервера, и он ничего не знает о том, что происходит на стороне клиента.

Вам необходимо передать переменные в PHP-код из HTML-формы, используя другой механизм, например, отправив форму с помощью методов GET или POST.

<DOCTYPE html>
<html>
  <head>
    <title>My Test Form</title>
  </head>

  <body>
    <form method="POST">
      <p>Please, choose the salary id to proceed result:</p>
      <p>
        <label for="salarieids">SalarieID:</label>
        <?php
          $query = "SELECT * FROM salarie";
          $result = mysql_query($query);
          if ($result) :
        ?>
        <select id="salarieids" name="salarieid">
          <?php
            while ($row = mysql_fetch_assoc($result)) {
              echo '<option value="', $row['salaried'], '">', $row['salaried'], '</option>'; //between <option></option> tags you can output something more human-friendly (like $row['name'], if table "salaried" have one)
            }
          ?>
        </select>
        <?php endif ?>
      </p>
      <p>
        <input type="submit" value="Sumbit my choice"/>
      </p>
    </form>

    <?php if isset($_POST['salaried']) : ?>
      <?php
        $query = "SELECT * FROM salarie WHERE salarieid = " . $_POST['salarieid'];
        $result = mysql_query($query);
        if ($result) :
      ?>
        <table>
          <?php
            while ($row = mysql_fetch_assoc($result)) {
              echo '<tr>';
              echo '<td>', $row['salaried'], '</td><td>', $row['bla-bla-bla'], '</td>' ...; // and others
              echo '</tr>';
            }
          ?>
        </table>
      <?php endif?>
    <?php endif ?>
  </body>
</html>
82
ответ дан 23 November 2019 в 23:41
поделиться

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

2
ответ дан 23 November 2019 в 23:41
поделиться

PHP запускается на сервере перед отправкой страницы на пользователя, JavaScript запускается на компьютере пользователя после его получения, поэтому сценарий PHP уже выполнен.

Если вы хотите передать значение JavaScript в сценарий PHP, вам нужно будет выполнить XMLHttpRequest для отправки данные обратно на сервер.

Вот предыдущий вопрос, который вы можете выполнить для получения дополнительной информации: Ajax Tutorial

Теперь, если вам просто нужно передать значение формы на сервер, вы также можете просто выполнить обычное форма сообщения, которая делает то же самое, но вся страница должна быть обновлена.

<?php
if(isset($_POST))
{
  print_r($_POST);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <input type="text" name="data" value="1" />
  <input type="submit" value="Submit" />
</form>

При нажатии кнопки «Отправить» страница будет отправлена ​​и распечатаны отправленные данные.

6
ответ дан 23 November 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: