While Loop Problem

Discussion in 'PHP' started by MrLeN, Dec 19, 2012.

  1. #1
    I have this code:

    
    <?php
    $i=1;
    while($i<=50)
      {
      echo '<div class="s02-0' . $i . '">&nbsp;</div>';
      $i++;
      }
    ?>
    
    Code (markup):
    $i outputs numbers from 1 to 50

    ..but I need it to outpout from 01 to 50.

    I need it to output:

    
    <div class="s02-01">&nbsp;</div>
    <div class="s02-02">&nbsp;</div>
    <div class="s02-03">&nbsp;</div>
    <div class="s02-04">&nbsp;</div>
    <div class="s02-05">&nbsp;</div>
    <div class="s02-06">&nbsp;</div>
    <div class="s02-07">&nbsp;</div>
    <div class="s02-08">&nbsp;</div>
    <div class="s02-09">&nbsp;</div>
    <div class="s02-10">&nbsp;</div>
    etc..
    
    Code (markup):
    NOT:

    
    <div class="s02-1">&nbsp;</div>
    <div class="s02-2">&nbsp;</div>
    <div class="s02-3">&nbsp;</div>
    <div class="s02-4">&nbsp;</div>
    <div class="s02-5">&nbsp;</div>
    <div class="s02-6">&nbsp;</div>
    <div class="s02-7">&nbsp;</div>
    <div class="s02-8">&nbsp;</div>
    <div class="s02-9">&nbsp;</div>
    <div class="s02-10">&nbsp;</div>
    etc..
    
    Code (markup):
     
    MrLeN, Dec 19, 2012 IP
  2. MrLeN

    MrLeN Well-Known Member

    Messages:
    406
    Likes Received:
    8
    Best Answers:
    0
    Trophy Points:
    120
    #2
    This is the best I can come up with so far. It works, but I am not convinced it's the most efficient way of doing things:

    
    <?php
    $i=1;
    while($i<=50)
      {
    	if ($i<=9) {
    		echo '<div class="s01-0' . $i . '">&nbsp;</div>';
    	}
    	else {
    	  echo '<div class="s01-' . $i . '">&nbsp;</div>';
    	}
      
      $i++;
      }
    ?>
    
    Code (markup):
     
    MrLeN, Dec 19, 2012 IP
  3. MrLeN

    MrLeN Well-Known Member

    Messages:
    406
    Likes Received:
    8
    Best Answers:
    0
    Trophy Points:
    120
    #3
    Now, if anyone can show me how to replicate that code again another 50 times (from "s01-$1" to "s50-$1"), that would be great.

    You will have helped me change a page with literally 2,500 hard coded html lines into a pretty while loop.
     
    MrLeN, Dec 19, 2012 IP
  4. MrLeN

    MrLeN Well-Known Member

    Messages:
    406
    Likes Received:
    8
    Best Answers:
    0
    Trophy Points:
    120
    #4
    ie: I am tryuing to output

    
    <div class="s01-01">&nbsp;</div>
    <div class="s01-02">&nbsp;</div>
    <div class="s01-03">&nbsp;</div>
    <div class="s01-04">&nbsp;</div>
    <div class="s01-05">&nbsp;</div>
    <div class="s01-06">&nbsp;</div>
    <div class="s01-07">&nbsp;</div>
    <div class="s01-08">&nbsp;</div>
    <div class="s01-09">&nbsp;</div>
    <div class="s01-10">&nbsp;</div>
    <div class="s01-11">&nbsp;</div>
    <div class="s01-12">&nbsp;</div>
    <div class="s01-13">&nbsp;</div>
    <div class="s01-14">&nbsp;</div>
    <div class="s01-15">&nbsp;</div>
    <div class="s01-16">&nbsp;</div>
    <div class="s01-17">&nbsp;</div>
    <div class="s01-18">&nbsp;</div>
    <div class="s01-19">&nbsp;</div>
    <div class="s01-20">&nbsp;</div>
    <div class="s01-21">&nbsp;</div>
    <div class="s01-22">&nbsp;</div>
    <div class="s01-23">&nbsp;</div>
    <div class="s01-24">&nbsp;</div>
    <div class="s01-25">&nbsp;</div>
    <div class="s01-26">&nbsp;</div>
    <div class="s01-27">&nbsp;</div>
    <div class="s01-28">&nbsp;</div>
    <div class="s01-29">&nbsp;</div>
    <div class="s01-30">&nbsp;</div>
    <div class="s01-31">&nbsp;</div>
    <div class="s01-32">&nbsp;</div>
    <div class="s01-33">&nbsp;</div>
    <div class="s01-34">&nbsp;</div>
    <div class="s01-35">&nbsp;</div>
    <div class="s01-36">&nbsp;</div>
    <div class="s01-37">&nbsp;</div>
    <div class="s01-38">&nbsp;</div>
    <div class="s01-39">&nbsp;</div>
    <div class="s01-40">&nbsp;</div>
    <div class="s01-41">&nbsp;</div>
    <div class="s01-42">&nbsp;</div>
    <div class="s01-43">&nbsp;</div>
    <div class="s01-44">&nbsp;</div>
    <div class="s01-45">&nbsp;</div>
    <div class="s01-46">&nbsp;</div>
    <div class="s01-47">&nbsp;</div>
    <div class="s01-48">&nbsp;</div>
    <div class="s01-49">&nbsp;</div>
    <div class="s01-50">&nbsp;</div>
    
    <div class="s02-01">&nbsp;</div>
    <div class="s02-02">&nbsp;</div>
    <div class="s02-03">&nbsp;</div>
    <div class="s02-04">&nbsp;</div>
    <div class="s02-05">&nbsp;</div>
    <div class="s02-06">&nbsp;</div>
    <div class="s02-07">&nbsp;</div>
    <div class="s02-08">&nbsp;</div>
    <div class="s02-09">&nbsp;</div>
    <div class="s02-10">&nbsp;</div>
    <div class="s02-11">&nbsp;</div>
    <div class="s02-12">&nbsp;</div>
    <div class="s02-13">&nbsp;</div>
    <div class="s02-14">&nbsp;</div>
    <div class="s02-15">&nbsp;</div>
    <div class="s02-16">&nbsp;</div>
    <div class="s02-17">&nbsp;</div>
    <div class="s02-18">&nbsp;</div>
    <div class="s02-19">&nbsp;</div>
    <div class="s02-20">&nbsp;</div>
    <div class="s02-21">&nbsp;</div>
    <div class="s02-22">&nbsp;</div>
    <div class="s02-23">&nbsp;</div>
    <div class="s02-24">&nbsp;</div>
    <div class="s02-25">&nbsp;</div>
    <div class="s02-26">&nbsp;</div>
    <div class="s02-27">&nbsp;</div>
    <div class="s02-28">&nbsp;</div>
    <div class="s02-29">&nbsp;</div>
    <div class="s02-30">&nbsp;</div>
    <div class="s02-31">&nbsp;</div>
    <div class="s02-32">&nbsp;</div>
    <div class="s02-33">&nbsp;</div>
    <div class="s02-34">&nbsp;</div>
    <div class="s02-35">&nbsp;</div>
    <div class="s02-36">&nbsp;</div>
    <div class="s02-37">&nbsp;</div>
    <div class="s02-38">&nbsp;</div>
    <div class="s02-39">&nbsp;</div>
    <div class="s02-40">&nbsp;</div>
    <div class="s02-41">&nbsp;</div>
    <div class="s02-42">&nbsp;</div>
    <div class="s02-43">&nbsp;</div>
    <div class="s02-44">&nbsp;</div>
    <div class="s02-45">&nbsp;</div>
    <div class="s02-46">&nbsp;</div>
    <div class="s02-47">&nbsp;</div>
    <div class="s02-48">&nbsp;</div>
    <div class="s02-49">&nbsp;</div>
    <div class="s02-50">&nbsp;</div>
    
    Code (markup):
    , and s03 and s04, etc -- all the way to 50 (2,500 lines), with as little code as possible.

    Anything is better than 2,500 hard coded lines. It's taking a couple of seconds for the browser to render that code.

    PLUS, there's about 10 associated files (css, php includes, etc), some have 25,000 HARD CODED lines (I kid you not).

    So, once I have the principal to handle this kind of thing, hopefully I can start changing those 25,000 line pages to 100 line pages.
     
    MrLeN, Dec 19, 2012 IP
  5. MrLeN

    MrLeN Well-Known Member

    Messages:
    406
    Likes Received:
    8
    Best Answers:
    0
    Trophy Points:
    120
    #5
    This is solved now.

    Thanks for all your help.

    I could't have done this without you!

    Solution
     
    MrLeN, Dec 19, 2012 IP
  6. crazyblogger

    crazyblogger Active Member

    Messages:
    430
    Likes Received:
    5
    Best Answers:
    1
    Trophy Points:
    63
    #6
    What about php number format function. Please check that out. It might solve your problem.
     
    crazyblogger, Dec 20, 2012 IP
  7. glagokulan

    glagokulan Greenhorn

    Messages:
    10
    Likes Received:
    0
    Best Answers:
    1
    Trophy Points:
    11
    #7
    Here is your solution,

    <?php
    for($i=0;$i<=50;$i++)
    echo '<div class="s02-s',str_pad($i, 2, "0", STR_PAD_LEFT),'">&nbsp;</div>';
    ?>

    Hope it will help you...
     
    glagokulan, Dec 20, 2012 IP
  8. satish68

    satish68 Greenhorn

    Messages:
    31
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    6
    #8
    or you can check length of $i in the loop before you echo it with the div. if the length is 1 echo "0".$i else echo $i. put this code in a your own defined function. so that you can call it 50 times . just remember that use $i as a local variable of a function.
     
    satish68, Dec 24, 2012 IP