Jump to content

what is "Fatal error: Unsupported operand types in" mean?


sigmahokies

Recommended Posts

Hi everyone, I hope cyberRobot or Guru is reading this thread.

 

I am trying to create a vertical table data in php from method of GET and POST. Is it possible? I succeed created the vertical table data from database (MySQL). I created the vertical table data on php that inside the form thathas method of GET or POST, that should allow any value in php go to another page by method of GET, but seem it doesn't work. Maybe I miss something in code? Help will be very appreciate. I am still learning, ready to get in interaction in php. Here my code:

 

<!doctype html>
<html>
<head>
<title>Test array attendence</title>
</head>
<body>
<table>
<?php
$columns = 2;

if(isset($_GET['member'])) {
$display = $_GET['member'];
$num_row = $display;
$rows = ceil($num_row / $columns); <-- It is causing an error in code, line 14.
while ($row = $display) {
$data[] = $row;
}
echo "<table border='1'>";
for($i = 0; $i < $rows; $i++) {
echo "<tr>";
for($j = 0; $j < $columns; $j++) {
if(isset($data[$i + ($j *  $row)])) {
echo "<td>".$data[$i + ($j *  $row)]."</td>";

$count = $count+1;
}
}
echo "</tr>";
}
}
?>
</table>
<table><tr><td><?php echo $count." are attending this meeting tonight." ?></td></tr></table>
</body>
</html>

 

I get an error message - Fatal error: Unsupported operand types in /srv/disk10/1141650/www/sigmahokies.biz.ht/testarray3.php on line 14

fixed it up for you, had several syntax errors causing issues also using count() instead of num_row()

<?php
$columns = 2;

if(isset($_GET['member'])) {
	
$display = ceil(count($_GET['member']));
$rows =  ($display / $columns);
while ($row = $display) {
$data[] = $row;
}
echo "<table border='1'>";
for($i = 0; $i < $rows; $i++) {
echo "<tr>";
for($j = 0; $j < $columns; $j++) {
if(isset($data[$i + ($j *  $row)])) {
echo "<td>".$data[$i + ($j *  $row)]."</td>";
$count = $count+1;
}
}
echo "</tr>";
}
}
?>

Darkfreaks, seem your fixed is still not work...I followed your fixed code exactly, just no showing error, just blank...I think I better show you all full code, two pages, because it is about GET and POST, so you can understand very clearly...

 

Here my first page:

<!doctype html>
<html>
<head>
<title>Test array with columns</title>
</head>
<body>
<form action="testarray3.php" method="GET"> <--this is set up for second page, see code after this code.
<fieldset>
<?php
$column = 2;

$Garydb = mysqli_connect('xxxxxx','xxxxxx','xxxxxx') or die("Could not connect to database.");
mysqli_select_db($Garydb, 'xxxxxxx');
$sql = "SELECT CONCAT(FirstName,' ',LastName) AS Name FROM Members ORDER BY LastName ASC"; <-- That is how I merge two columns into one column.
$result = mysqli_query($Garydb, $sql);
$num_rows = mysqli_num_rows($result);
$rows = ceil($num_rows / $column);
while ($row = mysqli_fetch_array($result)) {
$data[] = $row['Name'];
}
echo "<table border='7'>\n";
for($i = 0; $i < $rows; $i++) {
echo "<tr>\n";
for($j = 0; $j < $column; $j++) {
if(isset($data[$i + ($j * $rows)])) {
echo "<td>".$data[$i + ($j * $rows)]."</td><td><input type='checkbox' name='member' value='".$data[$i + ($j * $rows)]."'></td>\n"; <-- "member" is a transfer data from this page to other page.
}
}
echo "</tr>\n";
}
echo "</table>\n";
?>
<input type="submit" value='Attendence'>
</fieldset>
</form>
</body>
</html>

 

Now, This is a second page that set up with GET from previous page:

 

<!doctype html>
<html>
<head>
<title>Test array attendence</title>
</head>
<body>
<table>
<?php
$columns = 2;
$count = 0;
if(isset($_GET['member'])) {
$display = ceil(count($_GET['member']));
$row = ($display/$columns);
while ($row = $display) {
$data['Name'] = $row; <-- I type "Name" because I made a merge from two columns into one column - "SELECT (FirstName,' ',LastName) AS Name from Members"
}
echo "<table border='1'>";
for($i = 0; $i < $rows; $i++) {
echo "<tr>";
for($j = 0; $j < $columns; $j++) {
if(isset($data[$i + ($j *  $row)])) {
echo "<td>".$data[$i + ($j *  $row)]."</td>";
$count = $count+1;
}
}
echo "</tr>";
}
}
?>
</table>
<table><tr><td><?php echo $count." are attending this meeting tonight." ?></td></tr></table>
</body>
</html>

 

Seem website is blank, no display the record...

It will never fly! Suppose 6 members selected
 

$display = ceil(count($_GET['member']));  // $display -> 6  (ceil not required)
$row = ($display/$columns);               // $row -> 3     (this is where you want ceil)
while ($row = $display) {                 // $row never == $display so doesn't execute
$data['Name'] = $row;                     // assigning number to $data['Name'] ???
}

Hi Barand,

 

If I change to 6, I'm sure it will apply the up to 6 checkboxes, suppose if i have 200 people in database, I have to set it up as 200 as well? About row, if I set 3, will it be 3 row, then infinite columns?I'm not sure what do you mean about row. That $display is coming from GET, seem it lost data from GET? Also, I put "[]", too (name='member[]') on my script...

A while() loop executes as long as the condition evaluates to true. Since you have 2 columns then $row is not equal to $display and so the loop does not execute. If you change to 1 column then the loop will execute infinitely, as neither of the values change in the execution of the loop. Either way it does not work.

 

Shouldn't you be looping through the members sent in $_GET['members'] and listing those?

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.