Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2010, 11h19   #1
Nouveau Membre du Club
 
Homme Baptiste
Développeur décisionnel
Inscription : février 2009
Messages : 136
Détails du profil
Informations personnelles :
Nom : Homme Baptiste
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Bâtiment

Informations forums :
Inscription : février 2009
Messages : 136
Points : 32
Points : 32
Par défaut Optimiser ce code

Bonjour,

J'aimerais optimiser une fonction d'une de mes classe car je trouve qu'elle prend pas mal de temps.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Transforme un resultSet en tableau associatif
public function makeTab($result){
	$arrRes = array();
 
	$fonction = ($this->typeBase == "MySQL") ? "mysql_fetch_assoc" : "odbc_fetch_array";
 
	if ($this->nbResultats($result) > 0){
		while($res = $fonction($result)){				
			array_push($arrRes , $res);
		}
	}
 
	return $arrRes;
}
En fait, selon l'attribut "typeBase" , la fonction a utiliser est "mysql_fetch_assoc" ou "odbc_fetch_array".

Je pense que le principal à optimiser est la partie
Code :
while($res = $fonction($result))
car à chaque passage dans la boucle on utilise la fonction, et j'imagine que c'est pas vraiment performant

Vous auriez une idée pour optimiser ce code ?

Bonne journée à tous
Xenon03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 11h25   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
hello,
array_push c'est pas fait pour insérer 1 valeur
fait direct

après t'as pas trop le choix, c'est comme ça que sa marche, utilise PDO sinon
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 11h30   #3
Nouveau Membre du Club
 
Homme Baptiste
Développeur décisionnel
Inscription : février 2009
Messages : 136
Détails du profil
Informations personnelles :
Nom : Homme Baptiste
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Bâtiment

Informations forums :
Inscription : février 2009
Messages : 136
Points : 32
Points : 32
Merci quand même ...
Xenon03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 11h41   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par Xenon03 Voir le message
Merci quand même ...
t'as pas PDO ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 13h55   #5
Futur Membre du Club
 
Pierre Schinko
Inscription : novembre 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : Pierre Schinko
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2010
Messages : 17
Points : 19
Points : 19
c'est vrai qu'avec PDO, ce serai top

Code php :
 return $res->fetchAll(PDO::FETCH_ASSOC);
a++
Pierrot0459 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 09h55   #6
Nouveau Membre du Club
 
Homme Baptiste
Développeur décisionnel
Inscription : février 2009
Messages : 136
Détails du profil
Informations personnelles :
Nom : Homme Baptiste
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Bâtiment

Informations forums :
Inscription : février 2009
Messages : 136
Points : 32
Points : 32
En fait le soucis est que je me connecte à une base Hyperfile, et que je n'arrive pas à utiliser PDO pour ce type de base

Normalement je fait :
Code :
$connect = odbc_connect($nomDriver,"","")
Avec PDO :
Code :
$connect = new PDO('odbc:'.$nomDriver, '', '');
Mais l'objet $connect est vide :
renvoit PDO Object ( )
Xenon03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 14h01   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
normal ca
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/12/2010, 17h34   #8
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
ca devrai aider ceci, j'ai extrait ca d'un de mes codes

Code :
1
2
3
define('DB_NAME', 'C:\temp\monfichier.mdb');
define('DB_USER', 'root');
define('DB_PASS', '');
Code :
1
2
3
4
5
6
7
8
9
10
11
	/**
	 * @param string $db_name
	 * @param string $db_user
	 * @param string $db_pass
	 */
	protected function odbcConnect($db_name, $db_user, $db_pass){
		if(is_null($db_name) || is_null($db_user) || is_null($db_pass))
			die('intance DAO impossible! parametre manquant verifier fichier conf.php');
		$server = 'odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq='.$db_name;
		$this->db = new PDO($server,$db_user,$db_pass);
	}
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 19h16   #9
Membre éclairé
 
Inscription : août 2007
Messages : 360
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 360
Points : 334
Points : 334
Salut,

Ca fait mal de travailler sur ACCESS pour un projet web ??

A+

Mathieu
mathieu44800 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/12/2010, 02h42   #10
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
Citation:
Envoyé par mathieu44800 Voir le message
Salut,

Ca fait mal de travailler sur ACCESS pour un projet web ??

A+

Mathieu
clair mais cela dépend de la source qu'on te donne, dans mon cas l'outil de base utilise de l'access et je devais le porter sur une page web.....
en plus si la source n'est pas sur le serveur web tu rigole déjà moins
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/12/2010, 16h42   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par Helfima Voir le message
ca devrai aider ceci, j'ai extrait ca d'un de mes codes

Code :
1
2
3
define('DB_NAME', 'C:\temp\monfichier.mdb');
define('DB_USER', 'root');
define('DB_PASS', '');
Code :
1
2
3
4
5
6
7
8
9
10
11
	/**
	 * @param string $db_name
	 * @param string $db_user
	 * @param string $db_pass
	 */
	protected function odbcConnect($db_name, $db_user, $db_pass){
		if(is_null($db_name) || is_null($db_user) || is_null($db_pass))
			die('intance DAO impossible! parametre manquant verifier fichier conf.php');
		$server = 'odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq='.$db_name;
		$this->db = new PDO($server,$db_user,$db_pass);
	}
évite de faire des die, y'a aucun controle de l'erreur derriere et en plus c'est un alias, sois utuiliser trigger_error, sois les exceptions, il faut aussi rajouter dans code la gestion des erreurs pour PDO, et faire un bloque try...catch autour de la connexion
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web