OOP config??
Ik ben bezig geweest met OOP (voor de config), voor het uit te proberen. Maar het werkt niet, het geeft geen errors...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$__error_reporting_level=1;
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
$hostnaam = $_CONFIG['hostnaam'];
$gebruikersnaam = $_CONFIG['gebruikersnaam'];
$wachtwoord = $_CONFIG['wachtwoord'];
$database = $_CONFIG['database'];
define('HOSTNAAM', $hostnaam);
define('GEBRUIKERSNAAM', $gebruikersnaam);
define('WACHTWOORD', $wachtwoord);
define('DATABASE', $database);
error_reporting($__error_reporting_level);
class sql
{
protected $hostnaam = HOSTNAAM;
protected $gebruikersnaam = GEBRUIKERSNAAM;
protected $wachtwoord = WACHTWOORD;
protected $database = DATABASE;
private function connect()
{
$connections = mysql_connect($this->hostnaam, $this->gebruikersnaam, $this->wachtwoord) or die ('Unabale to connect to the database');
mysql_select_db($this->database) or die ('Unable to select database!');
return;
}
}
?>
$__error_reporting_level=1;
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
$hostnaam = $_CONFIG['hostnaam'];
$gebruikersnaam = $_CONFIG['gebruikersnaam'];
$wachtwoord = $_CONFIG['wachtwoord'];
$database = $_CONFIG['database'];
define('HOSTNAAM', $hostnaam);
define('GEBRUIKERSNAAM', $gebruikersnaam);
define('WACHTWOORD', $wachtwoord);
define('DATABASE', $database);
error_reporting($__error_reporting_level);
class sql
{
protected $hostnaam = HOSTNAAM;
protected $gebruikersnaam = GEBRUIKERSNAAM;
protected $wachtwoord = WACHTWOORD;
protected $database = DATABASE;
private function connect()
{
$connections = mysql_connect($this->hostnaam, $this->gebruikersnaam, $this->wachtwoord) or die ('Unabale to connect to the database');
mysql_select_db($this->database) or die ('Unable to select database!');
return;
}
}
?>
index.php (STUKJE)
(En waarom oude mysql-functies?)
Toevoeging op 05/01/2017 12:09:41:
EDIT:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
$hostnaam = $_CONFIG['hostnaam'];
$gebruikersnaam = $_CONFIG['gebruikersnaam'];
$wachtwoord = $_CONFIG['wachtwoord'];
$database = $_CONFIG['database'];
define('HOSTNAAM', $hostnaam);
define('GEBRUIKERSNAAM', $gebruikersnaam);
define('WACHTWOORD', $wachtwoord);
define('DATABASE', $database);
class DB {
protected $hostnaam = 'HOSTNAAM';
protected $gebruikersnaam = 'GEBRUIKERSNAAM';
protected $wachtwoord = 'WACHTWOORD';
protected $database = 'DATABASE';
public function connect() {
$connect_db = @new mysqli($this->hostnaam, $this->gebruikersnaam, $this->wachtwoord, $this->database);
if (mysqli_connect_errno()) {
printf("Er is een fout opgetreden. Foutcode ". mysqli_connect_error().'.');
exit();
}
return true;
}
}
?>
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
$hostnaam = $_CONFIG['hostnaam'];
$gebruikersnaam = $_CONFIG['gebruikersnaam'];
$wachtwoord = $_CONFIG['wachtwoord'];
$database = $_CONFIG['database'];
define('HOSTNAAM', $hostnaam);
define('GEBRUIKERSNAAM', $gebruikersnaam);
define('WACHTWOORD', $wachtwoord);
define('DATABASE', $database);
class DB {
protected $hostnaam = 'HOSTNAAM';
protected $gebruikersnaam = 'GEBRUIKERSNAAM';
protected $wachtwoord = 'WACHTWOORD';
protected $database = 'DATABASE';
public function connect() {
$connect_db = @new mysqli($this->hostnaam, $this->gebruikersnaam, $this->wachtwoord, $this->database);
if (mysqli_connect_errno()) {
printf("Er is een fout opgetreden. Foutcode ". mysqli_connect_error().'.');
exit();
}
return true;
}
}
?>
index
Toevoeging op 05/01/2017 12:10:17:
Hij geeft nu wel erros, maar hij zegt steeds host is onbekend. Define ik iets niet goed?
Persoonlijk zou ik deze gegevens in een je constructor meegeven:
En let erop dat een define die je aanroept niet tussen quotes staat:
Ook zou ik je class in een apart bestand opslaan, om de code schoon te houden.
NB: Los van dit is MySQLi zelf al een class op zich die je niet nogmaals in een andere class hoeft te wrappen. Maar ik neem aan dat het puur om oefening gaat. Als je echt serieus met de MySQLi-class aan de slag wilt gaan is het extenden al een handige bezigheid.
Gewijzigd op 05/01/2017 12:31:29 door - Ariën -
- Rob - op 05/01/2017 11:30:22:
Maar het werkt niet
Waar blijkt dit uit? Mogelijk reeds beantwoord.
- Rob - op 05/01/2017 11:30:22:
het geeft geen errors...
Het is beter om constanten te gebruiken voor de errorlevels dan hun numerieke waarde. Deze numerieke waarden kunnen mogelijk in de toekomst veranderen, de constanten blijven... constant. Gebruik bijvoorbeeld E_ALL (ik zou niet eens weten wat "1" zou moeten rapporteren).
Met error_reporting() geef je aan wat je rapporteert, maar je moet ook aangeven waar er gerapporteerd moet worden. Dit doe je met
Gewijzigd op 05/01/2017 12:35:46 door Thomas van den Heuvel
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
define('HOSTNAAM', $_CONFIG['hostnaam']);
define('GEBRUIKERSNAAM', $_CONFIG['gebruikersnaam']);
define('WACHTWOORD', $_CONFIG['wachtwoord']);
define('DATABASE', $_CONFIG['database']);
class DB {
protected $hostnaam = HOSTNAAM;
protected $gebruikersnaam = GEBRUIKERSNAAM;
protected $wachtwoord = WACHTWOORD;
protected $database = DATABASE;
public function connect() {
$connect_db = @new mysqli($this->hostnaam, $this->gebruikersnaam, $this->wachtwoord, $this->database);
if (mysqli_connect_errno()) {
printf("Er is een fout opgetreden. Foutcode ". mysqli_connect_error().'.');
exit();
}
return true;
}
}
?>
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
define('HOSTNAAM', $_CONFIG['hostnaam']);
define('GEBRUIKERSNAAM', $_CONFIG['gebruikersnaam']);
define('WACHTWOORD', $_CONFIG['wachtwoord']);
define('DATABASE', $_CONFIG['database']);
class DB {
protected $hostnaam = HOSTNAAM;
protected $gebruikersnaam = GEBRUIKERSNAAM;
protected $wachtwoord = WACHTWOORD;
protected $database = DATABASE;
public function connect() {
$connect_db = @new mysqli($this->hostnaam, $this->gebruikersnaam, $this->wachtwoord, $this->database);
if (mysqli_connect_errno()) {
printf("Er is een fout opgetreden. Foutcode ". mysqli_connect_error().'.');
exit();
}
return true;
}
}
?>
Toevoeging op 05/01/2017 13:03:35:
Quote:
NB: Los van dit is MySQLi zelf al een class op zich die je niet nogmaals in een andere class hoeft te wrappen. Maar ik neem aan dat het puur om oefening gaat. Als je echt serieus met de MySQLi-class aan de slag wilt gaan is het extenden al een handige bezigheid.
Ehmm kunt u dit nog een keer maar dan anders voor mij uitleggen? Of een linkje sturen met uitleg
Gewijzigd op 05/01/2017 13:01:48 door - Rob -
- Rob - op 05/01/2017 12:59:49:
Ehmm kunt u dit nog een keer maar dan anders voor mij uitleggen? Of een linkje sturen met uitleg
Lees ook eens: http://www.phptuts.nl/view/26/1/
Gewijzigd op 05/01/2017 13:08:28 door - Ariën -
Quote:
Omdat als ik in 30 bestanden En waarom geef je die inlog-gegevens niet mee in een constructor?
Code (php)
1
2
3
4
5
2
3
4
5
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
define('HOSTNAAM', $_CONFIG['hostnaam']);
define('GEBRUIKERSNAAM', $_CONFIG['gebruikersnaam']);
define('WACHTWOORD', $_CONFIG['wachtwoord']);
define('DATABASE', $_CONFIG['database']);
define('HOSTNAAM', $_CONFIG['hostnaam']);
define('GEBRUIKERSNAAM', $_CONFIG['gebruikersnaam']);
define('WACHTWOORD', $_CONFIG['wachtwoord']);
define('DATABASE', $_CONFIG['database']);
of in 1 bestand, vind ik het makkelijker voor het in init.php te doen zodat ik het maar 1 keer hoef te doen.
Gewijzigd op 05/01/2017 13:14:31 door - Ariën -
dus dit?:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
session_start(); // START UNIEKE SESSIE \\
// IMPORTEER DE BENODIGE CODE \\
require $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/init.php';
require $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/functions.php';
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
define('HOSTNAAM', $_CONFIG['hostnaam']);
define('GEBRUIKERSNAAM', $_CONFIG['gebruikersnaam']);
define('WACHTWOORD', $_CONFIG['wachtwoord']);
define('DATABASE', $_CONFIG['database']);
$db = new DB(HOSTNAAM, GEBRUIKERSNAAM, WACHTWOORD, DATABASE);
$db->connect();
// KIJK OF DE BEZOEKER IS INGELOGD \\
if (loggedIn() == true) {
header('Location: /paneel/dashboard');
exit();
}
?>
session_start(); // START UNIEKE SESSIE \\
// IMPORTEER DE BENODIGE CODE \\
require $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/init.php';
require $_SERVER["DOCUMENT_ROOT"] . '/paneel/assets/include/functions.php';
$_CONFIG = parse_ini_file($_SERVER["DOCUMENT_ROOT"] . '/../datafile.ini', true);
define('HOSTNAAM', $_CONFIG['hostnaam']);
define('GEBRUIKERSNAAM', $_CONFIG['gebruikersnaam']);
define('WACHTWOORD', $_CONFIG['wachtwoord']);
define('DATABASE', $_CONFIG['database']);
$db = new DB(HOSTNAAM, GEBRUIKERSNAAM, WACHTWOORD, DATABASE);
$db->connect();
// KIJK OF DE BEZOEKER IS INGELOGD \\
if (loggedIn() == true) {
header('Location: /paneel/dashboard');
exit();
}
?>
Quote:
Quote:
NB: Los van dit is MySQLi zelf al een class op zich die je niet nogmaals in een andere class hoeft te wrappen. Maar ik neem aan dat het puur om oefening gaat. Als je echt serieus met de MySQLi-class aan de slag wilt gaan is het extenden al een handige bezigheid.
Ehmm kunt u dit nog een keer maar dan anders voor mij uitleggen? Of een linkje sturen met uitleg
[/quote
NB: Los van dit is MySQLi zelf al een class op zich die je niet nogmaals in een andere class hoeft te wrappen. Maar ik neem aan dat het puur om oefening gaat. Als je echt serieus met de MySQLi-class aan de slag wilt gaan is het extenden al een handige bezigheid.
Ehmm kunt u dit nog een keer maar dan anders voor mij uitleggen? Of een linkje sturen met uitleg
[/quote
Gewijzigd op 05/01/2017 13:13:03 door - Rob -
Als we het over het extenden van MySQLi hebben, dan gebruik ik het volgende.
Op deze manier heb ik binnen de overervende Database-class meteen foutafhandeling in mijn $db->query(".....");
Code (php)
Ikzelf gebruik geen eigen aparte class voor mijn database, maar een extend op de bestaande MySQLi. Anders sta je feitelijk het wiel opnieuw weer uit te vinden. Met deze manier kan je zelf nieuwe functies toevoegen of huidige overerven...
Gewijzigd op 05/01/2017 13:18:36 door - Ariën -
- Rob - op 05/01/2017 13:11:37:
Ehmm kunt u dit nog een keer maar dan anders voor mij uitleggen? Of een linkje sturen met uitleg
voorbeeld
Het heeft trouwens weinig zin om constanten te declareren voor $_CONFIG variabelen, gebruik dan rechtstreeks $_CONFIG.
Gewijzigd op 05/01/2017 13:26:30 door Thomas van den Heuvel
Quote:
Hoe stuur ik deze functie dan aan? En hoe zet ik de query (bv. "SELECT * FROM test") erin?
Misschien is dit een goed moment om even door een basistutorial OOP heen te lopen.
http://www.phptuts.nl/view/45/1/
En begin gewoon met basis dingen, zoals een "Hello World" met variabelen erin die je in class en je methods aanroept. Extenden ligt nog iets te ver weg.
Toevoeging op 05/01/2017 14:15:28:
Toch even voor te checken of ik het goed heb gedaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
class SiteStatus
{
protected $maintanceModus = ONDERHOUD;
protected $maintenanceGlobal = ONDERHOUD_OVERAL;
protected $maintenanceLocations = array("index");
protected $maintenanceMessage = 'Onderhoud modus.';
public function inMaintenance($currentLocation)
{
if ($this->maintanceModus == "true")
{
if ($this->maintenanceGlobal == "false")
{
if (in_array($currentLocation, $this->maintenanceLocations))
{
die($this->maintenanceMessage);
}
}
else
{
die($this->maintenanceMessage);
}
}
}
}
?>
//**-----------------------------------------------------------------------------------------------------------------
INDEX FILE
**\\-----------------------------------------------------------------------------------------------------------------
define('ONDERHOUD', $_CONFIG['onderhoud']);
define('ONDERHOUD_OVERAL', $_CONFIG['onderhoud_overal']);
$siteStatus = new SiteStatus(ONDERHOUD, ONDERHOUD_OVERAL);
$siteStatus->inMaintenance("index");
class SiteStatus
{
protected $maintanceModus = ONDERHOUD;
protected $maintenanceGlobal = ONDERHOUD_OVERAL;
protected $maintenanceLocations = array("index");
protected $maintenanceMessage = 'Onderhoud modus.';
public function inMaintenance($currentLocation)
{
if ($this->maintanceModus == "true")
{
if ($this->maintenanceGlobal == "false")
{
if (in_array($currentLocation, $this->maintenanceLocations))
{
die($this->maintenanceMessage);
}
}
else
{
die($this->maintenanceMessage);
}
}
}
}
?>
//**-----------------------------------------------------------------------------------------------------------------
INDEX FILE
**\\-----------------------------------------------------------------------------------------------------------------
define('ONDERHOUD', $_CONFIG['onderhoud']);
define('ONDERHOUD_OVERAL', $_CONFIG['onderhoud_overal']);
$siteStatus = new SiteStatus(ONDERHOUD, ONDERHOUD_OVERAL);
$siteStatus->inMaintenance("index");
Hopelijk klopt het :P
Toevoeging op 05/01/2017 14:34:24:
:D
Gewijzigd op 05/01/2017 14:16:02 door - Rob -