在 html 中嵌套的回显中显示 php
displaying php in an echo nested in html
我正在尝试回显其中嵌套了 PHP 的一段文本,有人知道怎么做吗?我试过这样:
function update_category(){
global $connection;
if (isset($_GET['edit'])) {
$edit_cat_key = $_GET['edit'];
$query = "SELECT * FROM categories WHERE cat_id = {$edit_cat_key }";
$edit_cat_query = mysqli_query($connection, $query);
echo '<form action="categories.php" method="post">
<div class="form-group">
<label for="new-cat-title">New name of category</label>
<input value="<?php if(isset($cat_title)){echo $cat_title;} ?>" type="text" class="form-control" name="new-cat-title">
</div>
<div class="form-group">
<input class="btn btn-primary" type="submit" name="submit" value="Rename Category">
</div>
</form>';
while($row = mysqli_fetch_assoc($edit_cat_query)) {
$cat_title = $row['cat_title'];
$cat_id = $row['cat_id'];
}
}
}
它打印:<?php if(isset($cat_title)){echo $cat_title;} ?>
我试过这样:
<input value="' . <?php if(isset($cat_title)){echo $cat_title;} ?> . '" type="text" class="form-control" name="new-cat-title">
我会这样做(只显示 php 代码中的回显部分):
echo '<form action="categories.php" method="post">
<div class="form-group">
<label for="new-cat-title">New name of category</label><input value="';
if(isset($cat_title)){echo $cat_title;};
echo '" type="text" class="form-control" name="new-cat-title"></div>
<div class="form-group">
<input class="btn btn-primary" type="submit" name="submit" value="Rename Category">
</div>
</form>';
这回显了两个字符串(在单引号中)和它们之间的变量取决于条件,保持 double-quote 对属性值完整。
Echo 是一个 php 语句。你用它来显示一个输出,作为一个字符串。您需要的是,将 echo '
替换为 ?>
,将 </form>';
替换为 </form><?php
。这些结束 (?>
) 和开始 (<?php
) 标签让您决定文档的哪一部分应该作为 PHP 处理。所以 PHP 将忽略文档的其余部分。
根据 Johannes 的回答,我找到了答案。我需要关闭 PHP 标签,而不是回显希望的结果,而是将其放在 while 循环中。
像这样:
function update_category(){
global $connection;
if (isset($_GET['edit'])) {
$edit_cat_key = $_GET['edit'];
$query = "SELECT * FROM categories WHERE cat_id = {$edit_cat_key }";
$edit_cat_query = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($edit_cat_query)) {
$cat_title = $row['cat_title'];
$cat_id = $row['cat_id'];
?>
<input value="<?php echo $cat_title; ?>" type="text" class="form-control" name="cat_title">
<?php
}
}
}
我正在尝试回显其中嵌套了 PHP 的一段文本,有人知道怎么做吗?我试过这样:
function update_category(){
global $connection;
if (isset($_GET['edit'])) {
$edit_cat_key = $_GET['edit'];
$query = "SELECT * FROM categories WHERE cat_id = {$edit_cat_key }";
$edit_cat_query = mysqli_query($connection, $query);
echo '<form action="categories.php" method="post">
<div class="form-group">
<label for="new-cat-title">New name of category</label>
<input value="<?php if(isset($cat_title)){echo $cat_title;} ?>" type="text" class="form-control" name="new-cat-title">
</div>
<div class="form-group">
<input class="btn btn-primary" type="submit" name="submit" value="Rename Category">
</div>
</form>';
while($row = mysqli_fetch_assoc($edit_cat_query)) {
$cat_title = $row['cat_title'];
$cat_id = $row['cat_id'];
}
}
}
它打印:<?php if(isset($cat_title)){echo $cat_title;} ?>
我试过这样:
<input value="' . <?php if(isset($cat_title)){echo $cat_title;} ?> . '" type="text" class="form-control" name="new-cat-title">
我会这样做(只显示 php 代码中的回显部分):
echo '<form action="categories.php" method="post">
<div class="form-group">
<label for="new-cat-title">New name of category</label><input value="';
if(isset($cat_title)){echo $cat_title;};
echo '" type="text" class="form-control" name="new-cat-title"></div>
<div class="form-group">
<input class="btn btn-primary" type="submit" name="submit" value="Rename Category">
</div>
</form>';
这回显了两个字符串(在单引号中)和它们之间的变量取决于条件,保持 double-quote 对属性值完整。
Echo 是一个 php 语句。你用它来显示一个输出,作为一个字符串。您需要的是,将 echo '
替换为 ?>
,将 </form>';
替换为 </form><?php
。这些结束 (?>
) 和开始 (<?php
) 标签让您决定文档的哪一部分应该作为 PHP 处理。所以 PHP 将忽略文档的其余部分。
根据 Johannes 的回答,我找到了答案。我需要关闭 PHP 标签,而不是回显希望的结果,而是将其放在 while 循环中。
像这样:
function update_category(){
global $connection;
if (isset($_GET['edit'])) {
$edit_cat_key = $_GET['edit'];
$query = "SELECT * FROM categories WHERE cat_id = {$edit_cat_key }";
$edit_cat_query = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($edit_cat_query)) {
$cat_title = $row['cat_title'];
$cat_id = $row['cat_id'];
?>
<input value="<?php echo $cat_title; ?>" type="text" class="form-control" name="cat_title">
<?php
}
}
}