Jak w temacie. Oto kod klasy (mojej) do obsługi MySQLa:
plik db.mysql.php
<?
require_once(\"db.mysql.php\");
class licznik { // Definiowanie klasy licznik
var $licznik; // Licznik z MySQL
var $db_query; // Zapytanie MySQL
var $db_host = \"localhost\";// Adres bazy MySQL
var $db_name = \"xxxx\"; // Nazwa bazy MySQL
var $db_user = \"xxxx\"; // Nazwa użytkownika bazy MySQL
var $db_pass = \"xxxx\"; // Hasło użytkownika bazy MySQL
var $db_table = \"xxxx\"; // Tabela danych licznika w bazie MySQL
var $zabezpieczenie = FALSE; // Zabezpieczenie przed odœwieżaniem
var $cookie_name = \"pwas_licznik\"; // Nazwa ciasteczka
var $tekst_licznika = \"Stan licznika: \"; // Treœć tekstu wyœwietlanego przed licznikiem
function licznik() { // Definicja konstruktora dla PHP4 (w PHP5 __construct)
$db = new DB($this->db_host,
$this->db_name,
$this->db_user,
$this->db_pass);
}
function zwieksz_licznik() { // Definicja funkcji zwiększającej licznik
if ($this->zabezpieczenie == TRUE) { // Jeżeli jest zabezpieczenie przed odœwieżaniem
if (!isset($_COOKIE[$this->cookie_name])) { // I jeżeli nie dodano jeszcze $this->db_query = \"UPDATE \" . $this->db_table . \" SET licznik = licznik + 1;\"; // Wtedy utwórz zapytanie zwiększające stan licznika
$db->query($this->db_query); // I wykonaj je
setcookie($this->cookie_name, $this->cookie_name, time()+300
); // Dodaj cookie na 5 minut }
} else { // A jeżeli nie ma zabezpieczenia
$this->db_query = \"UPDATE \" . $this->db_table . \" SET licznik = licznik + 1;\"; // Wtedy utwórz zapytanie zwiększające stan licznika
$db->query($this->db_query); // I wykonaj je
}
}
function wyswietl_licznik() { // Definicja funkcji wyœwietlającej aktualny stan licznika
$this->db_query = \"SELECT * FROM \" . $this->db_table . \";\"; // Utworzenie zapytania pobierającego wartoœć licznika
$this->licznik = $db->query($this->db_query); // Pobranie wartoœci licznika
echo $this->tekst_licznika . $this->licznik[0]['licznik']; // Wyœwietlenie stanu licznika $db->close(); // Zamknięcie połączenia z bazą danych
}
}
// Wykorzystanie
$przykladowy_licznik = new licznik(); // Utworzenie licznika
$przykladowy_licznik->zwieksz_licznik(); // Zwiększenie wartoœci licznika
$przykladowy_licznik->wyswietl_licznik(); // Wyœwietlenie licznika
?>
i oto kod licznika:
plik block.licznik.php
<?
require_once(\"db.mysql.php\");
class licznik { // Definiowanie klasy licznik
var $licznik; // Licznik z MySQL
var $db_query; // Zapytanie MySQL
var $db_host = \"localhost\";// Adres bazy MySQL
var $db_name = \"xxx\"; // Nazwa bazy MySQL
var $db_user = \"xxx\"; // Nazwa użytkownika bazy MySQL
var $db_pass = \"xxxx\"; // Hasło użytkownika bazy MySQL
var $db_table = \"xxxxxxxxxxxx\"; // Tabela danych licznika w bazie MySQL
var $zabezpieczenie = FALSE; // Zabezpieczenie przed odœwieżaniem
var $cookie_name = \"pwas_licznik\"; // Nazwa ciasteczka
var $tekst_licznika = \"Stan licznika: \"; // Treœć tekstu wyœwietlanego przed licznikiem
function licznik() { // Definicja konstruktora dla PHP4 (w PHP5 __construct)
$db = new DB($this->db_host,
$this->db_name,
$this->db_user,
$this->db_pass);
}
function zwieksz_licznik() { // Definicja funkcji zwiększającej licznik
if ($this->zabezpieczenie == TRUE) { // Jeżeli jest zabezpieczenie przed odœwieżaniem
if (!isset($_COOKIE[$this->cookie_name])) { // I jeżeli nie dodano jeszcze $this->db_query = \"UPDATE \" . $this->db_table . \" SET licznik = licznik + 1;\"; // Wtedy utwórz zapytanie zwiększające stan licznika
$db->query($this->db_query); // I wykonaj je
setcookie($this->cookie_name, $this->cookie_name, time()+300
); // Dodaj cookie na 5 minut }
} else { // A jeżeli nie ma zabezpieczenia
$this->db_query = \"UPDATE \" . $this->db_table . \" SET licznik = licznik + 1;\"; // Wtedy utwórz zapytanie zwiększające stan licznika
$db->query($this->db_query); // I wykonaj je
}
}
function wyswietl_licznik() { // Definicja funkcji wyœwietlającej aktualny stan licznika
$this->db_query = \"SELECT * FROM \" . $this->db_table . \";\"; // Utworzenie zapytania pobierającego wartoœć licznika
$this->licznik = $db->query($this->db_query); // Pobranie wartoœci licznika
echo $this->tekst_licznika . $this->licznik[0]['licznik']; // Wyœwietlenie stanu licznika $db->close(); // Zamknięcie połączenia z bazą danych
}
}
// Wykorzystanie
$przykladowy_licznik = new licznik(); // Utworzenie licznika
$przykladowy_licznik->zwieksz_licznik(); // Zwiększenie wartoœci licznika
$przykladowy_licznik->wyswietl_licznik(); // Wyœwietlenie licznika
?>
I gdy uruchamiam skrypt licznika wyskakuje bł±d:
Kod
Fatal error: Call to a member function on a non-object in C:\OOCMS\block.licznik.php on line 31
Linia 31:
<?php
$db->query($this->db_query); // I wykonaj je
?>
Nie rozumiem gdzie jest bł±d. Czy kto¶ pomoże rozwi±zać problem?
Pozdro
alfanick
==============================================
TEMAT NIE AKTUALNY PORADZIŁEM SOBIE, NIE ZDEFINIOWAŁEM ZMIENNEJ
Ten post edytował alfanick 13.05.2005, 19:38:30