Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.04.12
Prihlásený: 12.04.12
Príspevky: 4
Témy: 1
Príspevok NapísalOffline : 07.04.2012 16:46

Zdravim, som zaciatocnik v php oop. Chcel som si urobit vlastnu triedu pre ulahsenie prace s databazou. Nejde o nic super, len pre vlastne potreby. Hadze to chybu: Fatal error: Using $this when not in object context in C:\xampp\htdocs\db.class.php on line 50..Na 50 riadku mam
Kód:
if($this->type == 'mysqli'){
Bol by som rad, kebyze mi ukazete, kde robim chybu.

Kód:
<?php

Class DB{

   /**
   * @var object
   * Database connection
   */
   private static $connection = null;

   /**
   * @var String
   * Type of Database
   * Default MySQLi
   */
   private $type = 'mysqli';

   /**
   * @var String
   * SQL Query
   */
   private $query = '';

   private static $hostname = 'localhost';
   private static $username = 'root';
   private static $password = '';
   private static $dbname = 'fontilate';
   private static $port = 3306;

   public function __contruct(){
   
   }
   public static function getConnection(){
      if($this->type == 'mysqli'){

         $this->connection = new mysqli($this->hostname,$this->username,$this->password,$this->dbname,$this->port);
      }

      if(!$this->connection){
         echo $this->connection->connect_errno();
      }else{
         $this->connection->query('SET NAMES utf8');
         return $this->connection;
      }
   }

   /**
   * Quering SQL
   * @return result
   */

   public function sqlQuery($query){
      return $this->connection->query($query);
   }

   /**
   * Fetch Assoc
   * @var array
   */

   public function fetchAssoc($result,$type_assoc){
      switch($type_assoc){
         case 'ASSOC': $fetch = 'MYSQLI_ASSOC';
         case 'NUM': $fetch = 'MYSQLI_NUM';
      }
      $res = array();
      while($tmp = $result->fetch_array($fetch)){
         $res[] = $tmp;
      }

      return $res;
   }


   /**
   * SQL Select
   */

   public function select($select){
      $this->query = 'SELECT ' . $this->escape($select);
      return $this->query;
   }

   /**
   * SQL From
   */

   public function from($from){
      $this->query .= 'FROM ' . $this->escape($from);
      return $this->query;
   }

   /**
   * SQL Where
   */

   public function where($where){
      $this->query .= 'WHERE ' . $this->escape($where);
      return $this->query;
   }

   /**
   * SQL Limit
   */

   public function limit($limit){
      $this->query .= 'LIMIT ' . $this->escape($limit);
      return $this->query;
   }

   /**
   * Escape String - Prevent for SQL Injection
   */

   public function escape($string){
      if($this->type == 'mysqli'){
         return $this->connection->real_escape_string($string);
      }else{
         return addslashes($string);
      }
   }
}

$db = new DB();
$db->getConnection();
$result = $db->select('*')->from('users')->where('id = 10');
$fetch = $result->fetchAssoc('ASSOC');
foreach($fetch as $data){
   echo $data['name'];
}
?>


Offline

Čestný člen
Čestný člen
PHP OOP MYSQLi Class

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 08.04.2012 11:36

Metoda getConnection je staticka, to znamena, ze ju nemozes volat nad konkretnou instanciou, nieco ako
Kód:
$obj = new DB();
$obj->getConnection();
by ti nepreslo. To volanie prebieha priamo nad triedou, zapisom
Kód:
DB::getConnection();
a tym padom $this straca vyznam, pretoze o konkretnu instanciu tam nejde a nemoze ist. Mozes pristupovat k (statickym) memberom onej triedy zapisom self::$var. Snad som to nepoplietol.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.04.12
Prihlásený: 12.04.12
Príspevky: 4
Témy: 1
Príspevok Napísal autor témyOffline : 08.04.2012 14:05

Dakujem za odpoved, ale stale tomu nechapem ako to mam vyriesit. Pomohol by si mi s tym?


Offline

Užívateľ
Užívateľ
PHP OOP MYSQLi Class

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 08.04.2012 14:27

premennou $this pristupujes ku konkretnej instancii objektu a tvoja funkcia getConnection je staticka, polopate povedane, neviaze sa na ziadnu konkretnu instanciu ale je "vseobecna".

takze jedine, co potrebujes je odstranit slovicko "static"

// pridané po 2 minútach od posledného príspevku

tak isto aj z premennych







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.04.12
Prihlásený: 12.04.12
Príspevky: 4
Témy: 1
Príspevok Napísal autor témyOffline : 08.04.2012 14:41

emer: static som vymazal, ale stale ta ista chyba


Offline

Užívateľ
Užívateľ
PHP OOP MYSQLi Class

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 08.04.2012 15:39

aj z deklaracie premennych?

dalsiu chybu co som si vsimol je nespravne retazenie,
Kód:
$result = $db->select('*')->from('users')->where('id = 10');

toto ti fungovat nebude

// pridané po 21 sekundách od posledného príspevku

skus si nastudovat vaice teorie na php.net alebo niekde inde, google ti pomoze







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 07.04.12
Prihlásený: 12.04.12
Príspevky: 4
Témy: 1
Príspevok Napísal autor témyOffline : 08.04.2012 15:42

Ano aj z premennych. Ako by si to retazil ty? A uz som pisal, ze som zaciatocnik v OOP. Len som chcel vediet ako to mam urobit, aby to fungovalo


Odpovedať na tému [ Príspevkov: 7 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. database class, oop php

v PHP, ASP

10

781

16.02.2010 15:12

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. OOP PHP

v PHP, ASP

1

491

29.04.2010 17:32

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP OOP

v PHP, ASP

3

292

18.02.2013 7:20

DeiForm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. OOP v PHP

v PHP, ASP

1

858

02.06.2009 11:02

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. OOP v PHP

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PHP, ASP

41

2955

28.11.2009 16:01

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [PHP] OOP diskusia

v PHP, ASP

7

2449

30.03.2015 12:59

majky358 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. OOP PHP problémy začiatočníka

v PHP, ASP

11

471

13.11.2014 13:29

Mego Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. oop php - vyuzitie, vyhody

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PHP, ASP

32

2336

24.05.2008 15:04

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. oop v php - predavanie udajov

v PHP, ASP

1

348

16.02.2010 19:06

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [VYRIESENE] PHP unzip class

v PHP, ASP

6

544

26.02.2009 13:01

Flety Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [VYRIESENE] PHP template class

v PHP, ASP

23

1105

24.02.2009 23:09

Flety Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mysql database php class

v PHP, ASP

25

1312

28.02.2008 13:04

martin90 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pomoc s Smarty.class.php

v PHP, ASP

1

498

27.09.2010 20:52

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ajax + PHP Class - server bez reakcie

v JavaScript, VBScript, Ajax

3

577

20.07.2013 2:36

math-ew Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MicroSDHC class 2 alebo class 4 mám vrátiť ?

v Pamäte

3

666

16.12.2010 20:09

majky358 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. mysqli

v PHP, ASP

2

694

03.02.2009 13:30

janik366 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra