Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 79
  • Last Modified:

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?
0
brucegust
Asked:
brucegust
  • 2
  • 2
1 Solution
 
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
 
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

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now