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
    700

    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", 0 => '3', 1 => 'stingerrgb', 2 => '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 12:18 PM.

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

  3. #3
    Join Date
    Apr 2007
    Posts
    1,666
    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 ';
        }

    Anti Linux rants are usually the result of a lack of Linux experience, while anti Windows rants are usually a result of a lot of Windows experience.

  4. #4
    Join Date
    Oct 2008
    Location
    Seattle, Wa
    Posts
    700
    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,666
    looks reasonable to me.
    Anti Linux rants are usually the result of a lack of Linux experience, while anti Windows rants are usually a result of a lot of Windows experience.

  6. #6
    Join Date
    Oct 2008
    Location
    Seattle, Wa
    Posts
    700
    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 03:04 PM.

  7. #7
    Join Date
    Apr 2007
    Posts
    1,666
    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 03:59 PM.
    Anti Linux rants are usually the result of a lack of Linux experience, while anti Windows rants are usually a result of a lot of Windows experience.

  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,666
    +1
    Anti Linux rants are usually the result of a lack of Linux experience, while anti Windows rants are usually a result of a lot of Windows experience.

  10. #10
    Join Date
    Oct 2008
    Location
    Seattle, Wa
    Posts
    700
    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

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.42955 seconds
  • Memory Usage 3,007KB
  • Queries Executed 15 (?)
More Information
Template Usage (34):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (1)bbcode_html
  • (5)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (10)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (70):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates