1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

HTML in PHP: Which method is better?

Discussion in 'PHP' started by swift_lee_o, Mar 25, 2013.

  1. GMF

    GMF Well-Known Member

    Messages:
    855
    Likes Received:
    113
    Best Answers:
    19
    Trophy Points:
    145
    #21
    So: You use a template engine (like smarty) above another "template" engine (PHP) and that's somehow better for a team?


    Doesn't make much sense to me.



    Also: Why resort to insults?
     
    GMF, Apr 4, 2013 IP
  2. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #22
    In huggy's defense, I do call it idiotic; many people cannot separate attacking the work from attacking the person even when they ARE two different things -- which is why they resort to the personal attack instead of legitimately defending the work or attacking the opposing methodology... and it DOES qualify as another "Dumb enough" in my book, so you COULD say I called the people who use it dumb, or idiots... So it's just a response in kind; even if it does draw false assumptions.

    Even if most of the people on that opposing viewpoint do garbage like make their keywords and description match, put phrases in their keywords then wonder why it's ignored, non-semantic markup, title attributes that match the contents of their anchors, title attributes on IMG idential to the ALT text, gibberish nonsensical use of numbered headings, clearing DIV like it's still 2001, HTML 3.2 masquerading as HTML thanks to it being a tranny (It's a TRAP I tell you) or slapping 5's lip service around decade and a half out of date coding methodologies -- and of course don't forget the miserable steaming fail design trifecta of fixed width layout, px metric fonts, and illegible color contrasts while not understanding why their website is an inaccessible train wreck of how not to build same.

    Then they have the cojones to call themselves a designer, developer or anything else of that nature when truth is they need to do the world a favor, back the **** away from the keyboard and take up something a bit less dangerous like macramé.

    Jokes aside, seriously -- how is putting markup in template.php type files in functions, passing values as parameters or in global space (I prefer read-only singletons if going that route) any different from templating systems apart from having to say "function", maybe having to keep your quotes straight (which if outputting from a database means you shouldn't need to worry about singles if you use singles), any harder or different from these garbage templating systems? Well, apart from the reduction in overhead, memory use and processing time...

    Seriously, let's take the retard broken HTML 3.2 example off smarty.net:

    guestbook.tpl
    {* Smarty *}
    
    <table border="0" width="300">
      <tr>
        <th colspan="2" bgcolor="#d1d1d1">
          Guestbook Entries (<a href="{$SCRIPT_NAME}?action=add">add</a>)</th>
      </tr>
      {foreach from=$data item="entry"}
        <tr bgcolor="{cycle values="#dedede,#eeeeee" advance=false}">
          <td>{$entry.Name|escape}</td>        
        <td align="right">
          {$entry.EntryDate|date_format:"%e %b, %Y %H:%M:%S"}</td>        
        </tr>
        <tr>
          <td colspan="2" bgcolor="{cycle values="#dedede,#eeeeee"}">
            {$entry.Comment|escape}</td>
        </tr>
        {foreachelse}
          <tr>
            <td colspan="2">No records</td>
          </tr>
      {/foreach}
    </table>
    Code (markup):
    and this is 'easier' than: (Excuse me as I drag it kicking and screaming into the previous century instead of a century and a half ago)

    <?php
    
    function template_guestbook($scriptName,$data) {
    	echo '
    		<div class="guestbook">
    			<h2>
    				Guestbook Entries
    				(<a href="',$scriptName,'?action=add">add</a>)
    			</h2>';
    	
    	if (count($data)==0) {
    	
    		echo '
    			<p>No Records</p>';
    	
    	} else foreach ($data as $entry) {
    	
    		echo '
    			<div class="entry">
    				<h3>
    					<span>',htmlspecialchars($entry['Name']),'</span>
    					',date('e b, Y H:M:S',$entry['entryDate']),'
    				</h3>
    				',htmlspecialchars($entry['comment']),'
    			<!-- .entry -->';
    		
    	}
    	
    	echo '
    		<!-- .guestBook --></div>';
    }
    Code (markup):
    I don't get where there's enough difference for using a templating 'system' to matter ... or how there's ANY advantage to doing so, particularly when you can combine code used for the same functions into single includes thanks to using functions! This way you don't have to hunt through hundreds of files just to figure out which ones rely on each-other; which is where 'templating systems' typically fall flat on their face. They make MORE WORK, not less.

    Of course the changes from their original markup are from my understanding how to write HTML, and their having their heads firmly wedged up 1997's arse! Though admittedly that's typical of the crap most people using systems like smarty seem to think markup should be.
     
    deathshadow, Apr 4, 2013 IP
  3. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #23
    Way, WAY OT...
    That too is guessing -- just turned 42 legally and 44 actual -- long story. Thanks Commiewealth of Taxachusetts!
     
    deathshadow, Apr 4, 2013 IP
  4. nico_swd

    nico_swd Prominent Member

    Messages:
    4,153
    Likes Received:
    344
    Best Answers:
    18
    Trophy Points:
    375
    #24
    Do you cache your parsed 'function' templates as well?
     
    nico_swd, Apr 4, 2013 IP
  5. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #25
    Heh, yeah... something APC, eAccellerator, or any other decent PHP code cache would do if one just used PHP in the first place instead of these stupid pointless templating systems?
     
    deathshadow, Apr 4, 2013 IP
  6. EricBruggema

    EricBruggema Well-Known Member

    Messages:
    1,740
    Likes Received:
    28
    Best Answers:
    13
    Trophy Points:
    175
    #26

    1. I totaly don't agree with your example of putting everything in a echo.

      I always try to keep my HTML and CODE seperate just for the fact that its more readable if you do so.

      As the shown code should be like this in my case

      
      <table border="0" width="300">
        <tr>
          <th colspan="2" bgcolor="#d1d1d1">
            Guestbook Entries (<a href="{$SCRIPT_NAME}?action=add">add</a>)</th>
        </tr>
      <?php if (isset($data) && count($data) > 0) { ?>
      <?php     $cnt=0; foreach($data AS $item) { $cnt++;?>
          <tr bgcolor="#<?php echo ($cnt%2) ? 'dedede' : 'eeeeee';?>">
            <td><?php echo escape($item['name']);?></td>        
          <td align="right">
            <?php echo date("%e %b, %Y %H:%M:%S", $item['date']); ?></td>        
          </tr>
          <tr>
            <td colspan="2" bgcolor="#<?php echo ($cnt%2) ? 'dedede' : 'eeeeee';?>">
              <?php echo escape($item['comment']); ?></td>
          </tr>
          <?php } } else { ?>
            <tr>
              <td colspan="2">No records</td>
            </tr>
      <?php } ?>
      </table>
      
      PHP:
      It has to plusses, one its easy to read (especialy for php scripters) and secondly its great if you need to adjust only things at the html/template side. I never recommend to put html into functions and echo the whole content.
      Oh and a third plus is, that you don't have to use smarty or somekind of template engine. I've made my own template engine a long time ago and a couple of years i saw what it did to my old code... it made it slower, more complex and less usable...
     
    EricBruggema, Apr 4, 2013 IP
  7. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #27
    See, I don't find that easy to read at ALL, it's in fact many times HARDER to read, especially the ACTUAL PHP part... of course even AS opening and closing PHP you're doing it too damned much for NO REASON...

    Seriously:
    
    <?php if (isset($data) && count($data) > 0) { ?>
    <?php     $cnt=0; foreach($data AS $item) { $cnt++;?>
    
    Code (markup):
    Do we see a pointless here?!? that's what I'm usually on about when I say "on every line for NO reason".

    Retaining the retard 1997 broken markup... Just so we can apples to apples. (I would NEVER write HTML that way)

    <?php
    
    echo '
    	<table border="0" width="300">
    		<tr>
    			<th colspan="2" bgcolor="#d1d1d1">
    				Guestbook Entries (<a href="', $SCRIPT_NAME, '?action=add">add</a>)
    			</th>
    		</tr>';
    		
    if (isset($data) && count($data) > 0) {
    	$cnt=0;
    	foreach ($data AS $item) echo '
    		<tr bgcolor="#', (++$cnt % 2) ? 'dedede' : 'eeeeee' , '">
    			<td>', htmlspecialchars($item['name']), '</td>        
    			<td align="right">
    				', date("%e %b, %Y %H:%M:%S", $item['date']), '
    			</td>        
    		</tr><tr>
    			<td colspan="2" bgcolor="#', ($cnt % 2) ? 'dedede' : 'eeeeee', '">
    				', htmlspecialchars($item['comment']), '
    			</td>
    		</tr>';
    
    } else echo '
    	<tr>
    		<td colspan="2">No records</td>
    	</tr>';
    
    echo '
    	</table>';
    	
    ?>
    Code (markup):
    REALLY don't see the advantage to that constant opening and closing of PHP apart from making it less clear and harder to work with. It's clear as {rather nasty string of expletives} mud! That's why as a rule I only have ONE <?php and ?> pair per FILE, anything else feels like wading through a pool of filth to try and find.... anything. (and speaking of filth, I feel like I need a shower after just dealing with that nauseatingly bad idiotic sleazeball markup...)

    To be frank (when am I ever anything but) when I see that STUPID MALFING <?php ?> on EVERY blasted line, like the absolute garbage train wreck of idiocy known as Turdpress, I have the overwhelming urge to pimp-slap someone hard enough for them to see the curvature of the earth.

    Though there's also a reason I use the CODE bbcode instead of PHP --- I also find color syntax highlighting to be a useless illegible train wreck of idiocy that I wish we could stamp out. If I wanted psychedelics like that I'd pop some acid and go to a 'Dead concert.

    Though even so, what you did is STILL far superior to any of that template engine idiocy, so at least we're on the same page there. :D
     
    Last edited: Apr 5, 2013
    deathshadow, Apr 5, 2013 IP
  8. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #28
    Oh, and I could MAYBE be convinced that this is acceptable, though it needs either shorttags or php 5.4

    
    <table border="0" width="300">
    	<tr>
    		<th colspan="2" bgcolor="#d1d1d1">
    			Guestbook Entries (<a href=" <?= $SCRIPT_NAME ?>?action=add">add</a>)
    		</th>
    	</tr>
    	
    <?php
    if (isset($data) && count($data) > 0) {
    	foreach ($data AS $item) {
    		$bgColor = $bgColor=='EEEEEE' ? 'DEDEDE' : 'EEEEEE';
    ?>
    	<tr bgcolor="#<?= $bgColor ?>">
    		<td><?= htmlspecialchars($item['name']) ?></td>        
    		<td align="right">
    			<?= date("%e %b, %Y %H:%M:%S", $item['date']) ?>
    		</td>        
    	</tr>
    	<tr bgcolor="#<?= $bgColor ?>">
    		<td>
    			<?= htmlspecialchars($item['comment']) ?>
    		</td>
    	</tr>
    <?php	} else { ?>
    	<tr>
    		<td colspan="2">No records</td>
    	</tr>
    <?php } ?>
    
    </table>
    Code (markup):
    Since it doesn't do it on EVERY blasted line, resort to echo inside the PHP's (well, kind-of) in which case why not echo the whole blasted thing, etc, etc... but it's still ugly as sin to me and goes against some 35 years of coding common sense.

    The laugh being this version is damned near identical to most 'templating' languages.
     
    deathshadow, Apr 5, 2013 IP
  9. EricBruggema

    EricBruggema Well-Known Member

    Messages:
    1,740
    Likes Received:
    28
    Best Answers:
    13
    Trophy Points:
    175
    #29
    I agree with your last post. Normaly i open <? and close it after done all PHP code but i'm never again using <?= coz there are alot of servers that doesn't allow that and only work with <?php.

    In your lastpost you seperate the HTML from the PHP code and that's much better then echoing everything between ' and ' or if you wish " and " but then you need to escape all ' or "'s lol.

    And to quote your last line, yes your right but now you don't have to use the resources of a template system... so they way is code -> template -> output and not code -> template parser -> template -> output.

    Oh and to quote this
    Why parsing data you don't have to execute? its like going to the store with 10 bags when you only need one.. (just made this up lol)
     
    EricBruggema, Apr 5, 2013 IP
  10. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #30
    With php 5.4 forcing the issue that number of servers should be decreasing... which is the only reason I'd consider it.

    Thing is you shouldn't EVER have enough single quotes for it to matter if you are using singles. You might have what, two on an entire page if data's being pulled from a DB, if that? - much less static texts should also be stored in a lookup if what you are writing is going to have language/internationalization options anyhow.

    Since php is bytecode interpreted with separate parsing and execution stages, and because it has to look for <?php ?> anyways, how is it any different? The answer is it isn't -- the strings that would be inside echo end up stored and parsed pretty much the same way anything outside <?php ?> is anyways. There really should be no functional difference, particularly at runtime. (most of the time people benchmark it the only reason anythings faster/slower than anything else is the ORDER they test things in and broken bench methods).

    Think about it -- the parser normally has to look for <?php all the time, <?= on 5.4 and <? or <?= when shorttags is enabled... single quotes in echo it has to look for a single quote or an escaped single quote -- what's the difference? At the parsing stage? Nothing at all.

    But again, just from a "make it work like a real programming language instead of this scripting crap" point of view, I still say <?php, <?, <?= and ?> should be stricken from PHP entirely.
     
    deathshadow, Apr 5, 2013 IP
  11. nico_swd

    nico_swd Prominent Member

    Messages:
    4,153
    Likes Received:
    344
    Best Answers:
    18
    Trophy Points:
    375
    #31
    Honestly, I don't see the big issue with using templates. The function thing is just ugly as hell and kinda makes me want to throw up in my mouth. Plus it makes switching or offering multiple templates harder. And it's not that much of an overload if you cache your parsed templates. You only parse it when needed, and fetch the cached one otherwise. All loops and what not only run once to build the whole page, and then it's ready for the next request until the cached page expires.
     
    nico_swd, Apr 5, 2013 IP
  12. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #32
    Wondering if you're just not getting it, or if we're talking two different things since to me, "templating systems" give me that reaction... Templating "systems" on top of PHP when PHP IS a templating system, is nauseatingly bad. But to be fair, can you imagine how boring the world would be if we all agreed on everything.

    HOW? Just change directories. It's often EASIER since ALL you need to do is change the path to another dir.

    /theme/default/index.template.php -- contains theme_header and theme_footer, and any other elements used on all pages
    /theme/default/screen.css -- CSS for "screen, projection, tv"
    /theme/default/images/ -- directory containing all presentational images for the theme, as called by screen.css

    /theme/blackCarbon/index.template.php -- Hmm...

    If one can do it with the CSS, why not the includes? How is that ANY harder than some dumbass templating system...

    ... and if the functions 'upset' you, instead of one .tpl file for each section as per smarty, just include a .php file... net difference ZERO!

    Change the include, new skin... NOT rocket science. Don't see how that's "harder" -- seems simpler to me. Especially with things like the header, footer, menu all in one nice easy file instead of hunting all over the blasted place to figure out what the *** some other coder called it, where the **** it is, or even worse what the devil else it's calling.

    See myBB -- tried skinning that a few months ago, after a week of struggling with that pile of shit I ended up telling the person I was doing it for exactly where they could stick it! Sent me yelling and screaming back to SMF. (which is no beauty queen, particularly on markup, but at least it's skinning system makes SENSE)

    Assuming you mean overhead not overload... Assuming that it's content that doesn't update very often; useless for things like forums, or CMS where people actually reply often, etc, etc... Assuming you mean caching output, which in my experience things like Varnish and other output cache tend to crap all over any server that runs it in terms of functionality. (I hit F5 I actually expect an updated page as a user) -- but then I say the same thing about this idiotic micromanagement of caching you see people doing with headers... maybe if people didn't blow hundreds of K of markup on doing tens of K's job, separated out presentation, and bothered writing efficient server side code, they wouldn't have to play those dumbass retard games with the output!

    But no, that would be too easy a solution that doesn't involve throwing more tech at it for no good reason.
     
    Last edited: Apr 5, 2013
    deathshadow, Apr 5, 2013 IP
  13. annaharris

    annaharris Active Member

    Messages:
    119
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    51
    #33
    I would recommend second option, which is easier to see mark-up.
     
    annaharris, Apr 13, 2013 IP
  14. Strider64

    Strider64 Member

    Messages:
    40
    Likes Received:
    13
    Best Answers:
    1
    Trophy Points:
    25
    #34
    From a stand point of designing for the web, I am starting to like option 2. For when I'm in a browser and do a CTRL-U just to at look at the browser's html I like seeing nicely formatted html and option 2 gives you that.

    Besides you can always use comments, which you should be doing anyways when using or not using templates.

    Here's a small snippet of code from something that I'm working on.

     <div id="main-accordion">
          <?php foreach ($topic as $key=>$record) { // Loop through the Array to pull out the objects(records)?>
          <h3><?php echo $record->blog_name; // Display the Title of the Blog ?></h3>
          <p><?php echo  $record->content; // Display the Content of the Blog ?></p>
          <?php } // Closes the foreach loop ?>
      </div>
    PHP:
    I think if I have to come back to this code in a couple of months or even years I will still be able to figure out what the code does. Like I said I now like option 2, but the other options (along with using templates) can just be as good when good commenting and indentation is done. ;)
     
    Strider64, Apr 13, 2013 IP
  15. kmap

    kmap Well-Known Member

    Messages:
    2,215
    Likes Received:
    29
    Best Answers:
    2
    Trophy Points:
    135
    #35
    in my opinion second method is best

    I "may" be wrong

    Regards

    Alex
     
    kmap, Apr 13, 2013 IP
  16. lerell

    lerell Greenhorn

    Messages:
    17
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    11
    #36
    I'm using 2. option, but after what deathshadow wrote, i'm going to use echo 'foo ',$bar; style. Code looks better than in second option. Thanks
     
    lerell, Apr 14, 2013 IP
  17. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #37
    See, that's just wastefully bad coding -- and worse, piss poor commenting.

    FOREACH loops through an array? REALLY? Echoing out a element called content outputs the content? REALLY? Something called _name being output in a numbered heading is the title? REALLY? WE NEVER WOULD HAVE GUESSED!!! You've got descriptive names saying what things are, semantic markup saying what things are, and PHP operators that anyone who has any business looking at the code should know what they do -- as such what the blue blazes are those comments even there for!?!

    Much less that code shouldn't actually work. // is supposed to ignore until end of line -- so that would include your tag closings. The </h3> shouldn't even be output, and the <p> should throw an error for not being PHP. If PHP is obeying ?> on those, it's not even following it's own structural rules.

    Even if I was to use <?php ?> in the middle of a document, I'd never use it that way if all you're going to do is echo out values inside it.

    <div id="mainAccordion">
    <?php
    	foreach ($topic as $key => $record) {
    		echo '
    			<h3>',$record->blog_name,'</h3>
    			<p>',$record->content,'</p>';
    	}
    ?>
    <!-- #mainAccordion --></div>
    Code (markup):
    Far, FAR simpler, cleaner and easier to follow.

    Though it could be worse, isn't there another even goofier way of doing if statements inside <?php> involving colons or something? I've rarely seen it, but every time I do it's like a fist to the face of code legibility.
     
    deathshadow, Apr 14, 2013 IP
  18. Strider64

    Strider64 Member

    Messages:
    40
    Likes Received:
    13
    Best Answers:
    1
    Trophy Points:
    25
    #38
    I done it both ways now, I now I started to see your point that it's much easier to maintain the code this way. I feel like a flip-flopper for I've been going both ways on this issue a couple of times. :D:oops: By the way I had this seen the previous kind of coding from a book "Beginning PHP 5.3" though the rest of book seems to be OK. that portions surely isn't. What the saying "Those who can't do it, Teach"? Something like that. :D

            <?php
                  for ($x = 0; $x < count($blogs); $x++) {                                                                                             
                      echo '
                              <h3>' . $blogs[$x]->blog_name . '</h3>       
                              <div>
                                    <p>' . $blogs[$x]->content . '</p>';
               
                                    /* Check to see if the user is logged-in and check to see if they are the owner of the blog*/           
                                    if ($blogs[$x]->username == $_SESSION['user']['username']) {
                                            echo "<p><a href=\"editPage.php?id=" . urlencode($blogs[$x]->id) . "\" >Edit Page</a></p>";
                                    }                 
                                             
                                    for ($y = 0; $y < count($comments); $y++) {
                                        if ( $blogs[$x]->id == $comments[$y]->pages_id) { 
                                                                         
                                              echo '<p>Reply by ' . $comments[$y]->username . ' on ' . $comments[$y]->post_date . '</p>
                                              <p>' . $comments[$y]->content . '</p>';                                                               
                                        }                               
                                    }                                   
                      echo
                        '</div>';
                  }
            ?>                                
    PHP:
     
    Strider64, Apr 17, 2013 IP
  19. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,998
    Best Answers:
    253
    Trophy Points:
    515
    #39
    Suggestion, when using echo use singel quotes not doubles if you have doubles in the output, and use comma's instead of periods when using echo so the sub-strings are sent individually instead of being added together first.

    Again, the example:
    <?php
    function outIs() { echo 'is '; }

    echo 'this ',outIs(),'a test<br />';
    echo 'this '.outIs().'a test';
    [/code]
    Illustrates why, as it outputs:

    this is a test
    is this a test

    That'll leave you scratching your head for a moment, aff?

    Comma's use less memory on echo, and execute in order since each 'piece' between the comma's is sent one at a time... only use periods when you are adding string bits together like inside a inlined eval.

    Also, since there's mulitple of them wouldn't the reply-by lines be H4, since they're the start of each comment's subsection? What makes the edit button a grammatical paragraph? (I'd use a class on the anchor, set it to display:block)... and that REALLY looks like a job for FOREACH instead of FOR...

    <?php
    
    	foreach ($blogs as $blog) {
    		echo '
    			<h3>
    				' , $blog->blog_name , '
    			</h3>
    			<div>
    				<p>
    					' , $blog->content , '
    				</p>';
    		/*
    			Check to see if the user is logged-in and check to see if they are the owner of the blog
    		*/
    		if ($blog->username == $_SESSION['user']['username']) echo '
    				<a
    					href="editPage.php?id="' , urlencode($blog->id) , '"
    					class="editLink"
    				>Edit Page</a>';
    		}
    
    		foreach ($comments as $comment) {
    			if ( $blog->id == $comment->pages_id) echo '
    				<h4>
    					Reply by ' , $comment->username , ' on ' , $comment->post_date , '
    				</h4>
    				<p>
    					' , $comment->content , '
    				</p>';
    		}
    
    		echo '
    			</div>';
    	}
    
    ?>
    Code (markup):
    Notice that by matching up the whitespace it's easier to find the vars too -- and it's easier to debug the output as well; something many PHP dev's seem to thumb their noses at then spend twice as long hunting down validation errors. (Assuming they even bother)
     
    deathshadow, Apr 17, 2013 IP
  20. Strider64

    Strider64 Member

    Messages:
    40
    Likes Received:
    13
    Best Answers:
    1
    Trophy Points:
    25
    #40
    I just have to say that worked like a charm, thanks that definitely makes debugging much much easier and this keeps the html markup looking nice. Thank You for the help and I'm definitely crossing 2 off ( I think it was 2?) the list and never ever going to contemplate that ever again.:)

    John
     
    Strider64, Apr 18, 2013 IP