Hoe kan deze code korter?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kevin de Groot

Kevin de Groot

28/12/2010 12:05:38
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
}


?>


Ohja, ik heb ook al het onderstaande gemaakt, maar dat vind ik niet fijn werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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';
}


?>


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
 
PHP hulp

PHP hulp

02/10/2022 08:25:16
 
Ozzie PHP

Ozzie PHP

28/12/2010 12:10:59
Quote Anchor link
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.
 
Kevin de Groot

Kevin de Groot

28/12/2010 12:12:46
Quote Anchor link
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.
 
Dindong Veter

Dindong Veter

28/12/2010 12:16:25
Quote Anchor link
je bedoelt dus

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
 
Kevin de Groot

Kevin de Groot

28/12/2010 12:20:56
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo getFirstname(666); ?>
En die returned dan bijv. 'Kevin'.
 
Dindong Veter

Dindong Veter

28/12/2010 12:21:53
Quote Anchor link
waarom niet
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
return (mysql_num_rows($uSelect) == 1) ? $uFetch[$iMethod] : 'unknown';
 
Kevin de Groot

Kevin de Groot

28/12/2010 12:23:31
Quote Anchor link
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?


Schijnt dat dit sneller werkt dan mysql_num_rows(), lees: dit
 
Jasper DS

Jasper DS

28/12/2010 12:27:26
Quote Anchor link
hangt er vanaf, lees dit
 
Kevin de Groot

Kevin de Groot

28/12/2010 12:32:02
Quote Anchor link
Oké, hier heb ik wel iets nodig, en dus zou mysql_num_rows() sneller zijn.
Enfin, kan de code op een andere manier korter?
 
Yea Rupie

Yea Rupie

28/12/2010 12:36:31
Quote Anchor link
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;
 
Kevin de Groot

Kevin de Groot

28/12/2010 12:37:44
Quote Anchor link
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).
 
Dindong Veter

Dindong Veter

28/12/2010 12:42:15
Quote Anchor link
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){

}
Gewijzigd op 28/12/2010 12:43:41 door Dindong Veter
 
Yea Rupie

Yea Rupie

28/12/2010 12:48:22
Quote Anchor link
Zoiets dan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!";    
}

?>
Gewijzigd op 28/12/2010 12:51:53 door Yea Rupie
 
Kevin de Groot

Kevin de Groot

28/12/2010 12:58:13
Quote Anchor link
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){

}






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)
PHP script in nieuw venster Selecteer het PHP script
1
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!";    
}

?>


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?
 

28/12/2010 13:48:27
Quote Anchor link
En waar is de foutafhandeling...?
 
Kevin de Groot

Kevin de Groot

28/12/2010 13:49:46
Quote Anchor link
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?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.