Versio

class vaker gebruiken

Overzicht Reageren

Gerhard l

gerhard l

08/09/2011 23:18:39
Quote Anchor link
Goedenavond,

Ik ben een beetje aan het oefenen met OOP, alleen stuit ik op een probleempje, ik heb een database class waarin alle mysql dingen staan.
Alleen nu heb ik dus 2 classes die gebruik wil maken van de DB(database) class, als ik deze in beide classes require krijg ik de error:

Fatal error: Cannot redeclare class DB in database.class.php on line 3

Ik dacht eerst, oke logisch hij wordt dubbel opgevraagd, dus dan maak ik een aparte file aan met:

new DB('root','','password','test');

En dat je dan deze include als config, maar ook dan krijg ik dezelfde error.
Hier is vast een betere oplossing voor.

index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
require('shopping_cart.class.php');
require('xshop.class.php');
?>


en in 1 van de classes:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
function __construct($name){
        
        $this->shop_name = $name;
        
        $db = new DB ( 'root', '', 'localhost', 'xshop' );
}

?>
 
PHP hulp

PHP hulp

24/05/2012 00:51:02
Gesponsorde koppelingen:
 
Mark L

Mark L

09/09/2011 09:10:17
Quote Anchor link
Wat waarschijnlijk het probleem is is dat je het bestand waarin de klasse staat 2 maal aanroept.

Ga je gangen na (welke files in welke file geïnclude wordt en hoe vaak..), of los het op via require_once(); of include_once();

Succes!
 
Gerhard l

gerhard l

09/09/2011 10:30:18
Quote Anchor link
Oke Mark, het werkt de requirece_once deed het hem.

Ik heb alleen nog een vraagje over mijn db class:

In mijn class wil ik de categories ophalen van de producten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$Shop
= new xshop('xshop');

echo '<pre>';
print_r($Shop->getCategories());
echo '</pre>';
?>


In de getCategories moet hij nu dus de categorieen ophalen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function getCategories(){
        
   $sql = "SELECT name,price,text,id FROM products";

   $sql = DB::run ( $sql );
        
   //If there were found products, return them
   if ( DB::numRows ( $sql ) > 0 ) {
    $res = DB::fetchAssoc ( $sql );
    return $res    ;
   }
}
        
?>


In de database class gebeurt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
static function run ( $sql ) {
        
            return mysqli_query ( self::$con, $sql );
        
        }


static function numRows ( $sql ) {
        
            return mysqli_num_rows ( $sql );
        
        }


static function fetchAssoc ( $sql ) {
        
            return mysqli_fetch_assoc ( $sql );
        
        }

?>


Alleen elke keer haalt hij maar 1 item op, als ik er een where aan toevoeg met het ID van andere artikelen dan haalt hij ze wel op. Als ik de $sql echo zegt hij ook dat hij meerdere rows vind:


mysqli_result Object
(
[current_field] => 0
[field_count] => 4
[lengths] => Array
(
[0] => 24
[1] => 1
[2] => 7
[3] => 9
)

[num_rows] => 2
[type] => 0
)

Typ ik ergens wat fout?

Toevoeging op 09/09/2011 10:41:48:

EDIT: Oke ik sla mezelf voor mn hoofd, was de while vergeten getCategories.
 



Overzicht Reageren