Bisakah HTML disematkan di dalam pernyataan "if" PHP?

120

Saya ingin menanamkan HTML di dalam pernyataan PHP if, jika memungkinkan, karena menurut saya HTML akan muncul sebelum pernyataan PHP if dijalankan.

Saya mencoba mengakses tabel di database. Saya membuat menu pulldown dalam HTML yang mencantumkan semua tabel dalam database dan setelah saya memilih tabel dari pulldown, saya menekan tombol kirim.

Saya menggunakan fungsi isset untuk melihat apakah tombol submit telah ditekan dan menjalankan loop dalam PHP untuk menampilkan isi tabel dalam database. Jadi pada titik ini saya memiliki tabel lengkap tetapi saya ingin menjalankan beberapa kueri lagi di tabel ini. Oleh karena itu alasan saya mencoba untuk mengeksekusi lebih banyak HTML di dalam pernyataan if. Pada akhirnya, saya mencoba memperbarui (1 atau lebih konten dalam satu baris atau beberapa baris) atau menghapus (1 baris atau lebih) konten dalam tabel. Apa yang saya coba lakukan adalah membuat pulldown lain yang terkait dengan kolom dalam tabel untuk mempermudah pencarian tabel dan tombol radio yang terkait dengan apakah saya ingin memperbarui atau menghapus konten dalam tabel.

IMSoP
sumber

Jawaban:

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

Berdasarkan permintaan, inilah elseif dan lainnya (yang juga dapat Anda temukan di dokumen )

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

Sesederhana itu.

HTML hanya akan ditampilkan jika kondisinya terpenuhi.

Frank Farmer
sumber
"... (yang juga dapat Anda temukan di [dokumen] [1])" Di mana tepatnya dokumen-dokumen ini yang Anda bicarakan?
gmeben
39

Iya,

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

Iya.

<?  if($my_name == 'someguy') { ?>
        HTML_GOES_HERE
<?  } ?>
kekacauan
sumber
6
Beberapa server tidak menginstal libxml atau pdo_mysql, tetapi kami masih dapat merekomendasikan solusi untuk menggunakannya.
kekacauan
2
Saya pikir ini seharusnya hanya komentar untuk jawaban Jon.
Rimas Kudelis
3
Mmmkay. Anda ingin memberi tahu saya bagaimana tepatnya saya menyematkan kode yang diformat dalam komentar?
kekacauan
3

Menggunakan tag penutup / buka PHP bukanlah solusi yang sangat baik karena 2 alasan: Anda tidak dapat mencetak variabel PHP dalam HTML biasa dan itu membuat kode Anda sangat sulit dibaca (blok kode berikutnya dimulai dengan tanda kurung akhir }, tetapi pembaca memiliki tidak tahu apa yang sebelumnya).

Lebih baik menggunakan sintaks heredoc . Ini adalah konsep yang sama seperti dalam bahasa lain (seperti 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_TEXTadalah pembatas Anda (pada dasarnya dapat berupa teks apa saja seperti EOF, EOT). Segala sesuatu di antaranya dianggap string oleh PHP seolah-olah berada dalam tanda kutip ganda, sehingga Anda dapat mencetak variabel, tetapi Anda tidak perlu melepaskan tanda kutip apa pun, jadi sangat nyaman untuk mencetak atribut html.

Perhatikan bahwa pembatas penutup harus dimulai di awal baris dan titik koma harus ditempatkan tepat setelahnya tanpa karakter lain ( END_OF_TEXT;).

Heredoc dengan perilaku string dalam tanda kutip tunggal ( ') disebut nowdoc . Tidak ada penguraian yang dilakukan di dalam nowdoc. Anda menggunakannya dengan cara yang sama seperti heredoc, cukup letakkan pembatas pembuka dalam tanda kutip tunggal - echo <<< 'END_OF_TEXT'.

Marki555
sumber
Terima kasih banyak telah mengingatkan saya akan hal ini. Heredoc sangat membantu untuk HTML yang lebih kompleks dengan banyak kondisi, dan jauh lebih mudah daripada menggunakan atribut dan tanda kutip!
UTCWebDev
2

Jadi jika kondisi sama dengan nilai yang Anda inginkan maka dokumen php akan menjalankan "include" dan termasuk akan menambahkan dokumen tersebut ke jendela saat ini misalnya:

`

<?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')}
?>

`

Login Cepat
sumber
0
<?php if ($my_name == 'aboutme') { ?>
    HTML_GOES_HERE
<?php } ?>
govindak
sumber
1
Harap tambahkan beberapa deskripsi untuk jawaban Anda.
Parixit
10
Deskripsi bisa berupa "copy-paste jawaban lama 5 tahun": P
Erenor Paz
0

Saya tahu ini adalah posting lama, tetapi saya sangat benci bahwa hanya ada satu jawaban di sini yang menyarankan untuk tidak mencampur html dan php. Alih-alih mencampur konten, seseorang harus menggunakan sistem templat, atau membuat sistem templat dasar sendiri.

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

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

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

Outputnya adalah:

Alice ate apples for lunch with Bob.
Bruce
sumber