HTML, PHP "if" ifadesinin içine gömülebilir mi?


120

HTML'yi bir PHP if deyiminin içine gömmek istiyorum, eğer mümkünse, çünkü ifade çalıştırılırsa HTML'nin PHP'den önce görüneceğini düşünüyorum.

Veritabanındaki bir tabloya erişmeye çalışıyorum. HTML'de veritabanındaki tüm tabloları listeleyen bir açılır menü oluşturdum ve açılır listeden tabloyu seçtikten sonra gönder düğmesine basıyorum.

Gönder düğmesine basılıp basılmadığını görmek için isset işlevini kullanıyorum ve veritabanındaki tablonun içeriğini görüntülemek için PHP'de bir döngü çalıştırıyorum. Bu noktada tam bir tabloya sahibim ama bu tabloda daha fazla sorgu çalıştırmak istiyorum. Bu nedenle if ifadesinin içinde daha fazla HTML çalıştırmaya çalışıyorum. Sonuçta, tablodaki içeriği güncellemeye (bir satırda 1 veya daha fazla içerik veya birden fazla satır) veya silmeye (1 veya daha fazla satır) çalışıyorum. Yapmaya çalıştığım şey, tablo aramasını kolaylaştırmak için tablodaki bir sütuna karşılık gelen başka bir açılır pencere ve tablodaki içeriği güncellemek veya silmek isteyip istemediğime karşılık gelen radyo düğmeleri oluşturmaktır.


Yanıtlar:


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

İstek üzerine, işte elseif ve else (bunları belgelerde de bulabilirsiniz )

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

Bu kadar basit.

HTML yalnızca koşul yerine getirilirse görüntülenecektir.


"... (bunları [dokümanlarda] [1] da bulabilirsiniz)" Bahsettiğiniz bu dokümanlar tam olarak nerede?
gmeben

39

Evet,

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

15

Evet.

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

6
Bazı sunucularda libxml veya pdo_mysql kurulu değildir, ancak yine de bunları kullanarak çözümler önerebiliriz.
kaos

2
Sanırım bu, Jon'un cevabı için bir yorum olmalıydı.
Rimas Kudelis

3
Mmmkay. Biçimlendirilmiş kodu bir yoruma tam olarak nasıl katıştırdığımı söylemek ister misin?
kaos

3

PHP kapalı / açık etiketlerini kullanmak, 2 nedenden dolayı pek iyi bir çözüm değildir: PHP değişkenlerini düz HTML'de yazdıramazsınız ve kodunuzun okunmasını çok zorlaştırır (sonraki kod bloğu bir son parantez ile başlar }, ancak okuyucuda daha önce ne olduğu hakkında hiçbir fikrim yok).

Yorumlu metin sözdizimini kullanmak daha iyidir . Diğer dillerdeki ile aynı kavramdır (bash gibi).

 <?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_TEXTsınırlayıcınızdır (temelde EOF, EOT gibi herhangi bir metin olabilir). Aradaki her şey PHP tarafından çift tırnak içindeymiş gibi dizge olarak kabul edilir, bu nedenle değişkenleri yazdırabilirsiniz, ancak herhangi bir tırnak işaretinden kaçınmanız gerekmez, bu nedenle html niteliklerini yazdırmak için çok uygundur.

Kapanış sınırlayıcısının satırın başlangıcında başlaması gerektiğini ve noktalı virgülün başka bir karakter olmadan ( END_OF_TEXT;) hemen arkasına yerleştirilmesi gerektiğini unutmayın .

Tek tırnak ( ') içindeki dizge davranışına sahip heredoc , nowdoc olarak adlandırılır . Nowdoc içinde ayrıştırma yapılmaz. Bunu heredoc ile aynı şekilde kullanırsınız, sadece açılış sınırlayıcısını tek tırnak içine koyarsınız - echo <<< 'END_OF_TEXT'.


Bana bunu hatırlattığınız için çok teşekkür ederim. Yorumlu metin, birden çok koşul içeren daha karmaşık HTML için son derece yararlıdır ve özniteliklerden ve alıntılardan kaçmaktan çok daha kolaydır!
UTCWebDev

2

Dolayısıyla, koşul istediğiniz değere eşitse, php belgesi "include" çalıştıracak ve include bu belgeyi geçerli pencereye ekleyecektir, örneğin:

'

<?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
Lütfen cevabınıza bir açıklama ekleyin.
Parixit

10
Açıklama "5 yaşındaki yanıtları kopyala-yapıştır" olabilir: P
Erenor Paz

0

Bunun eski bir gönderi olduğunu biliyorum, ancak burada html ve php'yi karıştırmamayı öneren tek bir yanıt olduğundan gerçekten nefret ediyorum. İçeriği karıştırmak yerine şablon sistemler kullanılmalı veya kendileri temel bir şablon sistemi oluşturmalıdır.

Php'de

<?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'de (/path/to/file.html)

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

Bunun çıktısı şöyle olacaktır:

Alice ate apples for lunch with Bob.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.