Ik probeer een menu te creeren uit mijn database, met de volgende class:
<?php
class Menu
{
function buildMenu($parentId)
{
$connector = new DbConnect('mark moes'); //Select the db..
$connector->DbConnector();
// prepare special array with parent-child relations
$menuData = array(
'items' => array(),
'parents' => array()
);
while ($menuItem = $connector->fetchArray($connector->query('SELECT
id, parentId, name
FROM
menu
ORDER BY
parentId, name')))
{
$menuData['items'][$menuItem['id']] = $menuItem;
$menuData['parents'][$menuItem['parentId']][] = $menuItem['id'];
}
$html = "";
if (isset($menuData['parents'][$parentId]))
{
$html = "<ul>\n";
foreach ($menuData['parents'][$parentId] as $itemId)
{
$html .= "<li>" . $menuData['items'][$itemId]['name'];
// find childitems recursively
$html .= $this->buildMenu($itemId, $menuData);
$html .= "</li>\n";
}
$html .= "</ul>\n";
print_r ($html);
}
// print_r ($html);
return $html;
}
}
?>
De connectie komt uit deze class:
<?php
class DbConnect
{
public $link;
public $db;
public $result;
function __construct($db)
{
$this->db = $db;
}
//*** Function: DbConnector, Purpose: Connect to the database ***
function DbConnector()
{
// Load settings from parent class
$settings = SystemComponent::getSettings();
// Get the main settings from the array we just loaded
$host = $settings['dbhost'];
$user = $settings['dbusername'];
$pass = $settings['dbpassword'];
// Connect to the database
if ( ! $this->link = mysql_connect($host, $user, $pass))
{
trigger_error('Een error m.b.t. de MySQL Connectie: ' .mysql_error(),E_USER_ERROR);
}
mysql_select_db($this->db);
//register_shutdown_function(array(@$this, 'close'));
}
//*** Function: query, Purpose: Execute a database query ***
function query($query)
{
if ( ! $query = mysql_query($query, $this->link) )
{
trigger_error('Een error m.b.t. de MySQL Query: ' .mysql_error(), E_USER_ERROR);
}
return $query;
}
//*** Function: fetchArray, Purpose: Get array of query results ***
function fetchArray($result)
{
if ( ! $result = mysql_fetch_array($result) )
{
trigger_error('Een error m.b.t. het <i>fetchen</i> van het MySQL resultaat: ' .mysql_error(), E_USER_ERROR);
}
return $result;
}
//*** Function: close, Purpose: Close the connection ***
function close()
{
mysql_close($this->link);
}
}
?>
Ik krijg elke keer de foutmelding
Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\website\Class\Class.php on line 54,
Betekend dus dat het fout gaat in de functie query.
Wie kan mij helpen? Ik ben al een week aan het zoeken waar de fout zit, ik denk dat er iets fout gaat met mijn OOP-techniek...
1.593 views