HTML có thể được nhúng bên trong câu lệnh “if” PHP không?


120

Tôi muốn nhúng HTML vào bên trong câu lệnh if trong PHP, nếu nó thậm chí có thể, vì tôi nghĩ HTML sẽ xuất hiện trước khi câu lệnh PHP if được thực thi.

Tôi đang cố gắng truy cập một bảng trong cơ sở dữ liệu. Tôi đã tạo một menu kéo xuống trong HTML liệt kê tất cả các bảng trong cơ sở dữ liệu và khi tôi chọn bảng từ trình đơn kéo xuống, tôi nhấn nút gửi.

Tôi sử dụng chức năng Isset để xem liệu nút gửi đã được nhấn hay chưa và chạy một vòng lặp trong PHP để hiển thị nội dung của bảng trong cơ sở dữ liệu. Vì vậy, tại thời điểm này, tôi có bảng hoàn chỉnh nhưng tôi muốn chạy thêm một số truy vấn trên bảng này. Do đó, lý do tôi đang cố gắng thực thi thêm HTML bên trong câu lệnh if. Cuối cùng, tôi đang cố gắng cập nhật (1 hoặc nhiều nội dung trong một hàng hoặc nhiều hàng) hoặc xóa (1 hoặc nhiều hàng) nội dung trong bảng. Những gì tôi đang cố gắng làm là tạo một kéo xuống khác tương ứng với một cột trong bảng để giúp tìm kiếm bảng dễ dàng hơn và các nút radio tương ứng với việc tôi muốn cập nhật hay xóa nội dung trong bảng.


3
puk

Câu trả lời:


371
<?php if($condition) : ?>
    <a href="http://yahoo.com">This will only display if $condition is true</a>
<?php endif; ?>

Theo yêu cầu, đây là ifif và else (bạn cũng có thể tìm thấy trong tài liệu )

<?php if($condition) : ?>
    <a href="http://yahoo.com">This will only display if $condition is true</a>
<?php elseif($anotherCondition) : ?>
    more html
<?php else : ?>
    even more html
<?php endif; ?>

Nó đơn giản mà.

HTML sẽ chỉ được hiển thị nếu điều kiện được thỏa mãn.


"... (mà bạn cũng có thể tìm thấy trong [the docs] [1])" Chính xác thì những tài liệu này bạn nói đến ở đâu?
gmeben

39

Đúng,

<?php
if ( $my_name == "someguy" ) {
    ?> HTML GOES HERE <?php;
}
?>

15

Đúng.

<?  if($my_name == 'someguy') { ?>
        HTML_GOES_HERE
<?  } ?>

6
Một số máy chủ không được cài đặt libxml hoặc pdo_mysql, nhưng chúng tôi vẫn có thể đề xuất các giải pháp sử dụng chúng.
hỗn loạn

2
Tôi nghĩ đây chỉ là một bình luận cho câu trả lời của Jon.
Rimas Kudelis

3
Được rồi. Bạn muốn cho tôi biết chính xác cách tôi nhúng mã được định dạng vào một nhận xét?
hỗn loạn

3

Sử dụng thẻ đóng / mở PHP không phải là giải pháp tốt vì 2 lý do: bạn không thể in các biến PHP ở dạng HTML thuần túy và nó làm cho mã của bạn rất khó đọc (khối mã tiếp theo bắt đầu bằng dấu ngoặc kép }, nhưng người đọc có không biết trước đây là gì).

Tốt hơn là sử dụng cú pháp heredoc . Nó là khái niệm tương tự như trong các ngôn ngữ khác (như bash).

 <?php
 if ($condition) {
   echo <<< END_OF_TEXT
     <b>lots of html</b> <i>$variable</i>
     lots of text...
 many lines possible, with any indentation, until the closing delimiter...
 END_OF_TEXT;
 }
 ?>

END_OF_TEXTlà dấu phân cách của bạn (về cơ bản nó có thể là bất kỳ văn bản nào như EOF, EOT). Mọi thứ giữa được PHP coi là chuỗi như thể nó nằm trong dấu ngoặc kép, vì vậy bạn có thể in các biến, nhưng bạn không phải thoát khỏi bất kỳ dấu ngoặc kép nào, vì vậy rất thuận tiện cho việc in các thuộc tính html.

Lưu ý rằng dấu phân cách đóng phải bắt đầu ở đầu dòng và dấu chấm phẩy phải được đặt ngay sau nó mà không có ký tự nào khác ( END_OF_TEXT;).

Heredoc với hành vi của chuỗi trong dấu nháy đơn ( ') được gọi là nowdoc . Không có phân tích cú pháp nào được thực hiện bên trong nowdoc. Bạn sử dụng nó theo cách tương tự như heredoc, chỉ cần bạn đặt dấu phân cách mở trong dấu ngoặc kép - echo <<< 'END_OF_TEXT'.


Cảm ơn bạn rất nhiều vì đã nhắc nhở tôi về điều này. Heredoc cực kỳ hữu ích đối với HTML phức tạp hơn với nhiều điều kiện và dễ dàng hơn nhiều so với việc thoát các thuộc tính và dấu ngoặc kép!
UTCWebDev

2

Vì vậy, nếu điều kiện bằng giá trị bạn muốn thì tài liệu php sẽ chạy "bao gồm" và bao gồm sẽ thêm tài liệu đó vào cửa sổ hiện tại, ví dụ:

`

<?php
$isARequest = true;
if ($isARequest){include('request.html');}/*So because $isARequest is true then it will include request.html but if its not a request then it will insert isNotARequest;*/
else if (!$isARequest) {include('isNotARequest.html')}
?>

`


0
<?php if ($my_name == 'aboutme') { ?>
    HTML_GOES_HERE
<?php } ?>

1
Vui lòng thêm một số mô tả cho câu trả lời của bạn.
Parixit

10
Mô tả có thể là "sao chép dán 5 năm câu trả lời cũ": P
Erenor Paz

0

Tôi biết đây là một bài viết cũ, nhưng tôi thực sự ghét rằng chỉ có một câu trả lời ở đây đề nghị không trộn lẫn html và php. Thay vì trộn nội dung, người ta nên sử dụng các hệ thống mẫu hoặc tự tạo một hệ thống mẫu cơ bản.

Trong php

<?php 
  $var1 = 'Alice'; $var2 = 'apples'; $var3 = 'lunch'; $var4 = 'Bob';

  if ($var1 == 'Alice') {
    $html = file_get_contents('/path/to/file.html'); //get the html template
    $template_placeholders = array('##variable1##', '##variable2##', '##variable3##', '##variable4##'); // variable placeholders inside the template
    $template_replace_variables = array($var1, $var2, $var3, $var4); // the variables to pass to the template
    $html_output = str_replace($template_placeholders, $template_replace_variables, $html); // replace the placeholders with the actual variable values.
  }

  echo $html_output;
?>

Trong html (/path/to/file.html)

<p>##variable1## ate ##variable2## for ##variable3## with ##variable4##.</p>

Đầu ra của điều này sẽ là:

Alice ate apples for lunch with Bob.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.