Hoe kan deze code korter?
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.
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
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
Enfin, kan de code op een andere manier korter?
$_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).
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
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?