[英]PHP: Store Result of JavaScript Function into a PHP Variable
请记住,我是PHP的新手。 这个学期我才刚开始上这门课。
这是我最终想要做的:我有一个高级项目,正在构建计算机维修系统。 在修复MySQL表中,我有一堆字段,其中一个是CustomerID(因此我知道哪个客户进行了哪个修复)。 我想淹没客户的名字,然后单击它,然后介绍一些如何将该客户的ID附加到变量上,以便执行INSERT语句。 为了部分实现这一目标,我在较小的部分中做了一些工作。 我工作的一小部分是当我选择一个下拉值时,将其输出到屏幕上,但这在javascript函数中。
这是我的代码:
<?PHP
include('session.php');
$db_name = "";
$mysql_username = "";
$mysql_password = "";
$mysql_server = "";
$mysqli = new mysqli($mysql_server, $mysql_username, $mysql_password,
$db_name);
$query = "SELECT custID, CONCAT(custFirstName, ' ', custLastName) as
Customer_Name FROM customer";
$result = mysqli_query($mysqli, $query);
echo "<select name ='names' id='myselect' onchange = \"myFunction()\">";
while ($row = mysqli_fetch_array($result)){
echo "<option value = '" . $row['custID'] . "'>" . $row['Customer_Name'] . "
</option>";
}
echo "</select>";
echo "<p>When you select a customer name, a function is triggered which
outputs the ID of the selected customer.</p>
<p id=\"demo\"></p>
<script>
function myFunction() {
var x = document.getElementById(\"myselect\").value;
document.getElementById(\"demo\").innerHTML = x;
}
</script>";
$content = "<script> document.write(x) </script>";
echo "<br> <br> The technician ID = $sTechID <br> <br> The customer ID = $content";
?>
我可以使用Javascript函数将ID输出到屏幕上,但是当我尝试将“ x”存储到php变量中时,它将不起作用。 在chrome中,检查员说X是未定义的。
旁注:我用此代码制作了一个测试文件,它起作用了:
<?PHP
echo "
<script>
var x = \"hello\"
</script>";
$content = "<script> document.write(x) </script>";
echo "$content <br> <br> $content";
?>
因为上面的代码有效,所以我不明白为什么我的较大代码无法正常工作。
我了解我的代码很烂,但是任何帮助将不胜感激。 谢谢!
我认为您通常需要更好地了解PHP。 在浏览器执行您已回显的html / js之前,将执行PHP。 起作用的原因:
<?PHP
echo "
<script>
var x = \"hello\"
</script>";
$content = "<script> document.write(x) </script>";
echo "$content <br> <br> $content";
?>
这是因为您正在向dom编写JS,并且一旦您的浏览器读取它,它就会被执行。 如果您运行var_dump($content);
您将看到,存储在该PHP变量中的内容不是x
的结果,而是实际上是包含文本"<script> document.write(x) </script>"
的文字字符串。
行echo "$content <br> <br> $content";
打印"<script> document.write(x) </script> <br> <br> <script> document.write(x) </script>";
DOM,然后在浏览器中以JS的形式运行。
如果您希望下拉选择在PHP中做某事,建议您在下拉菜单更改时触发JS函数,然后将AJAX请求发送到一个单独的PHP文件,该文件执行您需要在其中进行的操作并将其返回给您功能。 这样,您无需导航到另一个PHP页面即可更新HTML。
PHP是一种后端语言,无法检测到诸如单击,更改等前端事件。
在较大的代码中,仅当事件被触发( onchange
)(即select
输入发生更改)时才定义x
的值。 Javascript以这种方式工作,但是PHP却没有。 一旦PHP第一次发送响应,它的工作就完成了。
这是您要使用表格或Ajax的时间。 使用表格将是一个好的开始。
快速说明,最好将HTML,CSS和JS与PHP尽可能分开。
...
$result = mysqli_query($mysqli, $query);
?>
<form method='post' action='insert.php' /> <!-- Link to php file to insert data to database -->
<select name ='names' id='myselect' onchange = "myFunction()">
<?php
while ($row = mysqli_fetch_array($result)){
echo "<option value = '" . $row['custID'] . "'>" . $row['Customer_Name'] . "
</option>";
}
?>
</select>
<input type="submit" value="submit" /> <!-- You will need a button to submit the data -->
</form>
<p>When you select a customer name, a function is triggered which
outputs the ID of the selected customer.</p>
<p id="demo"></p>
现在,您的insert.php
文件将如下所示:
<?php
// Get data from that was posted from the form
$customer_id = $_POST['names'];
// Now do whatever with the customer ID
echo $customer_id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.