HTML สามารถฝังอยู่ในคำสั่ง PHP“ if” ได้หรือไม่?


120

ฉันต้องการฝัง HTML ไว้ในคำสั่ง PHP if ถ้าเป็นไปได้เพราะฉันคิดว่า HTML จะปรากฏก่อนคำสั่ง PHP ถ้าถูกเรียกใช้

ฉันพยายามเข้าถึงตารางในฐานข้อมูล ฉันสร้างเมนูแบบเลื่อนลงใน HTML ที่แสดงรายการตารางทั้งหมดในฐานข้อมูลและเมื่อฉันเลือกตารางจากแบบดึงลงฉันก็กดปุ่มส่ง

ฉันใช้ฟังก์ชัน isset เพื่อดูว่ามีการกดปุ่มส่งหรือไม่และเรียกใช้ลูปใน PHP เพื่อแสดงเนื้อหาของตารางในฐานข้อมูล ณ จุดนี้ฉันมีตารางที่สมบูรณ์ แต่ฉันต้องการเรียกใช้แบบสอบถามเพิ่มเติมในตารางนี้ ดังนั้นเหตุผลที่ฉันพยายามเรียกใช้ HTML เพิ่มเติมในคำสั่ง if ในที่สุดฉันกำลังพยายามอัปเดต (เนื้อหา 1 รายการขึ้นไปในแถวหรือหลายแถว) หรือลบ (1 แถวขึ้นไป) เนื้อหาในตาราง สิ่งที่ฉันกำลังพยายามทำคือสร้างแบบเลื่อนลงอื่นที่ตรงกับคอลัมน์ในตารางเพื่อให้การค้นหาตารางง่ายขึ้นและปุ่มตัวเลือกที่สอดคล้องกับว่าฉันต้องการอัปเดตหรือลบเนื้อหาในตารางหรือไม่


3
ดูวิธีแก้ปัญหาได้ที่นี่php.net/manual/en/control-structures.alternative-syntax.php
puk

คำตอบ:


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

ตามคำขอนี่คือ elseif และอื่น ๆ (ซึ่งคุณสามารถพบได้ในเอกสาร )

<?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; ?>

มันง่ายมาก

HTML จะแสดงก็ต่อเมื่อตรงตามเงื่อนไขเท่านั้น


"... (ซึ่งคุณสามารถหาได้จาก [the docs] [1])" คุณพูดถึงเอกสารเหล่านี้ที่ไหนกันแน่?
gmeben


15

ใช่.

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

6
เซิร์ฟเวอร์บางตัวไม่ได้ติดตั้ง libxml หรือ pdo_mysql แต่เรายังสามารถแนะนำวิธีแก้ปัญหาได้
ความวุ่นวาย

2
ฉันคิดว่านี่น่าจะเป็นเพียงความคิดเห็นสำหรับคำตอบของจอน
Rimas Kudelis

3
Mmmkay คุณต้องการบอกฉันว่าฉันฝังโค้ดที่จัดรูปแบบไว้ในความคิดเห็นได้อย่างไร?
ความวุ่นวาย

3

การใช้แท็กปิด / เปิดของ PHP ไม่ใช่วิธีแก้ปัญหาที่ดีนักเนื่องจากเหตุผล 2 ประการ: คุณไม่สามารถพิมพ์ตัวแปร PHP ใน HTML ธรรมดาได้และทำให้โค้ดของคุณอ่านยากมาก (บล็อกโค้ดถัดไปเริ่มต้นด้วยวงเล็บปิดท้าย}แต่ผู้อ่านมี ไม่รู้ว่าอะไรมาก่อน)

ดีกว่าคือใช้ไวยากรณ์heredoc เป็นแนวคิดเดียวกับในภาษาอื่น ๆ (เช่นทุบตี)

 <?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เป็นตัวคั่นของคุณ (โดยทั่วไปอาจเป็นข้อความใดก็ได้เช่น EOF, EOT) ทุกสิ่งที่อยู่ระหว่างนั้นถือเป็นสตริงโดย PHP ราวกับว่ามันอยู่ในเครื่องหมายคำพูดคู่ดังนั้นคุณสามารถพิมพ์ตัวแปรได้ แต่คุณไม่จำเป็นต้องหลีกเลี่ยงเครื่องหมายคำพูดใด ๆ ดังนั้นจึงสะดวกมากสำหรับการพิมพ์แอตทริบิวต์ html

โปรดสังเกตว่าตัวคั่นปิดต้องเริ่มต้นที่จุดเริ่มต้นของบรรทัดและต้องวางอัฒภาคไว้ด้านหลังโดยไม่มีอักขระอื่น ( END_OF_TEXT;)

Heredoc กับพฤติกรรมของสตริงในราคาเดียว ( ') เรียกว่าnowdoc ไม่มีการแยกวิเคราะห์ภายใน nowdoc คุณสามารถใช้มันในทางเดียวกับ heredoc เพียงแค่คุณใส่ตัวคั่นเปิดในราคาเดียว echo <<< 'END_OF_TEXT'-


ขอบคุณมากที่เตือนฉันเรื่องนี้ Heredoc มีประโยชน์อย่างมากสำหรับ HTML ที่ซับซ้อนมากขึ้นโดยมีหลายเงื่อนไขและง่ายกว่าการหลีกเลี่ยงแอตทริบิวต์และเครื่องหมายคำพูด!
UTCWebDev

2

ดังนั้นหากเงื่อนไขเท่ากับค่าที่คุณต้องการเอกสาร php จะเรียกใช้ "รวม" และรวมจะเพิ่มเอกสารนั้นในหน้าต่างปัจจุบันเช่น:

`

<?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
โปรดเพิ่มคำอธิบายในคำตอบของคุณ
Parixit

10
คำอธิบายอาจเป็น "คัดลอกวางคำตอบอายุ 5 ปี": P
Erenor Paz

0

ฉันรู้ว่านี่เป็นโพสต์เก่า แต่ฉันเกลียดจริงๆที่มีคำตอบเดียวที่แนะนำว่าอย่าผสม html และ php แทนที่จะผสมเนื้อหาควรใช้ระบบเทมเพลตหรือสร้างระบบเทมเพลตพื้นฐานด้วยตนเอง

ใน 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;
?>

ใน html (/path/to/file.html)

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

ผลลัพธ์ของสิ่งนี้จะเป็น:

Alice ate apples for lunch with Bob.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.