Hello everyone.

I am pretty new to oop, so this might be a simple question.

I need to get data from my database and I need it in several different places on my site. So I decided to create a class to get the data instead of writing it over and over again.

now, the method i created is nothing but a mysql query and a while loop to get the variables:

function getGroupData(){

$result = mysql_query("SELECT * FROM groups ")
or die(mysql_error());

while($row = mysql_fetch_array($result)){



	$id = $row["id"];
	$groupname = $row["groupname"];
	$groupurpose = $row["groupurpose"];
	$groupmessage = $row["groupmessage"];

}
}

of course this sits inside a class and there is a "connect to my db.php" included...

the problem is that the variables (i.e $id, $groupname etc...)do not seem to exist outside of the method.
How can I use them in other methods and outside the method? I need a solution that can handle methods which create dozens of variables.

even if I declare them global (i.e global $id; global $groupname; etc...) before the mysql query, they still don't exist outside the method.


Thank you for your help!

Recommended Answers

All 5 Replies

One solution would be to return them as an array from your function, like this:

function getGroupData() {
  $return_value = array();
  $result = mysql_query('SELECT * FROM groups') or die(mysql_error());
  while ($row = mysql_fetch_array($result)) {
    $return_value[] = $row;
  }
  return $return_value;
}

$data = getGroupData();
print_r($data);

Returning an array makes most sense for a 'getter' method. You can also create class properties to hold the information:

class Model_Group {

  public $groups = array();

  public function getGroupData()
  {
    // Check if property was already initialized earlier.
    if(!empty($this->groups)) return $this->groups;  

    $return_value = array();
    $result = mysql_query('SELECT * FROM groups') or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {
      $return_value[] = $row;
    }
    $this->groups = $return_value;  // store in property for future retrieval.
    return $return_value;
     
  }
}

Thank you both for your help. But I'm not sure I understand how to use your solution. (As I said, I am new to OOP). Could you show me how to retrieve the variables outside the method? And how do I send them to other methods in the class?

Thank a lot!

here for ur last reply .. hope can help
to access the variable just refer the it by

$yourCLasssinstance->yourVariable;

and for returning function

$watEver = $yourCLasssinstance->yourMethod();

and if u mean how to use the vars outside the method but in same class
you need to declare them in the class header out side the methods
and then use

$this->maVariable;

where $this is always refer to ur class instance it self
hope u got it
good luck

Building on madCoder's nice example:

<?php
class Model_Group {
 
  public $groups = array ();
 
  public function getGroupData()
  {
    // Check if property was already initialized earlier.
    if(! empty($this->groups)) 
      return $this->groups;  
 
    $result = mysql_query('SELECT * FROM groups') or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {
      $this->groups[] = $row; // store in property for future retrieval.
    }
  }
  
  public function Test()
  {
    // You should connect to the database first
    $this->getGroupData();
    print_r($this->groups);
  }
}

$object = new Model_Group();
$object->Test();

// you can also do
// print_r($object->groups);
?>
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.