PHP classes

Gestart doorAntonn16 reacties17 weergaven

17 berichten · pagina 1 van 2

Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hi,

Ik bedacht me even wat...

function userinf($row = , $usrname = )
    {
        $data = mysql_fetch_array(mysql_query("SELECT ".$row." FROM users WHERE username = ".$usrname." LIMIT 1;"));
        return $data[$row];
    }


Dit heb ik even snel getypt als voorbeeld. Ik dacht van... Wat als je dit hebt?

Ergens op ingeclude pagina staat dit:
userinf(id, antonn);
en ergens anders 
userinf(mail, antonn);
en dan weer ergens anders
userinf(id, antonn);


Dan voert die 3 queries uit. Het kan ook met SELECT id, mail . Hoe kan ik dit doen? Dit lijkt me veel geoptimaliseerder?

Grtz
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Door gewoon te bedenken of je op die pagina één rij van een user nodig hebt of heel veel rijen.
In het 1e geval gebruik je jouw functie, in het 2e geval maak je een functie erbij die SELECT * doet, de boel opslaat in een array en zorg ervoor dat jouw userinf() van die array gebruik maakt.

Je cachet dan de boel als het ware, je kan je huidige functie blijven gebruiken, en toch is het veel minder intensief.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Of je doet gewoon
userinf(antonn, column1,column2,column3);

En dan function userinf($func = default)

En dan haal je $func - eerste result op met func get parameters daar is zon functie voor ofzo..
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hmm...

SELECT * is toch slechter als SELECT name, mail, password ??? Ik ben voor dat laatste aangezien ik dacht dat dat sneller was?
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
* selecteert ALLES
x, x,x selecteert alleen wat je aangeeft
Als je minder ophaalt gaat dat inderdaad sneller
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Ja maar als je toch alle kolommen nodig hebt dan maakt dat niet uit. Eén keer SELECT * is alsnog veel beter dan tig keer SELECT dinges FROM ...
Maar het beste is natuurlijk SELECT x, y, z; zoals Nielsie al zegt smile
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Daar ga ik dus voor, wat als ik 50 rijen heb?

toevoeging op 19 september 2012, 17:58:24:
En er maar 2 nodig heb...
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Als je 50 rijen hebt, 2 nodig hebt moet je die 2 apart selecteren..
Heb je er 50 en 30 nodig dan zal ik gewoon * doen..
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Nou ik heb dr 5 nodig, maar het is moeilijk ze samen op te halen ivm dat er wat in de geinvlude layout zit, wat in het algemene include bestand en de pagina zelf zit.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Dan doe je toch gewoon SELECT *?
Bij elke pageview van een ingelogde user doe ik ook SELECT * in mn leden-class, want op elke pagina heb ik weer andere informatie van dat lid nodig, en als je dan een keer select * doet dan is dat echt geen ramp hoor, als je maar niet OVERAL dat sterretje gaat plakken.
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Dan doe je toch gewoon SELECT *?
Bij elke pageview van een ingelogde user doe ik ook SELECT * in mn leden-class, want op elke pagina heb ik weer andere informatie van dat lid nodig, en als je dan een keer select * doet dan is dat echt geen ramp hoor, als je maar niet OVERAL dat sterretje gaat plakken.
OK pompom
En als iemand toevallig een standaard loginsysteempje met classes vind met ook layout die eenvouwdig wijzigbaar is en heel modern enzo mag je me ook altijd link sturen smile
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Class User

private $arrInfo;

:: construct($var) -> Select * from x where name = $var
         -> Zet in array $arrInfo

:: getInf($var) -> $var ophalen uit $arrInfo


[COLOR= #0000BB]<?
$currentUser[/COLOR] [COLOR= #007700]= New[/COLOR] User[COLOR= #007700]([/COLOR][COLOR= #DD0000]Antonn[/COLOR][COLOR= #007700]);[/COLOR]

[COLOR= #0000BB]$currentUser[/COLOR][COLOR= #007700]->[/COLOR]getInf[COLOR= #007700]([/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]);[/COLOR]
?>


Zoiets kan ook. Is ook meteen een stuk meer OOP gericht.
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Class User

private $arrInfo;

:: construct($var) -> Select * from x where name = $var
         -> Zet in array $arrInfo

:: getInf($var) -> $var ophalen uit $arrInfo
[COLOR= #0000BB]<?
$currentUser[/COLOR] [COLOR= #007700]= New[/COLOR] User[COLOR= #007700]([/COLOR][COLOR= #DD0000]Antonn[/COLOR][COLOR= #007700]);[/COLOR]

[COLOR= #0000BB]$currentUser[/COLOR][COLOR= #007700]->[/COLOR]getInf[COLOR= #007700]([/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]);[/COLOR]
?>


Zoiets kan ook. Is ook meteen een stuk meer OOP gericht.

Dus eigenlijk 1malig dit uit database halen en dan in array opslaan?
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Jep.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Maar dan is het wel dat als je iets update in de database van een gebruiker je het ook in de array moet doen yummie
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren