开发者

How to php if else statement and return different divs?

I'm trying to create an if-else statement, that will return different divs. I believe it is failing because there are too many ' in the else statement.

<?php $blogentryid = get_the_ID(); 

if ($blogentryid=="1572") {
echo '<div>Hello</div>'
}

else {
echo '<div class="socialnews2"><!-- start div social-->

                                <div class="twitternews2">
                                <a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-text="<?php the_title(); ?>" d
ata-url="<?php the_permalink() ?>" data-via="giantmangoc开发者_JS百科om">Tweet</a>
                                <script type="text/javascript">
                                //async script, twitter button fashiolista.com style
                                (function() {
                                var s = document.createElement('SCRIPT');
                                var c = document.getElementsByTagName('script')[0];
                                s.type = 'text/javascript';
                                s.async = true;
                                s.src = 'http://platform.twitter.com/widgets.js';
                                c.parentNode.insertBefore(s, c);
                                 })();
                                </script>
                                </div>
                        </div>
                                <div class="facebooknews2">
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=button_count&
amp;show_faces=false&amp;width=80&amp;action=like&amp;colorscheme=light;height=21"" scrolling="no" frameborder="0" style="border:none; overflow:hidden; wid
th:80px; height:21px;" allowTransparency="true"></iframe>
                                </div>'

}

?>


When you want to show conditional content, open and close the <?php tags instead of using echo statements.

<?php if ($blogentryid == "1572") { ?>

<div>Hello</div>

<?php } else { ?>

<div class="socialnews2"><!-- start div social-->
... rest of content here

<? } ?>

It will also ensure that your php code inside of the div gets evaluated as you intended.


The ' in your javascript sections need to be escaped: \', otherwise they'll be seen by PHP as the end of the string you're echoing.

For large blobs of text like that, look into HEREDOCs, which allow you to output multi-line strings without any worries about quote escaping.

As well, you can't embed php blocks within strings as you are:

echo 'hello<?php echo "there" ?>'

will not work.


you cannot have a <?php ?> tag inside a <?php ?> tag.

<?php .. data-text="<?php the_title(); ?>" ...?>

maybe do something like this:

<?php echo '... data-text="'; echo the_title(); echo '...'; ?>


This code is all over the place.

At the end of every line of executable code, you must have a semi-colon (";") before the syntax is considered valid. When you're trying to assemble PHP plus HTML, it isn't necessary to echo everything. Here's a cleaned up version of your code below.

As you can see, when you don't need any PHP logic, you can end php with ?> and return to normal HTML. You seemed to have that idea, but you contained it all in an echo statement. That would have worked, but you had some <?php echo $whatever; ?> statements mixed in. Take a look at the cleaned up code I posted and you should be able to see where you were going wrong.

<?php 
    $blogentryid = get_the_ID(); 

    if ($blogentryid=="1572") {
        echo '<div>Hello</div>';
    } else {
?>
<div class="socialnews2"><!-- start div social-->'
    <div class="twitternews2">
        <a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-text="<?php the_title(); ?>" data-url="<?php the_permalink() ?>" data-via="giantmangocom">
            Tweet
        </a>
        <script type="text/javascript">
        //async script, twitter button fashiolista.com style
        (function() {
            var s = document.createElement('SCRIPT');
            var c = document.getElementsByTagName('script')[0];
            s.type = 'text/javascript';
            s.async = true;
            s.src = 'http://platform.twitter.com/widgets.js';
            c.parentNode.insertBefore(s, c);
            })();
        </script>
    </div>
    <div class="facebooknews2">
        <iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=button_count&amp;show_faces=false&amp;width=80&amp;action=like&amp;colorscheme=light;height=21"" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:80px; height:21px;" allowTransparency="true"></iframe>
    </div>
</div>
<?php
} // end :: if
?>


For multiline strings that are as complex as the one you are suggesting, I would suggest simply ending your php block before the output. For instance:

<?php
    if($outputDiv1){?>
       <div id="1">Plain old unescaped html code</div>
     <?php }else{ //output div 2 ?>
        <div id="2">More html</div>
     <?php } ?>

I find this method is far easier. If you need at access a php variable from within the html, you simply open up another php block like <input name="name" type="text" value="<?php echo $someVal; ?>" />

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜