Author |
Message |
Dawg
RavenNuke(tm) Development Team

Joined: Nov 07, 2003
Posts: 928
|
Posted:
Mon Feb 11, 2008 6:49 am |
|
Greetings all,
I have a loop that is driven me nutz!
Here is the deal...
I am pulling info from a dbase and inserting it in some html for display.
Code:for($m=0; $m < sql_num_rows($resultboats, $dbi); $m++) {
list(BlaBlaBla) = sql_fetch_row($resultboats, $dbi);
$content = <<<END
and bunch of html calling out the $vars....
END;
}
|
If I call content inside the loop it displays the html as expected. The problem is if I have more that 2 records it will push it off the page. (The HTML containes tables that are set to %50 width)
I need it to insert a newline or break every 2 $contents. I know how increment works but I can not seem to get to insert the break.
Just to make sure ya'll understand what I am trying to do....let's say I have 10 records coming from the dbase. What I want to do is loop through 2 records....insert a newline or break....then loop through the next two records....insert a newline or break.....loop through the next 2 records...etc.
Thank You for the help!
Dawg |
|
|
|
 |
Gremmie
Former Moderator in Good Standing

Joined: Apr 06, 2006
Posts: 2415
Location: Iowa, USA
|
Posted:
Mon Feb 11, 2008 8:31 am |
|
Here is a loop that outputs something every 2 iterations.
Code:
$i = 0;
for ($m = 0; $m < 20; ++$m)
{
if (++$i % 2 == 0)
{
echo '<br />';
}
}
|
|
_________________ Only registered users can see links on this board! Get registered or login! - An Event Calendar for PHP-Nuke
Only registered users can see links on this board! Get registered or login! - A Google Maps Nuke Module |
|
|
 |
Dawg

|
Posted:
Mon Feb 11, 2008 8:46 am |
|
Gremmie,
I will be sure to try it....I have questions about how it will work in my case....but let me bang on it a little before I ask.
Thank You for your help!
Dave |
|
|
|
 |
montego
Site Admin

Joined: Aug 29, 2004
Posts: 9457
Location: Arizona
|
Posted:
Wed Feb 13, 2008 6:33 am |
|
Gremmie, there is programming "wisdom" behind that code. Good job Gremmie. The pre-increment takes only 3 op-codes rather than 4 (only applies to PHP) so its faster (ref: Only registered users can see links on this board! Get registered or login!). Also, using the modulus function (the "%") is nice and tight.
However, I have one concern: since this is being used to build out a table, Dawg, you need to make sure you handle the case where you have an odd number of total rows. Don't forget the second column of <td> </td> to finish up the last row. |
_________________ Only registered users can see links on this board! Get registered or login!
Only registered users can see links on this board! Get registered or login! |
|
|
 |
Dawg

|
Posted:
Wed Feb 13, 2008 7:05 am |
|
Gremmie,
Thank You for the code. It took a little while but I finialy got it working.
but..... if (++$i % 2 == 1) was the only way i could get her to go without an error.
montego,
The last table seems to be coming out fine. I jsut really got it working last night.....and now I am off working on the upgrade to RN....but I will make sure I look how it handles the odd number at the end.
Thank You both for your help!
Dave |
|
|
|
 |
Gremmie

|
Posted:
Wed Feb 13, 2008 8:06 am |
|
What was the "error" that caused you to change the 0 to a 1? |
|
|
|
 |
Dawg

|
Posted:
Wed Feb 13, 2008 8:36 am |
|
The "0" makes for 1 TD in the first row and "1" makes 2 TD's in the first row. I am sure it is something quirky in how I did it...HEre is the whole loop edited to be brief.....
Code:$i = 0;
for($m=0; $m < sql_num_rows($resultboats, $dbi....etc...); $m++) {
list($id,$tid) = sql_fetch_row($resultboats, $dbi);
if (++$i % 2 == 1)
{
echo "<table width='100%' border='5' cellspacing='0' cellpadding='0'><tr>";
}
$content = <<<END
<td width='50%'><center>
<p><b><font face='Georgia, Times New Roman, Times, serif' size='5' font color='#0000FF'>$boat_title</font></b></p>
<p><b>$logo</b></p>
<p><b><font face='Times New Roman, Times, serif' size='3'>$town Charter Boat</font></b></p>
<p><b><img src='$img_one' alt='$boat_title'/></b></p>
<table width='90%' border='5' align='center' cellspacing='0' cellpadding='0'>
<tr>
<td width='50%'><center><p><b><img src='$img_two' alt='$boat_title'/></b></p></center>
<center><p><b><img src='$img_three' alt='$boat_title'/></b></p></center></td>
<td><center><b><font face='Times New Roman, Times, serif' size='3'>$boat_text</font></b></center></td>
</tr>
</table><br/>
<p><b><font face='Times New Roman, Times, serif' size='3'>$town, $state</font></b></p>
<p><b><font face='Georgia, Times New Roman, Times, serif' size='4' font color='#0000FF'>$boattext2</font></b></p>
<p><font face='Georgia, Times New Roman, Times, serif' color='#FF0000' font size='4'><b>$captain</b></font></p>
<p><b><font face='Times New Roman, Times, serif' size='3'>$phone</font></b></p>
<p><b><font face='Times New Roman, Times, serif' size='3'><a href='mailto:$email?subject=$boat_title'>$email</a></font></b></p>
<p><b><font face='Times New Roman, Times, serif' size='3'><a href='$fishreport'>Read Our Fishing Reports</a></font></b></p>
<p><b><font face='Times New Roman, Times, serif' size='3'><a href='$photolink'>Come See Our Photos</a></font></b></p>
<p><b><font face='Times New Roman, Times, serif' size='3'><a href='$teampage'>See More Details</a></font></b></p>
<p><b><font face='Times New Roman, Times, serif' size='3'><a href='$website'>Visit Our Website</a></font></b></p><br/>
</center>
</td>
END;
//echo $i;
echo $content;
}
|
I am no guru. I just beat on it till it works! LOL! and I guess "Error" was the wrong word for it....It wouldn't come out the way I wanted....is more accurate...
Dawg
PS....No Laughing at my poor coding.....I was very proud of myself for getting this far with it....  |
|
|
|
 |
Gremmie

|
Posted:
Wed Feb 13, 2008 9:37 am |
|
Is the resulting code compliant? I wouldn't expect to see the <table> generation inside the loop like that. And then the table is closed every time through the loop. |
|
|
|
 |
Dawg

|
Posted:
Wed Feb 13, 2008 11:00 am |
|
Gremmie,
Compliant.....I doubt it. The orginal idea was to do it with just the TD's inside the loop. But I could not get that to work. It worked just fine in FF but would not work correctly in IE. This loop will be the basis for MANY pages in this module that I am building and I am open to suggestions from those that are smarter than me.
I am tickled to death that I got the information into the database....out of the datbase and presented on the screen in one piece. Now if I could do that correctly.....that would be even better. I know I sux at this....but it is fun and I do enjoy it.
Dawg |
|
|
|
 |
Gremmie

|
Posted:
Wed Feb 13, 2008 11:17 am |
|
Absolutely it is fun! I'm not quite sure what you are doing, sorry, but I would try to open and close the table outside the loop, and then inside the loop just generate rows. |
|
|
|
 |
|