48

on Control page:

<?php
  include 'pages/db.php'; 
  $results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
  $sidemenus = mysql_fetch_object($results);
?>

on View Page:

<?php foreach ($sidemenus as $sidemenu): ?>
  <?php echo $sidemenu->mname."<br />";?>
<?php endforeach; ?>

Error is:

Notice: Trying to get property of non-object in C:\wamp\www\phone\pages\init.php on line 22

Can you fix it? I don't have any idea what happened.

Nikola K.
  • 7,093
  • 13
  • 31
  • 39
Gereltod
  • 2,043
  • 8
  • 25
  • 39

4 Answers4

35

Check the manual for mysql_fetch_object(). It returns an object, not an array of objects.

I'm guessing you want something like this

$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);

$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) {
    $sidemenus[] = $sidemenu;
}

Might I suggest you have a look at PDO. PDOStatement::fetchAll(PDO::FETCH_OBJ) does what you assumed mysql_fetch_object() to do

Phil
  • 157,677
  • 23
  • 242
  • 245
10

Your error

Notice: Trying to get property of non-object in C:\wamp\www\phone\pages\init.php on line 22

Your comment

@22 is <?php echo $sidemenu->mname."<br />";?>

$sidemenu is not an object, and you are trying to access one of its properties.

That is the reason for your error.

Community
  • 1
  • 1
alex
  • 479,566
  • 201
  • 878
  • 984
5

$sidemenu is not an object, so you can't call methods on it. It is probably not being sent to your view, or $sidemenus is empty.

Brane
  • 3,257
  • 2
  • 42
  • 53
james
  • 3,543
  • 8
  • 31
  • 39
5
<?php foreach ($sidemenus->mname as $sidemenu): ?>
<?php echo $sidemenu ."<br />";?>

or

$sidemenus = mysql_fetch_array($results);

then

<?php echo $sidemenu['mname']."<br />";?>
Jamie
  • 1,340
  • 11
  • 22