Vast met edit account class
Ben op dit moment bezig met een edit account class. Waar iemand dus geregistreerd is, een account heeft maar dat ook aan kan passen. Maar nu kom ik er even niet meer uit. Dus hoop dat iemand mij beetje op weg kan helpen en/of suggesties heeft!
Alvast bedankt!! (zal hieronder het script posten)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
error_reporting(E_ALL | E_STRICT);
require_once ("index.php");
class ManageAccount
{
private $m_sField;
private $m_aAccountData;
private $oForm;
public function __construct($p_sFormName, $p_sFormType, $p_sFormAction)
{
$this->oForm = new Form($p_sFormName, $p_sFormType, $p_sFormAction);
}
public function getAccountData($p_sTableName, $p_aFieldNames, $p_aPostValues, $p_sWhereField,
$p_vWhereValue, $p_sAndStatement = "")
{
if (!empty($p_sTableName) && !empty($p_aFieldNames) && !empty($p_aPostValues) &&
!empty($p_sWhereField) && !empty($p_vWhereValue)) {
if ((count($p_aPostValues) - 1) == count($p_aFieldNames)) {
$sQuery = "UPDATE " . mysql_real_escape_string($p_sTableName) . " SET ";
for ($nCount = 0; $nCount <= (count($p_aPostValues) - 1); $nCount++) {
$sQuery .= mysql_real_escape_string($p_aFieldNames[$nCount]) . " = '" .
mysql_real_escape_string($p_aPostValues[$nCount]) . "', ";
}
$sQuery = substr($sQuery, 0, -2);
$sQuery .= " WHERE " . mysql_real_escape_string($p_sWhereField) . " = '" .
mysql_real_escape_string($p_sWhereValue) . "'";
if (!empty($p_sAndStatement)) {
$sQuery .= $p_sAndStatement;
}
mysql_query($sQuery) or die("Database error: " . mysql_error() . "<br />");
$statusMessage = "De account is bewerkt.";
return $statusMessage;
} else {
$statusMessage = "Het aantal opgegeven waardes van de meegestuurde variabelen en veldnamen kwamen niet overeen.";
return $statusMessage;
}
} else {
$statusMessage = "Onvoldoende informatie meegegeven.";
return $statusMessage;
}
}
private function makeForm(){
echo 'Username: ';
$this->m_sField = $this->oForm->makeField("username","text","",$this->m_aAccountData['username']);
echo '<br />';
echo 'Password: ';
$this->m_sField .= $this->oForm->makeField("password","password","",$this->m_aAccountData['password']);
echo '<br />';
echo 'E-mail: ';
$this->m_sField .= $this->oForm->makeField("email","text","",$this->m_aAccountData['email']);
echo '<br />';
echo 'Telefoon: ';
$this->m_sField .= $this->oForm->makeField("telefoon","text","",$this->m_aAccountData['telefoon']);
echo '<br />';
$this->m_sField .= $this->oForm->makeField("submit","wijzig","Wijzig");
}
public function showForm() {
$this->makeForm();
return $this->m_sField;
}
}
$m = new ManageAccount("test", "POST", "");
echo $m->showForm();
?>
error_reporting(E_ALL | E_STRICT);
require_once ("index.php");
class ManageAccount
{
private $m_sField;
private $m_aAccountData;
private $oForm;
public function __construct($p_sFormName, $p_sFormType, $p_sFormAction)
{
$this->oForm = new Form($p_sFormName, $p_sFormType, $p_sFormAction);
}
public function getAccountData($p_sTableName, $p_aFieldNames, $p_aPostValues, $p_sWhereField,
$p_vWhereValue, $p_sAndStatement = "")
{
if (!empty($p_sTableName) && !empty($p_aFieldNames) && !empty($p_aPostValues) &&
!empty($p_sWhereField) && !empty($p_vWhereValue)) {
if ((count($p_aPostValues) - 1) == count($p_aFieldNames)) {
$sQuery = "UPDATE " . mysql_real_escape_string($p_sTableName) . " SET ";
for ($nCount = 0; $nCount <= (count($p_aPostValues) - 1); $nCount++) {
$sQuery .= mysql_real_escape_string($p_aFieldNames[$nCount]) . " = '" .
mysql_real_escape_string($p_aPostValues[$nCount]) . "', ";
}
$sQuery = substr($sQuery, 0, -2);
$sQuery .= " WHERE " . mysql_real_escape_string($p_sWhereField) . " = '" .
mysql_real_escape_string($p_sWhereValue) . "'";
if (!empty($p_sAndStatement)) {
$sQuery .= $p_sAndStatement;
}
mysql_query($sQuery) or die("Database error: " . mysql_error() . "<br />");
$statusMessage = "De account is bewerkt.";
return $statusMessage;
} else {
$statusMessage = "Het aantal opgegeven waardes van de meegestuurde variabelen en veldnamen kwamen niet overeen.";
return $statusMessage;
}
} else {
$statusMessage = "Onvoldoende informatie meegegeven.";
return $statusMessage;
}
}
private function makeForm(){
echo 'Username: ';
$this->m_sField = $this->oForm->makeField("username","text","",$this->m_aAccountData['username']);
echo '<br />';
echo 'Password: ';
$this->m_sField .= $this->oForm->makeField("password","password","",$this->m_aAccountData['password']);
echo '<br />';
echo 'E-mail: ';
$this->m_sField .= $this->oForm->makeField("email","text","",$this->m_aAccountData['email']);
echo '<br />';
echo 'Telefoon: ';
$this->m_sField .= $this->oForm->makeField("telefoon","text","",$this->m_aAccountData['telefoon']);
echo '<br />';
$this->m_sField .= $this->oForm->makeField("submit","wijzig","Wijzig");
}
public function showForm() {
$this->makeForm();
return $this->m_sField;
}
}
$m = new ManageAccount("test", "POST", "");
echo $m->showForm();
?>
Kortom, stel eens een concrete vraag...
Hoe zet ik bijvoorbeeld nu makkelijk mijn gegevens die ik uit de database haal in het formulier? Dus dat je de gegevens in de invoervelden zet van het formulier, zodat je snel en makkelijk kan zien wat je huidige gegevens zijn en dat dan kan veranderen.
Verder is de naam van je methode getAccountData erg ongelukkig gekozen, aangezien er met deze methode geen enkel gegeven opgehaald wordt. Er worden alleen maar UPDATE queries uitgevoerd dus setAccountData of updateAccountData zou logischer zijn.
Als laatste is een die() is een klasse wel het laatste waar je mee wilt werken. Als er iets fout gaat gooi je een exception die je tijdens het uitvoeren weer kunt opvangen...
Exception heb ik gedaan. En naam heb ik ook veranderd. Oke, misschien een domme vraag, maar hoe haal ik dat uit database, zet in array en laat het dan in de velden van formulier zien?
Gegevens uit de database halen doe je met een SELECT query. Vervolgens fetch je de resultaten en kun je ze in de betreffende member zetten.
Bedankt! Krijg nu alles goed! Alleen het editten van account doet ie nog niet helemaal. Daar ga ik morgen even naar kijken, maar als iemand het ziet of weet dan hoor ik het graag!