Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 16/12/2010, 09h55   #1
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 291
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 291
Points : 28
Points : 28
Par défaut scinder en 2 fonctions

bonjour
j'ai fait une fonction de ce genre avec un bloc de requete et un autre bloc qui stocke dans un tableau array.
J'aimerais savoir s'il est possible de créer 2 fonctions :la 1eme pour la requete et la 2em pour stocker dans un array.
En effet j'ai plusieurs requetes à faire ,mon but est d'appeler la meme fonction qui stocke les données générées par les requetes différentes.
ce serait encore mieux si on peut faire celà sous forme de class php mais là çà me dépasse encore plus
merci d'avance
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
function boxe_select_promo($lim=9){
		$req="select".SELECT_P." from " . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on p.products_id = pd.products_id left join " . TABLE_SPECIALS . " s on p.products_id=s.products_id where p.products_status = '1'";
		$req = tep_db_query($req);
		while ($prod = tep_db_fetch_array($req)) {	
				$prod_list[] = array(
						'price'=>$prod['products_price'],
						'qty'=>$prod['products_quantity'],
						);
	    }// fin while
 
		return $prod_list;	
}
Code :
1
2
3
 
		$req="select".SELECT_P." from " . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on p.products_id = pd.products_id left join " . TABLE_SPECIALS . " s on p.products_id=s.products_id where p.products_status = '1'";
		$req = tep_db_query($req);
Code :
1
2
3
4
5
6
7
 
		while ($prod = tep_db_fetch_array($req)) {	
				$prod_list[] = array(
						'price'=>$prod['products_price'],
						'qty'=>$prod['products_quantity'],
						);
	    }// fin while
bigs3232 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h13   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Hello

Je vais tenter de te donner une piste en utilisant PDO:
Code :
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
 
function fetch_data_case_1 ($fetch_mode = PDO::FETCH_ASSOC)
{
    $query = "SELECT * FROM table1";
    if ($results = PDO::query($query))
    {
         return $results->fetchAll($fetch_mode);
    }
    return false;
}
 
function fetch_data_case_2 ($fetch_mode = PDO::FETCH_ASSOC)
{
    $query = "SELECT * FROM table2";
    if ($results = PDO::query($query))
    {
         return $results->fetchAll($fetch_mode);
    }
    return false;
}
 
function display_data ($data)
{
    $res = "";
    foreach ($data as $row)
    {
         $res .= implode(';', $row) . '\n';
    }
    return $res;
}
 
display_data(fetch_data_case_1());
display_data(fetch_data_case_2());
Comme tu peux le voir c'est assez basique, est ce que ça convient à ton usage ?

Note: Je te recommande sincèrement l'extension PDO, avec si possible une classe Database qui est un singleton de PDO (voir: http://tonylandis.com/php/php5-pdo-singleton-class/)

Voir:
http://php.net/manual/en/book.pdo.php
http://www.php.net/manual/en/pdostatement.fetchall.php
http://www.php.net/manual/en/pdo.query.php
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h30   #3
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 291
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 291
Points : 28
Points : 28
oh là c'est balèze çà.
apparemment ca ne marche que sur PHP5.
je vais tester pour voir
bigs3232 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 13h25   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
En effet PDO c'est pour PHP5.

Tu peux partir sur un comportement classique avec de bêtes boucles:
Code :
1
2
3
4
5
6
7
8
 
$query = "SELECT machin FROM truc";
if ($results = mysql_query($query))
{
    $res = array();
    while ($row = mysq_fetch_assoc($results)) $res[] = $row;
    return $res;
}
C'est moins rapide que le fetchAll de PDOStatement mais ça le fait.
Au passage, si tu peux passer PHP de la version 4 à la dernière 5.3 fais-le, le gain de perfromance est x5 !
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 17h56   #5
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 291
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 291
Points : 28
Points : 28
Citation:
Envoyé par Benjamin Delespierre Voir le message
En effet PDO c'est pour PHP5.

Tu peux partir sur un comportement classique avec de bêtes boucles:
Code :
1
2
3
4
5
6
7
8
 
$query = "SELECT machin FROM truc";
if ($results = mysql_query($query))
{
    $res = array();
    while ($row = mysq_fetch_assoc($results)) $res[] = $row;
    return $res;
}
C'est moins rapide que le fetchAll de PDOStatement mais ça le fait.
Au passage, si tu peux passer PHP de la version 4 à la dernière 5.3 fais-le, le gain de perfromance est x5 !
merci pour test conseils ,comment ce fait t'il qu'il y a un gain de performance si importante entre ces 2 facons de coder?
bigs3232 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 18h08   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
Pour te représenter le gain de performances, tu peux faire la comparaison entre une fonction implode et une boucle qui fait la même chose mais écrit en php: implode ira beaucoup plus vite car elle est compilée dans le moteur Zend. C'est pareil pour PDO.

Pour les perfs de php en lui même:
Je n'ai jamais été regarder dans le détail du moteur Zend (c'est le moteur interne de PHP) mais de PHP 4 à PHP 5 il y a eu des optimisation majeures comme l'utilisation des opcodes (de la précompilation du code source) et un analyseur syntaxique plus inteligent et plus performant.

Et il y aura encore un gain x2 à la prochaine version (PHP 6). Il faut dire qu'en terme de performances, on revient de loin en PHP

A lire sur le sujet: http://en.wikipedia.org/wiki/PHP#Speed_optimization
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre 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 05h28.


 
 
 
 
Partenaires

Hébergement Web