PHP 内的代码 HTML 值属性
PHP code inside HTML value attribute
有!
我想进行数据库搜索并以预先填充的 HTML 形式向用户显示结果。
我找到了代码中不起作用的确切部分,但我不明白为什么 PHP 没有被服务器选中。我正在使用 UwAMP。
为了说明这里的问题是我需要帮助的一小段代码:
<form id="st_reg" action="" method="POST">
Student Number:
<input type="number" name="s_num" min="1000000" max="3000000" > </br>
<input type="Submit" value="Search">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(empty($_POST['s_num'])){
$errors[] = "You forgot to enter the Student No!";
}
else{
$st_no = trim($_POST['s_num']);
}
if(empty($errors)){
//Open database connection
require('../../connect_to_database/mysql_connect.php');
//Check if the student is already in the database
$query = "SELECT * FROM student WHERE student_no = $st_no";
//Run the query
$result = mysqli_query($db_connection,$query);
if(!$result){
echo "The student does not exist!";
echo"Please <a href='index.html'>go back</a> and choose another action!";
}
elseif($result){
echo "<h2>Student Details:</h2>";
while($row = mysqli_fetch_array($result)){
echo '<form id="st_reg" action="" method="POST">
<label>Student Number:</label>
<input type="number" name = "st_number" min="1000000" max="3000000" value="<?php if(isset($row[\'student_no\'])) echo $row[\'student_no\']; ?> ">
并且 VALUE ATTRIBUTE 中的 PHP 代码实际上没有执行。不要为 GLOBAL php 标签没有被关闭而烦恼,因为它们在文件中(我不是那个垃圾)。
请注意,所有这些代码都在 .php 文件中,其中包含 HTML 代码。 这是a 只是提交表单后的处理部分。我通过对 echo 使用单引号节省了时间,并在需要数据库访问的地方转义了单引号。我尝试在变量周围加上大括号,用双引号回显其中的双引号,但这些尝试中 none 是成功的。 这很奇怪,因为我可以在这个上下文之外完美地回显 $row['student_no'] 并且 运行 没问题。
我也在这个网站上看了类似的问题。他们很接近,但其中 none 几乎接近这种情况。我愿意接受任何建议,并且比那个解决方案更好。
echo '<form id="st_reg" action="" method="POST">
<label>Student Number:</label>
<input type="number" name = "st_number" min="1000000" max="3000000" value="<?php if(isset($row[\'student_no\'])) echo $row[\'student_no\']; ?> ">
应该是这样的:
echo '<form id="st_reg" action="" method="POST">
<label>Student Number:</label>
<input type="number" name = "st_number" min="1000000" max="3000000" value="' . (isset($row['student_no']) ? $row['student_no'] : '') . '">
CONTINUATION OF STRING...
下面就按你的意思做吧
value="<?= (isset($row["student_no"]) ? $row["student_no"] : "") ?>"
当你已经在 PHP 块中时,你不需要担心所有的转义。
有! 我想进行数据库搜索并以预先填充的 HTML 形式向用户显示结果。
我找到了代码中不起作用的确切部分,但我不明白为什么 PHP 没有被服务器选中。我正在使用 UwAMP。
为了说明这里的问题是我需要帮助的一小段代码:
<form id="st_reg" action="" method="POST">
Student Number:
<input type="number" name="s_num" min="1000000" max="3000000" > </br>
<input type="Submit" value="Search">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(empty($_POST['s_num'])){
$errors[] = "You forgot to enter the Student No!";
}
else{
$st_no = trim($_POST['s_num']);
}
if(empty($errors)){
//Open database connection
require('../../connect_to_database/mysql_connect.php');
//Check if the student is already in the database
$query = "SELECT * FROM student WHERE student_no = $st_no";
//Run the query
$result = mysqli_query($db_connection,$query);
if(!$result){
echo "The student does not exist!";
echo"Please <a href='index.html'>go back</a> and choose another action!";
}
elseif($result){
echo "<h2>Student Details:</h2>";
while($row = mysqli_fetch_array($result)){
echo '<form id="st_reg" action="" method="POST">
<label>Student Number:</label>
<input type="number" name = "st_number" min="1000000" max="3000000" value="<?php if(isset($row[\'student_no\'])) echo $row[\'student_no\']; ?> ">
并且 VALUE ATTRIBUTE 中的 PHP 代码实际上没有执行。不要为 GLOBAL php 标签没有被关闭而烦恼,因为它们在文件中(我不是那个垃圾)。
请注意,所有这些代码都在 .php 文件中,其中包含 HTML 代码。 这是a 只是提交表单后的处理部分。我通过对 echo 使用单引号节省了时间,并在需要数据库访问的地方转义了单引号。我尝试在变量周围加上大括号,用双引号回显其中的双引号,但这些尝试中 none 是成功的。 这很奇怪,因为我可以在这个上下文之外完美地回显 $row['student_no'] 并且 运行 没问题。
我也在这个网站上看了类似的问题。他们很接近,但其中 none 几乎接近这种情况。我愿意接受任何建议,并且比那个解决方案更好。
echo '<form id="st_reg" action="" method="POST">
<label>Student Number:</label>
<input type="number" name = "st_number" min="1000000" max="3000000" value="<?php if(isset($row[\'student_no\'])) echo $row[\'student_no\']; ?> ">
应该是这样的:
echo '<form id="st_reg" action="" method="POST">
<label>Student Number:</label>
<input type="number" name = "st_number" min="1000000" max="3000000" value="' . (isset($row['student_no']) ? $row['student_no'] : '') . '">
CONTINUATION OF STRING...
下面就按你的意思做吧
value="<?= (isset($row["student_no"]) ? $row["student_no"] : "") ?>"
当你已经在 PHP 块中时,你不需要担心所有的转义。