Hoe kan deze code korter?
Hoi mensen,
Ik heb de onderstaande code in mijn 'functies.inc.php' staan, maar ik vroeg me af of dit ook korter kon (zonder OOP).
Zoals je ziet moet ik bij elke functie weer een query gebruiken, kan ik dit niet veel simpeler doen?
Ohja, ik heb ook al het onderstaande gemaakt, maar dat vind ik niet fijn werken:
Iemand een idee? Alvast bedankt.
Edit: Wat ik dus wil doen is door simpelweg een functie aan te roepen bepaalde gegevens opvragen van een gebruiker.
Ik heb de onderstaande code in mijn 'functies.inc.php' staan, maar ik vroeg me af of dit ook korter kon (zonder OOP).
Zoals je ziet moet ik bij elke functie weer een query gebruiken, kan ik dit niet veel simpeler doen?
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
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
<?php
function getUsername($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_name FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_name'] : 'unknown';
}
function getEmailaddress($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_email FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_email'] : 'unknown';
}
function getFirstname($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_firstname FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_firstname'] : 'unknown';
}
function getLastname($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_lastname FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_lastname'] : 'unknown';
}
function getGender($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_gender FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_gender'] : 'unknown';
}
?>
function getUsername($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_name FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_name'] : 'unknown';
}
function getEmailaddress($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_email FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_email'] : 'unknown';
}
function getFirstname($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_firstname FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_firstname'] : 'unknown';
}
function getLastname($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_lastname FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_lastname'] : 'unknown';
}
function getGender($iUserID = '')
{
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_gender FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_gender'] : 'unknown';
}
?>
Ohja, ik heb ook al het onderstaande gemaakt, maar dat vind ik niet fijn werken:
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
function getUser($iUserID = '', $iMethod = '')
{
$aMethods = Array('user_name', 'user_email', 'user_firstname', 'user_lastname', 'user_gender');
$iMethod = (in_array($iMethod, $aMethods)) ? $iMethod : 'user_name';
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, ". $iMethod ." FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch[$iMethod] : 'unknown';
}
?>
function getUser($iUserID = '', $iMethod = '')
{
$aMethods = Array('user_name', 'user_email', 'user_firstname', 'user_lastname', 'user_gender');
$iMethod = (in_array($iMethod, $aMethods)) ? $iMethod : 'user_name';
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, ". $iMethod ." FROM users WHERE user_id = '". (int)$iUserID ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch[$iMethod] : 'unknown';
}
?>
Iemand een idee? Alvast bedankt.
Edit: Wat ik dus wil doen is door simpelweg een functie aan te roepen bepaalde gegevens opvragen van een gebruiker.
Gewijzigd op 28/12/2010 12:06:50 door Kevin de Groot
Je kunt het beste 1x per pagina-aanroep of 1x per sessie de benodigde gegevens ophalen en bijvoorbeeld in een array zetten. Als je dan gegevens nodig hebt haal je ze uit de array. Je voert dan dus maar 1x een query uit.
Ozzie PHP op 28/12/2010 12:10:59:
Je kunt het beste 1x per pagina-aanroep of 1x per sessie de benodigde gegevens ophalen en bijvoorbeeld in een array zetten. Als je dan gegevens nodig hebt haal je ze uit de array. Je voert dan dus maar 1x een query uit.
Ik ben bang dat ik je niet helemaal begrijp. Ik wil dus gewoon gegevens (d.m.v. een functie) van een gebruiker ophalen.
je bedoelt dus
echo getGroup(Userid); ?
allereerst.
waarom roep je de heletijd de COUNT op terwijl dit met num_rows kan?
echo getGroup(Userid); ?
allereerst.
waarom roep je de heletijd de COUNT op terwijl dit met num_rows kan?
Gewijzigd op 28/12/2010 12:19:33 door Dindong Veter
Als ik bijv. een forum heb en ik wil de naam van de topicstarter weergeven, dan haal ik de user_id uit de database. Normaliter zou ik ook nog een query moeten maken om de username te kunnen achterhalen (SELECT user_name FROM users etc.). Nu kan ik a.d.h.v. de user_id met een functie de username achterhalen.
Ik zou dus inderdaad ook een functie kunnen maken om te kijken in welke groep een user zit d.m.v. getGroup() of iets dergelijks, ja.
Stel dat de topicstarter user_id 666 heeft, dan kan ik dus dit doen:
En die returned dan bijv. 'Kevin'.
Ik zou dus inderdaad ook een functie kunnen maken om te kijken in welke groep een user zit d.m.v. getGroup() of iets dergelijks, ja.
Stel dat de topicstarter user_id 666 heeft, dan kan ik dus dit doen:
En die returned dan bijv. 'Kevin'.
Paul L op 28/12/2010 12:16:25:
je bedoelt dus
echo getGroup(Userid); ?
allereerst.
waarom roep je de heletijd de COUNT op terwijl dit met num_rows kan?
echo getGroup(Userid); ?
allereerst.
waarom roep je de heletijd de COUNT op terwijl dit met num_rows kan?
Schijnt dat dit sneller werkt dan mysql_num_rows(), lees: dit
hangt er vanaf, lees dit
Oké, hier heb ik wel iets nodig, en dus zou mysql_num_rows() sneller zijn.
Enfin, kan de code op een andere manier korter?
Enfin, kan de code op een andere manier korter?
Waarom maak je er geen class van en dan zet je in de __construct de query die alle gegevens opslaat in de class. Dan hoef je maar 1x je database op te roepen en kun je het overal makkelijk gebruiken.
$_user = new class;
$_user->getLastname;
$_user = new class;
$_user->getLastname;
Kevin de Groot:
Ik heb de onderstaande code in mijn 'functies.inc.php' staan, maar ik vroeg me af of dit ook korter kon (zonder OOP).
Opzich zou je een functie kunnen maken en er een type ingooien
type = wat je wil oproepen bijvoorbeeld een username etc.
zou je eventueel met een array kunnen doen, en je hoeft maar 1 keer de query te runnen
function getInfo($type,$user){
}
type = wat je wil oproepen bijvoorbeeld een username etc.
zou je eventueel met een array kunnen doen, en je hoeft maar 1 keer de query te runnen
function getInfo($type,$user){
}
Gewijzigd op 28/12/2010 12:43:41 door Dindong Veter
Zoiets dan?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function setData($userid) {
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_firstname, user_lastname, user_email, user_gender FROM users WHERE user_id = '". (int)$userid ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_firstname'] : false;
}
function getLastname()
{
global $_user;
return $_user['user_lastname'];
}
if($_user = setData($userid)) {
echo "gelukt";
}
else {
echo "Fout!";
}
?>
function setData($userid) {
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_firstname, user_lastname, user_email, user_gender FROM users WHERE user_id = '". (int)$userid ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_firstname'] : false;
}
function getLastname()
{
global $_user;
return $_user['user_lastname'];
}
if($_user = setData($userid)) {
echo "gelukt";
}
else {
echo "Fout!";
}
?>
Gewijzigd op 28/12/2010 12:51:53 door Yea Rupie
Paul L op 28/12/2010 12:42:15:
Opzich zou je een functie kunnen maken en er een type ingooien
type = wat je wil oproepen bijvoorbeeld een username etc.
zou je eventueel met een array kunnen doen, en je hoeft maar 1 keer de query te runnen
function getInfo($type,$user){
}
type = wat je wil oproepen bijvoorbeeld een username etc.
zou je eventueel met een array kunnen doen, en je hoeft maar 1 keer de query te runnen
function getInfo($type,$user){
}
Dit had ik ook gedaan, zie onderin mijn post.
Toevoeging op 28/12/2010 13:01:58:
Yea Rupie op 28/12/2010 12:48:22:
Zoiets dan?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function setData($userid) {
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_firstname, user_lastname, user_email, user_gender FROM users WHERE user_id = '". (int)$userid ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_firstname'] : false;
}
function getLastname()
{
global $_user;
return $_user['user_lastname'];
}
if($_user = setData($userid)) {
echo "gelukt";
}
else {
echo "Fout!";
}
?>
function setData($userid) {
$uSelect = mysql_query("SELECT COUNT(user_id) AS num_rows, user_firstname, user_lastname, user_email, user_gender FROM users WHERE user_id = '". (int)$userid ."' ORDER BY user_id LIMIT 0,1");
$uFetch = mysql_fetch_assoc($uselect);
return ($uFetch['num_rows'] == 1) ? $uFetch['user_firstname'] : false;
}
function getLastname()
{
global $_user;
return $_user['user_lastname'];
}
if($_user = setData($userid)) {
echo "gelukt";
}
else {
echo "Fout!";
}
?>
Dit snap ik niet echt. Bedoel je dat je de mysql_fetch_assoc toegankelijk maakt in elke functie? En dan enkel de query iets aanpast in elke functie?
En waar is de foutafhandeling...?
Karl Karl op 28/12/2010 13:48:27:
En waar is de foutafhandeling...?
In de code op mijn Personal Computer :)
Had dit even snel getypt.
Maar..................... Kan deze code korter?




