क्या HTML को 'if' स्टेटमेंट के अंदर एम्बेड किया जा सकता है?


120

मैं बयान के अनुसार यदि संभव हो तो HTML को PHP के अंदर एम्बेड करना चाहूंगा, क्योंकि मुझे लगता है कि यदि कथन निष्पादित होता है तो HTML PHP से पहले दिखाई देगा।

मैं एक डेटाबेस में एक तालिका तक पहुँचने की कोशिश कर रहा हूँ। मैंने HTML में एक पुलडाउन मेनू बनाया जो डेटाबेस में सभी तालिकाओं को सूचीबद्ध करता है और एक बार पुलडाउन से तालिका का चयन करने के बाद, मैं सबमिट बटन दबाता हूं।

मैं यह देखने के लिए isset फ़ंक्शन का उपयोग करता हूं कि क्या सबमिट बटन दबाया गया है और डेटाबेस में तालिका की सामग्री को प्रदर्शित करने के लिए PHP में एक लूप चलाएं। इसलिए इस बिंदु पर मेरे पास पूरी तालिका है, लेकिन मैं इस तालिका पर कुछ और प्रश्न चलाना चाहता हूं। इसलिए यदि मैं कथन के अंदर अधिक HTML निष्पादित करने का प्रयास कर रहा हूं। अंत में, मैं तालिका में (या एक पंक्ति या कई पंक्तियों में 1 या अधिक सामग्री) या (1 या अधिक पंक्तियों) सामग्री को अद्यतन करने का प्रयास कर रहा हूं। मैं जो करने की कोशिश कर रहा हूं वह एक और पुलडाउन बना रहा है जो तालिका खोज में आसान और रेडियो बटन बनाने के लिए एक तालिका में एक कॉलम से मेल खाती है जो इस बात से मेल खाती है कि मैं तालिका में सामग्री को अपडेट करना या हटाना चाहता हूं।


3
यहाँ एक समाधान के लिए देखें php.net/manual/en/control-structures.alternative-syntax.php
PUK

जवाबों:


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

अनुरोध के द्वारा, यहाँ का हर्टिफ और अन्य (जो आप डॉक्स में भी पा सकते हैं )

<?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 केवल प्रदर्शित किया जाएगा।


"... (जिसे आप [डॉक्स] [1] में भी देख सकते हैं)" वास्तव में ये डॉक्स आप कहाँ से बोलते हैं?
गमबेन


15

हाँ।

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

6
कुछ सर्वरों में libxml या pdo_mysql स्थापित नहीं है, लेकिन हम अभी भी उनका उपयोग करके समाधान सुझा सकते हैं।
अराजकता

2
मुझे लगता है कि यह जॉन के जवाब के लिए सिर्फ एक टिप्पणी होनी चाहिए थी।
रिमास कुडेलिस

3
Mmmkay। आप मुझे बताना चाहते हैं कि मैंने एक टिप्पणी में प्रारूपित कोड को वास्तव में कैसे एम्बेड किया?
अराजक

3

PHP बंद / खुले टैग का उपयोग करना 2 कारणों से बहुत अच्छा समाधान नहीं है: आप सादे HTML में PHP चर नहीं प्रिंट कर सकते हैं और यह आपके कोड को पढ़ने के लिए बहुत कठिन बनाता है (अगला कोड ब्लॉक अंत ब्रैकेट के साथ शुरू होता है } , लेकिन पाठक के पास है पता नहीं क्या था)।

बेहतर है हेरेडोक सिंटैक्स का उपयोग करना । यह अन्य भाषाओं (जैसे बैश) की तरह ही अवधारणा है।

 <?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आपका सीमांकक है (यह मूल रूप से ईओएफ, ईओटी की तरह कोई भी पाठ हो सकता है)। PHP के बीच सब कुछ स्ट्रिंग द्वारा माना जाता है जैसे कि यह दोहरे उद्धरण चिह्नों में था, इसलिए आप चर प्रिंट कर सकते हैं, लेकिन आपको किसी भी उद्धरण से बचना नहीं है, इसलिए यह HTML विशेषताओं को प्रिंट करने के लिए बहुत सुविधाजनक है।

ध्यान दें कि समापन सीमांकक लाइन की शुरुआत पर शुरू होना चाहिए और अर्धविराम को इसके बाद किसी अन्य वर्ण ( END_OF_TEXT;) के साथ सही रखा जाना चाहिए ।

एकल उद्धरण में स्ट्रिंग के व्यवहार के साथ हियरडॉक ( ') कहा जाता है nowdoc । नोर्डोक के अंदर कोई पार्सिंग नहीं की जाती है। आप इसे उसी तरीके से उपयोग करते हैं जैसे कि हेरेडोक, बस आप ओपनिंग सीमांकक को एक उद्धरण में रखते हैं - 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 साल पुराने उत्तरों की कॉपी-पेस्ट" हो सकता है: पी
इरेनर पाज

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.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.