Link to home
Start Free TrialLog in
Avatar of Jonathan Greenberg
Jonathan GreenbergFlag for United States of America

asked on

PHP echo displaying in the wrong place

I have a php function that echos an html table td 5 times. I'm calling the function from within the tr tags of a table. But it displays above the opening tr tag in the web page source code, and it's causing the table to display incorrectly.

The function is getStudRateTRs(). Here's my html table, along with the php:
<?php 

function getStudRateTRs($n) {
	foreach ($n as $key => $value) {
		echo "
    <td class='right'>test</td>";
	}
}
?>

<table border="1" cellpadding="4" cellspacing="0">
  <tr>
    <td class="h-center">&nbsp;</td><?php 
foreach ($term as $value) { echo "
    <td class='h-center'>" . $value . "</td>";
} ?>

  </tr>
  <tr>
    <td class="h-right-caps">Student</td>
    <td colspan="<?php echo count($term); ?>" class="right"></td>
  </tr><?php 
foreach ($rangeStud as $key => $value) {
	echo "
  <tr>
    <td class='h-right'>" . $value . "</td>
	" . getStudRateTRs($term) . "
  </tr>";
}
?>

</table>

Open in new window

The resulting web page source code, in Firefox, looks like this:
<table border="1" cellpadding="4" cellspacing="0">
  <tr>
    <td class="h-center">&nbsp;</td>
    <td class='h-center'>Annual</td>
    <td class='h-center'>Semi-Annual Session 1</td>
    <td class='h-center'>Spring/Summer</td>
    <td class='h-center'>Semi-Annual Session 2</td>
    <td class='h-center'>Summer</td>
  </tr>
  <tr>
    <td class="h-right-caps">Student</td>
    <td colspan="5" class="right"></td>
  </tr>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
  <tr>
    <td class='h-right'>00-24</td>
	
  </tr>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
  <tr>
    <td class='h-right'>25-30</td>
	
  </tr>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
  <tr>
    <td class='h-right'>31-40</td>
	
  </tr>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
  <tr>
    <td class='h-right'>41-99</td>
	
  </tr>
</table>

Open in new window

But I want it to look like this:
<table border="1" cellpadding="4" cellspacing="0">
  <tr>
    <td class="h-center">&nbsp;</td>
    <td class='h-center'>Annual</td>
    <td class='h-center'>Semi-Annual Session 1</td>
    <td class='h-center'>Spring/Summer</td>
    <td class='h-center'>Semi-Annual Session 2</td>
    <td class='h-center'>Summer</td>
  </tr>
  <tr>
    <td class="h-right-caps">Student</td>
    <td colspan="5" class="right"></td>
  </tr>
  <tr>
    <td class='h-right'>00-24</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
  </tr>

    <td class='right'>test</td>
  <tr>
    <td class='h-right'>25-30</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
  </tr>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
  <tr>
    <td class='h-right'>31-40</td>
  </tr>
  <tr>
    <td class='h-right'>41-99</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
    <td class='right'>test</td>
  </tr>
</table>

Open in new window

The td lines generated by getStudRateTRs() are showing up before the opening tr, even though I've placed the function within the tr tags. What am I doing wrong?

Thanks!
Avatar of svgmuc
svgmuc
Flag of United States of America image

You need to cycle through $term, again. Your loop ends in line 16, after that it probably has no proper value anymore and get StudRateTRs($term) returns an empty value.
ASKER CERTIFIED SOLUTION
Avatar of Dave Baldwin
Dave Baldwin
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Jonathan Greenberg

ASKER

Thank you, Dave! I'll try this and post back as soon as I can.
Excellent! Thanks so much for the help, Dave.
You're welcome.  It was an interesting question.  Required a little extra thinking to puzzle it out.