2009-04-06 57 views
89

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

Tôi đang cố truy cập bảng trong cơ sở dữ liệu. Tôi tạo ra một trình đơn thả 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ừ danh sách thả xuống, tôi nhấn nút gửi.

Tôi sử dụng hàm isset để xem nút gửi có được nhấn hay không 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, vào thời điểm này tôi có bảng đầy đủ 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 hiện nhiều HTML bên trong câu lệnh if. Cuối cùng, tôi đang cố 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 nội dung (1 hoặc nhiều hàng) trong bảng. Những gì tôi đang cố gắng làm là tạo một trình kéo xuống tương ứng với một cột trong một bảng để làm cho bảng tìm kiếm các nút radio dễ dàng hơn và 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

Xem tại đây giải pháp http://php.net/manual/en/control-structures.alternative-syntax.php – puk

Trả lời

32

Vâng,

<?php 
if ($my_name == "someguy") { 
    ?> HTML GOES HERE <?php; 
} 
?> 
283
<?php if($condition) : ?> 
    <a href="http://yahoo.com">This will only display if $condition is true</a> 
<?php endif; ?> 

Bằng cách yêu cầu, đây là elseif và khác (mà bạn cũng có thể tìm thấy trong the docs)

<?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ó là đơn giản.

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

+4

+1 vì tôi ưu tiên kiểu đó trong mã cụ thể cho từng lượt xem. –

+30

Tôi ghét lặp lại html! –

+1

+1 để trả lời câu hỏi. Điều đó nói rằng, OP có thể muốn xem xét một ngôn ngữ tốt như Smarty để tách biệt quan điểm của mình khỏi mô hình của mình một chút. –

9

Có.

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

thẻ ngắn bad m'kay. Một số máy chủ không bật chúng. –

+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. – chaos

+2

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

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

+9

Mô tả có thể là "sao chép-dán các câu trả lời 5 tuổi": P –

2

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

Tốt hơn là sử dụng cú pháp heredoc. Đó 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_TEXT là dấu phân cách (có thể về cơ bản là bất kỳ văn bản nào như EOF, EOT). Tất cả mọi thứ giữa được coi là chuỗi bởi PHP như thể nó đã được 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, vì vậy nó rất thuận tiện cho việc in các thuộc tính html.

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

Heredoc có hành vi của chuỗi trong dấu nháy đơn (') được gọi là nowdoc. Không phân tích đượ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 tách mở trong dấu nháy đơn - echo <<< 'END_OF_TEXT'.

+0

Cảm ơn bạn rất nhiều vì đã nhắc tôi về điều này. Heredoc là cực kỳ hữu ích cho 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 thoát khỏi các thuộc tính và dấu ngoặc kép! – UTCWebDev

0

Vì vậy, nếu điều kiện tương đương với giá trị mà bạn muốn sau đó tài liệu php sẽ chạy "bao gồm" và bao gồm sẽ bổ sung thêm tài liệu đó đến 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

Vui lòng xây dựng câu trả lời của bạn. –

+0

@HarshWardhan Xong –

Các vấn đề liên quan