2016-03-21 3 views
1

Я хочу получить количество сотрудников всех компаний, но это не вызывает функцию.вызов функции класса php внутри цикла while

Это мой класс:

class Rimaxx { 

public $host = ""; 
public $username = ""; 
public $password = ""; 
public $database = ""; 

public function GetCompanies() 
{ 
$conn = new mysqli ($this->host, $this->username, $this->password, $this->database); 

$sql = "SELECT * FROM freelancers"; 
$result = $conn->query($sql); 

return $result; 

$conn->close(); 

} 

public function CountEmployees($id) 
{ 
$conn = new mysqli ($this->host, $this->username, $this->password, $this->database); 

$sql = "SELECT * FROM Werknemers WHERE Idbedrijf = '$id'"; 
$result = $conn->query($sql); 

return $result->num_rows; 

$conn->close(); 
} 

А вот где я определяю вещи:

include('rimaxx.php'); 

$rimaxx = new Rimaxx(); 

$rimaxx->host = "23.12.12.32"; 
$rimaxx->username = "xxx"; 
$rimaxx->password = "xxxxxx"; 
$rimaxx->database = "rimaxx"; 

$companies = $rimaxx->GetCompanies(); 

А вот мой в то время как цикл:

<?php while($row = $companies->fetch_assoc()) { ?> 
      <tr> 
       <td><?php echo $row["Bedrijf"]; ?></td> 
       <td><?php echo $row["Plaats"]; ?></td> 
       <td><?php echo $row["Postcode"]; ?></td> 
       <td><?php echo $row["Provincie"]; ?></td> 
       <td><?php echo $rimaxx->CountEmployees($row["Idbedijf"]); ?></td> 
      </tr> 
<?php }; ?> 

Пожалуйста, может ли кто-нибудь помочь мне?

+0

Я думаю, что вы вызвали неправильную функцию, потому что класс method '$ companies-> fetch_assoc()' не существует в вашем классе. Можете ли вы попробовать это: '$ row = $ companies-> GetCompanies()' – Jer

+0

@ C0dekid: Я предполагаю, что перед циклом есть строка: $ comapnies = $ rimaxx-> GetCompanies(); – doerig

+0

$ компании относятся к $ rimaxx-> GetCompanies(); –

ответ

1

Это рекомендация для вашего кода, более высокую производительность на циклах, добавил соединение на конструктору

class Rimaxx 
{ 
    protected $conn; 

    public function __construct($host, $username, $password, $database) 
    { 
     $this->conn = new mysqli ($host, $username, $password, $database); 
    } 

    public function GetCompanies() 
    { 
     $sql = "SELECT * FROM freelancers"; 
     $result = $this->conn->query($sql); 
     return $result; 
    } 

    public function CountEmployees($id) 
    { 
     $sql = "SELECT * FROM Werknemers WHERE Idbedrijf = '$id'"; 
     $result = $this->conn->query($sql); 
     return $result->num_rows; 
    } 

    public function close(){ 
     $this->conn->close(); 
    } 
} 


$rimaxx = new Rimaxx ('23.12.12.32', 'xxx', 'xxxxxx', 'rimaxx'); 

//..... 


$rimaxx->close(); 
2

Существует опечатка в вашем вызове метода, изменить его к этому:

$rimaxx->CountEmployees($row["Idbedrijf"]); 
Смежные вопросы