How would I make this for loop work?

Here's my function:

function csv_table($sample_array,$number_columns) {
$snippet='';
	for($i=0; $i<$number_columns; $i++)
		{
			$snippet.="
				<tr>
					<td class=\"csv_sample_cell\">$i</td>
				</tr>
			";			
		}
return $snippet;	

Open in new window


Here's the challenge...

The $sample_array is coming in as an eight column body of data. The first column is going to be the id, the second column is going to be the session_id, neither of which I want to display to my user.

What I've been doing, when I'm getting ready to enumerate an array is do a "foreach," like this:

function csv_sample($columns) {
$snippet='';
foreach ($columns as $cell)
	{
		if($cell=="id" OR $cell=="session_id")
			{
				$snippet.="";
			}
		else
			{
				$snippet.="
				<td class=\"csv_sample\">$cell</td>
				";
			}
	}
	return $snippet;
}	

Open in new window


But I'm trying to alter things a bit so I can avoid the first and last column of the array.

I thought I could do a for statement and somehow position some kind of gatekeeper at the [0] position and the very last column, whatever that value would be based on the number of columns ($i).

Bottom line, its not working and I'm needing some help.

Any ideas?
brucegustPHP DeveloperAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Dave BaldwinFixer of ProblemsCommented:
I would need to know the format of '$columns'.  If it is an arrays of arrays like you would have by collecting the rows from a MySQL query, then you would need to address the individual items with array syntax.  The code that you are showing might work with a single $columns array if you set a counter ahead of the foreach.  I don't think that 'id' is going to be the value for all columns.
function csv_sample($columns) {
$snippet='';
$cntr = 0;
foreach ($columns as $cell)
	{
		if($cntr == 0 OR $cntr = 7)
			{
				$snippet.="";
			}
		else
			{
				$snippet.="
				<td class=\"csv_sample\">$cell</td>
				";
			}
$cntr++;
	}
	return $snippet;
}	

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
brucegustPHP DeveloperAuthor Commented:
Dave, we're poised on the threshold of great things, but I'm still one thing short.

Here's what I've got, based on your counsel:

function csv_table($sample_array,$number_columns) {
$snippet='';
$cntr=0;
foreach ($sample_array as $sample) 
	{
	echo $cntr;
		if($cntr==0 OR $cntr==$number_columns)
			{
				$snippet.="";
			}
		else	
			{
				$snippet.="
				<tr>
					<td class=\"csv_sample_cell\">$sample</td>
				</tr>";
			}
		$cntr=$cntr+1;
	}
	
return $snippet;	
}

Open in new window


I'm getting this error:

Array to string conversion in C:\wamp\www\SouthArea\csv_storeView.php on line 36

Line 36 being <td class=\"csv_sample_cell\">$sample</td>

...which means that "$sample" isn't cutting it, as far as accurately representing the contents of the array, yes?

The function that's driving that part of the script is this:

function csv_display($table_name) {

	global $mysqli;

	$sql="select * from $table_name order by posted_time LIMIT 10";
	//echo $sql;
	$query=$mysqli->query($sql);
	$result_array = array();
	while ($row=$query->fetch_array())
		{
			$result_array[]=$row;
		}
	return $result_array;
	}
}

Open in new window


How else can I document $sample so it the data will be accurately reflected on the page?
0
brucegustPHP DeveloperAuthor Commented:
Dave!

I got it!

 
function csv_table($sample_array,$number_columns) {

	$snippet='';
	foreach ($sample_array as $sample) 
	{
		$snippet.="
			<tr>";
			for($i=1; $i<($number_columns-1); $i++)
				{
					$snippet.="<td class=\"csv_sample_cell\">{$sample[$i]}</td>";
				}
			$snippet."</tr>";
	}

	return $snippet;
}

Open in new window


Thanks!
0
Dave BaldwinFixer of ProblemsCommented:
Glad you 'got it'... but you have posted 3 different versions of your function.  Please, next post only the version that you are actually having problems with.  Don't 'simplify' it unless we ask you to.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.