2010-09-28 13 views
22

के बीच PHP कोड में सशर्त वक्तव्य मुझे HTML कोड द्वारा अलग PHP में सशर्त वक्तव्य का उपयोग करके कोई समस्या है। यह वह कोड है जिसे मैं लिखने की कोशिश कर रहा हूं। यह एक प्रोफाइल पेज है और यह केवल जिसका प्रोफाइल यह है (मैं यह जांच करना कि के लिए सत्र चर का उपयोग कर रहा) उपयोगकर्ता द्वारा देखा जाना चाहिए:एचटीएमएल कोड

<?php if(check if user is logged in) ?> 
<display users profile in html> 
<?php else ?> 
<display an error> 

लेकिन यह काम नहीं करता। मैंने if के अंत में : डालने और endif कथन का उपयोग करके शॉर्टंड नोटेशन का उपयोग करने का भी प्रयास किया, लेकिन यह काम नहीं किया। (पहले की परियोजना पर, : विधि foreach और endforeach के लिए काम किया था, इसलिए मैंने सोचा कि मैं इसे आज़माउंगा)

कोई विचार?

उत्तर

58

आप शायद alternative control structure syntax की endif भूल तक फैला । यह केवल तभी संभव है जब उसके बाद regular statement हो।

+0

+1: मैं पठनीयता के लिए यह वाक्यविन्यास पसंद करता हूं। HTML में सशर्त करने के लिए 'end *'/':' विधियों का उपयोग करने के लिए – RedFilter

+0

+1। – RobertPitt

+1

ईर्क। मुझे "एंडिफ" वाक्यविन्यास से नफरत है। मुझे किसी भी दिन अच्छा दोस्ताना घुंघराले ब्रेसिज़ दें। ;) – Spudley

0

शर्तों को अलग करने के लिए ब्रैकेट डालने का प्रयास करें।

<?php if(check if user is logged in): ?> 
<display users profile in html> 
<?php else: ?> 
<display an error> 
<?php endif; ?> 

ब्रेसिज़ छोड़ना के रूप में आप ने लिखा संभव नहीं है:

<?php if(check if user is logged in) { ?> 
<display users profile in html> 
<?php } else { ?> 
<display an error> 
<?php } ?> 
0

उपयोग कोष्ठक क्योंकि php दुभाषिया को यह कई पंक्तियों

<?php if(check if user is logged in) { ?> 
<display users profile in html> 
<?php } else { ?> 
<display an error> 
<?php } // else ?> 
6

ब्रेसिज़ { और } का उपयोग करें।

<?php if(check if user is logged in) { ?> 
<display users profile in html> 
<?php } else { ?> 
<display an error> 
<?php } ?> 
+3

मैं ब्रेसिज़ को प्रीफर करता हूं, खासकर जब आप आईडीई – Hannes

0

आपका प्रारंभिक विचार सही था।

<?php if($loggedin): ?> 
<p>User is logged in.</p> 
<?php else: ?> 
<p>User is not logged in.</p> 
<?php endif; ?> 

या::

<?php if($loggedin){ ?> 
<p>User is logged in.</p> 
<?php }else{ ?> 
<p>User is not logged in.</p> 
<?php } ?> 
+0

का उपयोग करते हैं तो इसे ज़ोरदार और साफ़ करने के लिए धन्यवाद :) चीयर्स :) – 0xff0000

11

PHP के लिए अंकन के दो शैलियों की है, तो() (सामान्य रूप में और ब्लॉक) ब्लॉक ऐसा करने के दो तरीके, PHP documentation के अनुसार हैं।

सबसे पहले, आपके पास शब्दशः नोटेशन है, जिसमें स्पष्ट रूप से if() ब्लॉक के अंत में endif; बताते हैं। यह इस तरह दिखता है:

if(whatever): 
    do something 
else: 
    do something else 
endif; 

if और else पंक्तियों के अंत में कोलन महत्वपूर्ण हैं, क्योंकि अन्यथा पीएचपी आप अन्य संकेतन (नीचे) का उपयोग कर रहे सोचता है।

दूसरे, आप घुंघराले-ब्रेसिज़ अंकन, जो सी या पर्ल शैली कोड के समान दिखता है, और इस तरह दिखता है:

if(whatever) { 
    do something 
} else { 
    do something else. 
} 
इस शैली अंकन के साथ

, आप घुंघराले के जोड़े जाने के लिए अनुमति दी जाती है यदि आपका ब्लॉक केवल एक पंक्ति लंबा होने जा रहा है तो बंद हो जाता है। (मुझे व्यक्तिगत रूप से लगता है कि उन्हें इस तरह से छोड़ने का बुरा अभ्यास है, लेकिन बहुत से लोग इसके द्वारा कसम खाता है, और यह पूरी तरह से वैध वाक्यविन्यास है। लेकिन मैंने PHP कोड के बीच स्विच करते समय PHP को सिंगल-लाइन ब्लॉक पर उलझन में देखा है और एचटीएमएल; यही कारण है कि मैं हमेशा ब्रेसिज़ का उपयोग करना पसंद करता हूं भले ही मैं केवल एक पंक्ति लिख रहा हूं)।

आपके मामले में समस्या यह है कि आपने दो नोटेशन मिश्रित किए हैं। आप हमें शब्दशः नोटेशन की कोशिश कर रहे हैं, लेकिन लाइनों पर कोलन नहीं हैं, इसलिए PHP सोचता है कि आप ब्रेसिज़ नोटेशन का मतलब है। लेकिन चूंकि ब्रेसिज़ नोटेशन ब्रेसिज़ को याद करने की अनुमति देता है, इसलिए PHP आपके कोड को वैध वाक्यविन्यास के रूप में देख रहा है, भले ही यह आपके द्वारा नियोजित कार्य के रूप में काम नहीं करेगा।

आपका समाधान इसे साफ करना है ताकि आप निश्चित रूप से एक वाक्यविन्यास या दूसरे का उपयोग कर रहे हों। या तो मेरे उदाहरण में दिखाए गए प्रत्येक ब्लॉक की शुरुआत और अंत में ब्रेसिज़ ({ और }}) जोड़ें, या कोलन और endif; लाइन जोड़ें।

तो अपने कोड में इन दो उदाहरणों में से एक तरह दिखना चाहिए:

<?php if(check if user is logged in): ?> 
    <display users profile in html> 
<?php else: ?> 
    <display an error> 
<?php endif; ?> 

या ...

<?php if(check if user is logged in) { ?> 
    <display users profile in html> 
<?php } else { ?> 
    <display an error> 
<?php } ?> 

आशा है कि मदद करता है।

+0

वाह, काफी विस्तृत था। धन्यवाद ! मैं <3'in हूँ! SO :) – 0xff0000

संबंधित मुद्दे