Kan niet verder met UPDATE function
Ik ben bezig met een kleine CMS voor een schoolproject en we moeten hiervoor OOP PHP gebruiken, dus geen procedural.
Waar ik hulp bij nodig heb is de UPDATE function. Ik heb een openingstijden sectie die uit de database word gehaald in het dashboard, en ik wil hem via het dashboard met een form en php updaten zodat hij in de database ook geupdated word. Het probleem is dat ik niet weet hoe ik verder moet aangezien ik nog niet zo ver ben met OOP, en op internet kan ik het ook niet duidelijk vinden.
Als er verder nog opmerkingen of tips zijn, laat het weten, alles is welkom!
Dit heb ik tot nu toe:
Dashboard.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php session_start();
//Check for errors
error_reporting(E_ALL);
ini_set("display_errors", 1);
// Require
require('classes/users.class.php');
require('classes/openingstime.class.php');
//Setters
$user = new User();
$user->setusername($_POST["username"]);
$user->setpassword($_POST["password"]);
$user->login_check();
$openingstime = new Openingstime();
?>
//Check for errors
error_reporting(E_ALL);
ini_set("display_errors", 1);
// Require
require('classes/users.class.php');
require('classes/openingstime.class.php');
//Setters
$user = new User();
$user->setusername($_POST["username"]);
$user->setpassword($_POST["password"]);
$user->login_check();
$openingstime = new Openingstime();
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>
<div id="container">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
if (isset($_SESSION["login"]))
{
echo "
<h3>Welkom, ".$_SESSION['username'].".</h3>".
"<a href='logout.php'>Uitloggen</a><br><br>";}
else
{
echo "
<h3>Je bent nog niet aangemeld.</h3>
Je kunt <a href='login.php'>hier</a> inloggen.
";
}
?>
ini_set('display_errors', 'On');
error_reporting(E_ALL);
if (isset($_SESSION["login"]))
{
echo "
<h3>Welkom, ".$_SESSION['username'].".</h3>".
"<a href='logout.php'>Uitloggen</a><br><br>";}
else
{
echo "
<h3>Je bent nog niet aangemeld.</h3>
Je kunt <a href='login.php'>hier</a> inloggen.
";
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$result = $openingstime->getOpeningstime();
echo '<form action="" method="post">';
foreach($result as $key => $value) {
//echo $value['openingstime_id'];
echo $value['day'] . " ";
echo '<input type="text" name="'.$value['openingstime_id'].'" value="' .$value['opentime'].'" />';
};
echo '<input type="submit" name="submit" value="Wijzig"></form>';
?>
$result = $openingstime->getOpeningstime();
echo '<form action="" method="post">';
foreach($result as $key => $value) {
//echo $value['openingstime_id'];
echo $value['day'] . " ";
echo '<input type="text" name="'.$value['openingstime_id'].'" value="' .$value['opentime'].'" />';
};
echo '<input type="submit" name="submit" value="Wijzig"></form>';
?>
</div>
</body>
</html>
openingstime.class.php
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
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
<?php
class Openingstime {
//Properties
private $day;
private $opentime;
private $mysqli;
//Methods
public function __construct() {
$this->mysqli = new mysqli("localhost", "root", "root", "rijwielenverhuur");
}
public function getOpeningstime() {
$result = $this->mysqli->query("SELECT * FROM openingstime");
$arr = array();
while($row = $result->fetch_array()) {
$arr[] = $row;
}
return $arr;
}
public function editOpeningstime() {
foreach ($_POST as $id => $value) {
// is $id wel een nummer
$result = $this->mysqli->query("UPDATE openingstime SET day = $_POST['day'], opentime = $_POST['opentime'] WHERE openingstime_id = $id");
}
}
}
?>
class Openingstime {
//Properties
private $day;
private $opentime;
private $mysqli;
//Methods
public function __construct() {
$this->mysqli = new mysqli("localhost", "root", "root", "rijwielenverhuur");
}
public function getOpeningstime() {
$result = $this->mysqli->query("SELECT * FROM openingstime");
$arr = array();
while($row = $result->fetch_array()) {
$arr[] = $row;
}
return $arr;
}
public function editOpeningstime() {
foreach ($_POST as $id => $value) {
// is $id wel een nummer
$result = $this->mysqli->query("UPDATE openingstime SET day = $_POST['day'], opentime = $_POST['opentime'] WHERE openingstime_id = $id");
}
}
}
?>
Gewijzigd op 09/03/2015 14:44:57 door Ayrton Martins
- vooral als je user class ook gebruik maakt van een database-connectie, zet code hiervoor in een aparte database-class, en creëer eenmalig een database-object en geef deze bij de creatie van objecten van classes die gebruik maken van een database door zodat je niet (zoals je in de Openingstime class (wellicht ook) doet) meerdere keren een connectie maakt met je database
- als je gebruik maakt van sessies, houd hierin dan bij dat iemand is ingelogd - het lijkt erop dat je in je dashboard elke pagina-access opnieuw inlogt? Of ik snap regel 13-16 niet.
- gebruik overal dezelfde character encoding:
* in je HTML-document via meta-tag en/of PHP-header
* in je database connectie via de _set_charset() functie
* in je database-tabellen
* in de data van je database-tabellen
- je drukt rechtstreeks waarden af in je value-property (maar deze kan HTML bevatten) en in je query (maar deze kan SQL bevatten) - het is verstandig om deze waarden te ontdoen van enige speciale betekenis in die "context" - gebruik hiervoor escape-functies: htmlspecialchars() voor HTML, mysqli_real_escape_string() voor de DATA-delen in je queries; dit heet ook wel "output escaping"; voor een correcte werking is het van groot belang dat de juiste character encoding wordt gebruikt
- administratieve instellingen (het starten van een sessie, het weergeven van fouten) die je overal gebruik zou je wellicht in een apart configuratie-bestand kunnen zetten dat je overal include