Computer Science Canada Had a small problem with a PHP script |
Author: | raidercom [ Sun Apr 27, 2008 9:34 am ] |
Post subject: | Had a small problem with a PHP script |
I hate to do this on my first post, but I needed some help, and I remembered this board from High School. My problem is that I have information stored in a database with 3 fields Number, Name, and Got It is a list of items, the number related to that item, and whether I have it or not. ex: 1 Series 1 2 Series 1 3 Series 1 4 Series 0 5 Series 1 6 Series 1 In this example, I there are 6 books in the series, and I have 5 of them. I want my PHP to output that I have Have: 1-3,5-6 Need: 4 So far, I can make it display 1,2,3,5,6, but that looks really ugly when I have around 50-60 items in a list. I was wondering if anyone could help me create a function for this. I have tried to think about how to do this, but I cannot think of a way. Any help that could be offered would be appreciated. Thanks Jeff |
Author: | jernst [ Sun Apr 27, 2008 9:45 am ] |
Post subject: | Re: Had a small problem with a PHP script |
You could use a loop to check consecutive numbers in an array, print the first number, a dash and then the last consecutive number. Then every time you get a missing number, you add that to a separate list or separate array or whatever to be printed later as the missing ones. Then resume checking for the remaining portion of the array for the consecutive numbers again. |
Author: | raidercom [ Sun Apr 27, 2008 9:55 am ] |
Post subject: | Re: Had a small problem with a PHP script |
Thanks, I will do that. I cannot believe I didn't think of that... Thank you for your fast reply. |
Author: | raidercom [ Sun Apr 27, 2008 8:55 pm ] |
Post subject: | Re: Had a small problem with a PHP script |
This is what I have right now, but I keep getting a lot of fluky results. $result = array (1); //test1 $result = array (1, 2);//2 $result = array (1, 2, 3);//3 $result = array (1, 3);//4 $result = array (1, 3, 4);//5 $result = array (1, 2, 4, 5);//6 $result = array (1, 2, 4, 5, 8);//7 $Continuous = 3; $LastNum = 0; $TotalRuns = count($result); for ($a = 0; $a < $TotalRuns; $a ++) { if ($a == 0) { $Continuous = 1; echo $result [$a]; $LastNum = $result [$a]; } elseif ($a == $TotalRuns - 1) { if ($result [$a] - 1 == $LastNum) { $Continuous = 1; echo '-' , $result [$a]; } else { echo ',' , $result [$a]; $LastNum = $result [$a]; $Continuous = 0; } } else { if ($LastNum + 1 == $result [$a]) { $Continuous = 1; $LastNum = $result [$a]; } else { if ($Continuous == 1) { if ($a > 1) { echo '-' , $LastNum; echo ',' , $result [$a]; $LastNum = $result [$a]; } else { echo ',' , $result [$a]; $LastNum = $result [$a]; } } else { echo ',' , $result [$a]; $LastNum = $result [$a]; } $Continuous = 0; } } } I'm uncertain as to how to do this better, because this way doesn't appear to work. Any help would be appreciated. Jeff |
Author: | raidercom [ Sun Apr 27, 2008 9:06 pm ] |
Post subject: | Re: Had a small problem with a PHP script |
Also tried something along the lines of: $TotalRuns = count($result); for ($a = 0; $a < $TotalRuns; $a ++) { if ($a == 0) { echo $result [$a]; } if ($result [$a] + 1 == $result [$a + 1]) { $Continuous = 1; //echo "asdsada" . $a . "asdsad"; } else { if ($Continuous == 1) { echo '-' , $result [$a]; } else {; if ($a <> 0) { echo ',' , $result [$a]; } } $Continuous = 0; } } |
Author: | raidercom [ Sun Apr 27, 2008 9:09 pm ] |
Post subject: | Re: Had a small problem with a PHP script |
Think I fixed it now: If anyone can see any problems with my code, I would appreciate feedback. $TotalRuns = count($result); for ($a = 0; $a < $TotalRuns; $a ++) { if ($a == 0) { echo $result [$a]; } if ($result [$a] + 1 == $result [$a + 1]) { if ($Continuous == 0) { if ($a <> 0) { echo ',' , $result [$a]; } } $Continuous = 1; //echo "asdsada" . $a . "asdsad"; } else { if ($Continuous == 1) { echo '-' , $result [$a]; } else {; if ($a <> 0) { echo ',' , $result [$a]; } } $Continuous = 0; } } Thanks Jeff |