www.webdeveloper.com
Results 1 to 10 of 10

Thread: [RESOLVED] Do once in a loop

  1. #1
    Join Date
    Oct 2008
    Location
    Seattle, Wa
    Posts
    695

    resolved [RESOLVED] Do once in a loop

    I'm using a WHILE loop right now, and on the first iteration I want to
    echo out some extra content. Pretty much just an extra LI tag, is there
    a way to do this other than what I'm doing here?

    PHP Code:
                        <?php 
                            
    function xV() {
                            GLOBAL 
    $video$root;
                            
                            
    # VAR List
                            
    $swfobj     =     $root.'swfobject/';
                            
    $options     =     'options={counterType:\'skip\',continuous:true,animSequence:\'sync\'};width=640;height=498;';
                            
    $string     =     '<a href="'.$swfobj.$video[1].$i.'_controller.swf?'.$video[1].$i.'.flv" rel="shadowbox['
                                            
    .$video[1].'];'.$options.'" title="'.$video[2].'"></a>';

                                isset( 
    $video['starter'] ) ? $i $starter $i 1;
                                
    $i str_pad$i2"0"STR_PAD_LEFT );
                                
                                
    # Once with LI tags
                                
    echo    "\n"."<li style='display:block;'>$string</li>";

                                
    # The rest in blank LI tags
                                
    echo    "\n".'<li style="display:none;">';
                                
                                    
    $i $i 1$a 0
                                    while ( 
    $i <= $a ): $t str_pad$i2"0"STR_PAD_LEFT );

                                        echo     
    "\n".$string
                                        
    $i++;

                                    endwhile;
                                    
                                echo    
    "\n".'</li>';
                            }
                        
    ?>
                      
                      
    <? # Stinger RGB ?><? $video = array("starter" => "0"=> '3'=> 'stingerrgb'=> 'Stinger RGB'); xV(); ?>
    So. What's going on here?
    The first iteration is enclosed in its own LI tags with display set to BLOCK.
    The rest of the iterations are enclosed in a single LI tag with display set
    to NONE. This effectively hides them from view, but loads them for my
    shadowbox viewer.

    Note:
    Code has just been written, and might be invalid.


    Here's \'Roughly\' what the end output should look like.
    HTML Code:
    <li><a href="http://omnisistem.com/swfobject/stingerrgb00_controller.swf?stingerrgb00.flv" rel="shadowbox[stingerrgb];options={counterType:'skip',continuous:true,animSequence:'sync'};width=640;height=498;" title="Stinger RGB">Stinger RGB</a></li>
    <li style="display:none;">
    	<a href="http://omnisistem.com/swfobject/stingerrgb01_controller.swf?stingerrgb01.flv" rel="shadowbox[stingerrgb];options={counterType:'skip',continuous:true,animSequence:'sync'};width=640;height=498;" title="Stinger RGB"></a> 
    	<a href="http://omnisistem.com/swfobject/stingerrgb02_controller.swf?stingerrgb02.flv" rel="shadowbox[stingerrgb];options={counterType:'skip',continuous:true,animSequence:'sync'};width=640;height=498;" title="Stinger RGB"></a> 
    	<a href="http://omnisistem.com/swfobject/stingerrgb03_controller.swf?stingerrgb03.flv" rel="shadowbox[stingerrgb];options={counterType:'skip',continuous:true,animSequence:'sync'};width=640;height=498;" title="Stinger RGB"></a>
    </li>
    Last edited by ehime; 09-09-2009 at 01:18 PM.

  2. #2
    Join Date
    Oct 2008
    Location
    Seattle, Wa
    Posts
    695
    Looks like my isset isn't working, other than that though....

  3. #3
    Join Date
    Apr 2007
    Posts
    1,664
    You could do it a few ways. Here's one example using isset() and unset();

    PHP Code:
    $firsttime=1;
    for(
    $i=0;$i<3;$i++){
        if(isset(
    $firsttime)){
            echo 
    'first time only ';
            unset(
    $firsttime);
        }else{
            echo 
    '2nd onwards ';
        }


  4. #4
    Join Date
    Oct 2008
    Location
    Seattle, Wa
    Posts
    695
    Don't use for loops alot but that was what I was thinking (sort of) before I made this while loop. So (technically speaking) it would look something like this?

    PHP Code:
     function xV() {
     GLOBAL 
    $video$root;
     
            
    # Prime Loop
            
    $i     =     isset( $video['starter'] ) ? $starter 1;
            
    $i     =     str_pad$i2"0"STR_PAD_LEFT );
            
    $a     =     $video[0] - 1;
            
    $b    =    1;

            
    # VAR List
            
    $swfobj     =     $root.'swfobject/';
            
    $options     =     'options={counterType:\'skip\',continuous:true,animSequence:\'sync\'};width=640;height=498;';
            
    $string     =     "\t".'<a href="'.$swfobj.$video[1].$i.'_controller.swf?'.$video[1].$i.'.flv" rel="shadowbox['
                            
    .$video[1].'];'.$options.'" title="'.$video[2].'">'.$video[2].'</a>';
            
            for( 
    $i $i$i $a$i++ ){
                if(isset(
    $b)){
                    echo    
    "\n"."<li style='display:block'>$string</li>";
                    unset(
    $b);

                } else {
                    echo     
    "\t".'<a href="'.$swfobj.$video[1].$i.'_controller.swf?'.$video[1].$i.'.flv"'
                            
    'rel="shadowbox['.$video[1].'];'.$options.'" title="'.$video[2].'">'.$video[2].'</a>';
            }
        } 


  5. #5
    Join Date
    Apr 2007
    Posts
    1,664
    looks reasonable to me.

  6. #6
    Join Date
    Oct 2008
    Location
    Seattle, Wa
    Posts
    695
    This worked here. Looks like about the same amount of code but *shrugs
    Anything you see I can tighten up, or cut corners on SyCo?

    PHP Code:
     function xV() {
     GLOBAL 
    $video$root;
     
            
    # Prime Loop
            
    $i     =     isset( $video['starter'] ) ? $starter 1;
            
    $i     =     str_pad$i2"0"STR_PAD_LEFT );
            
    $a     =     $video[0];
            
    $b    =    1;

            
    # VAR List
            
    $swfobj     =     $root.'swfobject/';
            
    $options     =     'options={counterType:\'skip\',continuous:true,animSequence:\'sync\'};width=640;height=498;';
            
    $string     =     "\t".'<a href="'.$swfobj.$video[1].$i.'_controller.swf?'.$video[1].$i.'.flv" rel="shadowbox['
                            
    .$video[1].'];'.$options.'" title="'.$video[2].'">'.$video[2].'</a>';
            
            for( 
    $i $i$i $a$i++ ){
                if(isset(
    $b)){
                    echo    
    "\n"."<li style='display:block'>$string</li>";
                    echo    
    "\n".'<li style="display:none;">';
                    unset(
    $b);

                } else {     
    $i    =    str_pad$i2"0"STR_PAD_LEFT );
                
            echo     
    "\n\t"."$string";
                    }
                } 
            echo    
    "\n".'</li>';

    Last edited by ehime; 09-09-2009 at 04:04 PM.

  7. #7
    Join Date
    Apr 2007
    Posts
    1,664
    Just watch you variable names. Single letters get cryptic to anyone else and you in six months. $i is usually is just the iteration. $i=$something_else is clearer.

    If you need an <li>blah</li> on each iteration then it's like this.
    PHP Code:
    for( $i $i$i $a$i++ ){
        if(isset(
    $b)){
            echo    
    "\n"."<li style='display:block'>$string</li>";
            unset(
    $b);
        } else {     
            
    $i    =    str_pad$i2"0"STR_PAD_LEFT );// your counter will get rewritten here. might give unpredictable results
            
    echo     "\n".'<li style="display:none;">'."\n\t"."$string"."\n".'</li>';
        }

    Last edited by SyCo; 09-09-2009 at 04:59 PM.

  8. #8
    Join Date
    Nov 2008
    Posts
    2,477
    I'd also get rid of those globals and pass them in as arguments. Globals are evil.

  9. #9
    Join Date
    Apr 2007
    Posts
    1,664
    +1

  10. #10
    Join Date
    Oct 2008
    Location
    Seattle, Wa
    Posts
    695
    Cool, thanks guys, you kickass!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles