Я хочу передать переменные 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>
Вы не можете передавать значения переменных из кода 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>
Вызывается ли ваша функция, которая устанавливает значение скрытой формы? В этом примере нет. У вас не должно возникнуть проблем с изменением скрытого значения до отправки формы обратно на сервер.
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>
При нажатии кнопки «Отправить» страница будет отправлена и распечатаны отправленные данные.