| Autor | Zpráva | ||
|---|---|---|---|
| Webster.K Profil |
#1 · Zasláno: 9. 12. 2015, 12:01:53
Zdravím všechny, mám úplně začátečnický dotaz.
Vytvořil jsem si třídu pro připojení do DB která má v sobě funkci query. V jiném souboru tedy nejdříve includnu třídu class.databaze.php, pak zavolám $db= new databaze(nejaky parametry pro pripojeni);$promena = $db->query(dotaz); to vše funguje. Nyní vytvořím třídu uživatel v souboru class.user.php a ve třídě user funkci login(). Můj dotaz zní, jak ve třídě user ve funkci login mám docílit toho, abych na základě dvou parametrů, tedy nick, heslo ze třídy databáze mohl použít třídu query? |
||
| Jan Tvrdík Profil |
#2 · Zasláno: 9. 12. 2015, 12:07:29
Webster.K:
Musíš si tu proměnnou $db předat buď jako třetí parametr do funkce User::login() nebo (což je lepší) konstruktorem třídy User, tj. celé to bude vypadat
$db = new Database(...);
$user = new User($db);
$user->login('John', '1234'); |
||
| Webster.K Profil |
#3 · Zasláno: 9. 12. 2015, 12:17:29
Jan Tvrdík:
Aha, to jsem uplně nepochopil jak. Pošlu spíš obsah těch souborů aby bylo jasnější, co dělám špatně: soubor class.database.php <?php
class Databaze {
private $link;
private $host, $username, $password, $database;
public function __construct($host, $username, $password, $database){
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->database = $database;
$this->link = mysql_connect($this->host, $this->username, $this->password) OR die("Problém s připojením do databáze");
mysql_select_db($this->database, $this->link) OR die("Problém s vybráním konkrétní databáze");
return true;
}
public function query($query) {
$result = mysql_query($query);
if (!$result) die('Špatný dotaz: ' . mysql_error());
return $result;
}
public function __destruct() {
mysql_close($this->link)
OR die("Došlo k problému při odpojení od databáze");
}
}
?><?php
class User{
public function __construct($db){
$this->db = $db;
return true;
}
public function login($nick, $pass){
//telo přihlašovací funkce
//$result = Databaze::query("SELECT * FROM test WHERE id='".$nick."' AND tablerow='".$pass."'");
$result = $db->query("SELECT * FROM test WHERE id='".$nick."' AND tablerow='".$pass."'");
while ($row = mysql_fetch_assoc($result)) {
echo $row['tablerow'];
}
}
public function logout(){
session_destroy();
return;
}
}
?><?php
include "./class.database.php";
include "./class.user.php";
$db = new Database("localhost", "aaa", "aaa", "aaa");
$user = new User($db);
$user->login('1','Udaj 1');
?> |
||
| Jan Tvrdík Profil |
#4 · Zasláno: 9. 12. 2015, 12:21:54
Na 12. řádku má být místo
$db $this->db
|
||
| Webster.K Profil |
Aha, děkuju, už to funguje jak má ;)
|
||
|
Časová prodleva: 10 let
|
|||
0