trier un array ?? troll en cours ...

trier un array ?? troll en cours ... - PHP - Programmation

Marsh Posté le 15-09-2008 à 03:53:25    

Bonjour,
 
je vous assure j'ai cherché je ne trouve pas ma solution ...
 
Voilà la question !
 
j'extrais d'une BDD des lignes que je stocke dans un tableau (Pour chaque ligne, je stocke dans un tableau associatif, nom de colonne / valeur).
 
$arr[$i] = array("a"=>"$row[a]","b"=>$row[b],"c"=>"$row[b]","d"=>$row[d],"e"=>"$row[e]","f"=>$row[f]);
 
Ce tableau est donc trié suivant l'ordre order by de la requête sql.
 
Pour ne pas trop surcharger la base de données avec beaucoup d'accès, mon tableau est "balladé" dans la SESSION utilisateurs, et est donc chargé une seule fois.
 
mais voilà j'ai besoin de faire des tris différents en fonction d'actions spécifiques dans des formulaires ...
 
1 - donc comment trier par exemple le tableau selon les valeurs des colonnes b, d et e ?
 
Le tri est b ASC, d DES, e ASC.
 
2 - enfin comment faire l' équivalent de l'ordre DISTINCT sur une colonne d'un tableau ? Par exemple les valeurs uniques de la colonnes d ?
 
 
Allez un bout de tableau pour illustrer :
 
b = forum, c = id_post, e = date_post
 
$arr[0] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"PHP","id_post"=>"1","date_post"=>"20080914" );
$arr[1] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"PHP","id_post"=>"2","date_post"=>"20080913" );
$arr[2] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"PHP","id_post"=>"3","date_post"=>"20080912" );
$arr[3] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"ASP","id_post"=>"1","date_post"=>"20080914" );
$arr[4] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"MYSQL","id_post"=>"1","date_post"=>"20080914" );
$arr[5] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"C++","id_post"=>"1","date_post"=>"20080912" );
$arr[6] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"C++","id_post"=>"1","date_post"=>"20080914" );
$arr[7] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"C++","id_post"=>"1","date_post"=>"20080914" );
$arr[8] = array("site"=>"Hardware","forum"=>"nouveau","categorie"=>"PHP","id_post"=>"1","date_post"=>"20080914" );
$arr[9] = array("site"=>"Hardware","forum"=>"nouveau","categorie"=>"PHP","id_post"=>"2","date_post"=>"20080913" );
 
Pour 1 on doit avoir :
 
$arrT[0] = array("site"=>"Hardware","forum"=>"nouveau","categorie"=>"PHP","id_post"=>"2","date_post"=>"20080913" );
$arrT[1] = array("site"=>"Hardware","forum"=>"nouveau","categorie"=>"PHP","id_post"=>"1","date_post"=>"20080914" );
$arrT[2] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"PHP","id_post"=>"3","date_post"=>"20080912" );
$arrT[3] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"PHP","id_post"=>"2","date_post"=>"20080913" );
$arrT[4] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"C++","id_post"=>"1","date_post"=>"20080912" );
$arrT[5] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"C++","id_post"=>"1","date_post"=>"20080914" );
$arrT[6] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"C++","id_post"=>"1","date_post"=>"20080914" );
$arrT[7] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"PHP","id_post"=>"1","date_post"=>"20080914" );
$arrT[8] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"ASP","id_post"=>"1","date_post"=>"20080914" );
$arrT[9] = array("site"=>"Hardware","forum"=>"programmation","categorie"=>"MYSQL","id_post"=>"1","date_post"=>"20080914" );
 
pour 2 on doit avoir :
 
$arrU[0][id_post] = "1";
$arrU[1][id_post] = "2";
$arrU[2][id_post] = "3";
 
ou même
 
$arrU[0] = "1";
$arrU[1] = "2";
$arrU[2] = "3";
 
Merci de votre aide ...


Message édité par kicest le 15-09-2008 à 16:29:29
Reply

Marsh Posté le 15-09-2008 à 03:53:25   

Reply

Marsh Posté le 15-09-2008 à 09:10:34    

donc en gros, tu charges toute ta base de donnée en mémoire... [:pingouino]

Reply

Marsh Posté le 15-09-2008 à 09:12:58    

c'est sur que c'est tellement mieux de charger ca dans un fichier a plat  que de profiter de la puissance d'une base de données  
 
tu sais que la session est stockée coté serveur, dans bête fichier texte ?  
 
si vraiment tu as un pb de ressource , tu installe un cache mémoire pour les requêtes les plus courantes, la session ne doit etre utilisée que pour les données associé a l'utilisateur

Reply

Marsh Posté le 15-09-2008 à 13:10:13    

KangOl a écrit :

donc en gros, tu charges toute ta base de donnée en mémoire... [:pingouino]


 
Bien sur j'ai une base d'environ 30 tables, et ce tableau stocke le résultat d'une requête sur 2 tables ! (Et en nombre de lignes on est à environ 3000)
 
C'est bien la totalité de la base que je stocke dans ce tableau !
 
Merci à toi d'avoir essayer de répondre à la question, plutôt que de faire des remarques hors sujet !

Reply

Marsh Posté le 15-09-2008 à 13:18:46    

flo850 a écrit :

c'est sur que c'est tellement mieux de charger ca dans un fichier a plat  que de profiter de la puissance d'une base de données  
 
tu sais que la session est stockée coté serveur, dans bête fichier texte ?  
 
si vraiment tu as un pb de ressource , tu installe un cache mémoire pour les requêtes les plus courantes, la session ne doit etre utilisée que pour les données associé a l'utilisateur


 
Merci de ta réponse.
 
Côté "Best Practice" tu es presque aussi bon que ton collègue le kangourou ! Pour les tris tu ne vaut pas une cacahouète !
 
Au fait tu sais dans quoi sont stocké les données d'une base de données ... dans bête fichier !
 
Et si tu avais été un temps sois peu "curieux" tu aurais pu peut-être me demander pourquoi je stocke dans une SESSION, peut-être que ce n'est pas que pour l'accès BDD.
 
Mais dans ce cas on est complètement HORS SUJET !
 
Je pose une question concernant le PHP, et voilà que les seules réponses, concernent les bases de données ou SESSION , alors messieurs je pense que vous devriez "trainer" plutôt du côté Mysql, ou même Apache, et arrêter de venir polluer de vos réponses inutiles mon post !
 
J'attends avec impatience, vos gargarisations qui vont me donner des leçons, etc en me traitant très certainement comme le dernier des newbies, ou pire comme un abruti, mais c'est pas grave ... j'aurais tiré le premier ...
 
Pan t'es mort !
 

Reply

Marsh Posté le 15-09-2008 à 14:08:41    

La réponse "php" :
array_sort, array_multisort, etc.
Y a tout ce qu'il te faut là : http://fr.php.net/manual/fr/ref.array.php
Après pour ton "distinct", y a ptêtre array_unique qui peut le faire. Jamais testé personnelement.

 

Par contre tu vas en manger des boucles pour faire tout ce que savent faire si bien les SGBD... Ce qui m'amène à une transition parfaite : pour ton attitude hautaine et ta non remise en question de ta conception, on ne peut rien faire de plus.

Message cité 1 fois
Message édité par PunkRod le 15-09-2008 à 14:09:59
Reply

Marsh Posté le 15-09-2008 à 14:16:30    

vu que c'est offert par la maison, j'en profite : tu es le dernier des newbie. Car seul le derniers des newbie aurai posé une question sur ce sujet plutôt que de regarder du cote des fonctions de tri de tableau, comme usort , ou comme array_unique. Au passage, je ne  te traiterai pas d'abruti, j'ai moi aussi commencé a programmer un jour , et j'ai moi aussi poser des question cons  [:itm]  
 
les bases de données sont des fichiers, c'est bien que tu sache ça
 
par contre, tu sais surement  , dans ta grande connaissance du monde que les structure de données utilisées dans une base de données (arbres binaire equilibrés / arbres rouge et noir / ... )   garantissent un accès à un élément en o(log (n) ) , contrairement a une session qui est stockée de manière bcp plus simple  
a plus forte raison, une base de données, bien paramétrée au niveau du cache ET ayant les bons index sera toujours plus rapide que de dupliquer les données en session.  
 
 A noter que pour les requêtes qui sont toujours trop couteuses , l'utilisation de apc_cache est vraiment plus efficace  
 
Je ne parle même pas des problèmes de mise a jour que tu dois gérer à la main  
 
merci de ne pas me prendre pour un abruti , ça a tendance a m'agacer [ [:itm]

Message cité 2 fois
Message édité par flo850 le 15-09-2008 à 14:17:35
Reply

Marsh Posté le 15-09-2008 à 14:22:26    

Pourquoi en vouloir à KangOl ? Il est surtout très étonné que tu t'amuses à stocker dans une session la totalité de deux tables. Et comme de fait, ta session est soit stockée en base de données, ou simplement dans un fichier temporaire de ton système. -> Tu fais quand même le même boulot que le SGBDR !

Reply

Marsh Posté le 15-09-2008 à 14:22:33    

kicest a écrit :


Au fait tu sais dans quoi sont stocké les données d'une base de données ... dans bête fichier !


 */ base de donnée == fichier
 */ session == fichier

 

=> base de donnée == session

 


un peu simpliste tu trouves pas ?

Message cité 1 fois
Message édité par KangOl le 15-09-2008 à 14:23:14
Reply

Marsh Posté le 15-09-2008 à 14:23:54    

flo850 a écrit :

a plus forte raison, une base de données, bien paramétrée au niveau du cache ET ayant les bons index sera toujours plus rapide que de dupliquer les données en session.


 
huhu.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-09-2008 à 14:23:54   

Reply

Marsh Posté le 15-09-2008 à 14:25:05    

on parle d'y stocker 3 K enregistrement et dy faire des tris , pas de stocker la fiche d'un utilisateur

Reply

Marsh Posté le 15-09-2008 à 14:27:28    

flo850 a écrit :

on parle d'y stocker 3 K enregistrement et dy faire des tris , pas de stocker la fiche d'un utilisateur


oui, bon, ok, peut-être.[:petrus75]
Si tu n'as pas la malchance d'avoir la base sur une autre machine, passablement over-surchargée.[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-09-2008 à 14:27:43    

Quel winner ce gars  [:cerveau love]


---------------
Python Python Python
Reply

Marsh Posté le 15-09-2008 à 14:29:38    

Bon, et sinon, je confirme tout ce qui a été dit, que ce soit les fonctions de sort intégrées à php qui font ça très bien ou l'absurdité probable de la façon de faire.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-09-2008 à 15:13:15    

Je valide ce topic:
http://killer12137.bulletfiles.com/images/epic_failure_seal.gif


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-09-2008 à 15:42:45    

flo850 a écrit :

vu que c'est offert par la maison, j'en profite : tu es le dernier des newbie. Car seul le derniers des newbie aurai posé une question sur ce sujet plutôt que de regarder du cote des fonctions de tri de tableau, comme usort , ou comme array_unique. Au passage, je ne  te traiterai pas d'abruti, j'ai moi aussi commencé a programmer un jour , et j'ai moi aussi poser des question cons  [:itm]  
 
les bases de données sont des fichiers, c'est bien que tu sache ça
 
par contre, tu sais surement  , dans ta grande connaissance du monde que les structure de données utilisées dans une base de données (arbres binaire equilibrés / arbres rouge et noir / ... )   garantissent un accès à un élément en o(log (n) ) , contrairement a une session qui est stockée de manière bcp plus simple  
a plus forte raison, une base de données, bien paramétrée au niveau du cache ET ayant les bons index sera toujours plus rapide que de dupliquer les données en session.  
 
 A noter que pour les requêtes qui sont toujours trop couteuses , l'utilisation de apc_cache est vraiment plus efficace  
 
Je ne parle même pas des problèmes de mise a jour que tu dois gérer à la main  
 
merci de ne pas me prendre pour un abruti , ça a tendance a m'agacer [ [:itm]


 
Trop fort .. 1 post et j'en suis presque déjà à un troll !!!!!
 
Je ne te prends pas pour un abruti, mais peut-être pour quelqu'un qui pense que tout le monde devrait "tunner" sa base de données, avoir des compétences de DBA Séniors, et tout faire depuis le SGBD, c'est tellement plus simple !
 
ne t'inquiète pas je "pense" savoir positionner les bons index, clés primaires, forreign_keys, ...
 
oui j'ai consulté les fonction array php ... et ne suis jamais parvenu à obtenir le résultat que je voulais, que veux-tu tout le monde n'est pas ingénieur informatique, et j'ai très certainement du loupé et très certainement mal compris les syntaxes et utilisation de ces fonctions.
 
moi aussi lorsque l'on me demande de l'aide et que la personne n'a pas fait l'effort de chercher, je lui réponds souvent RTFM !!! Mais si je m'aperçois que la personne a essayé et n'y est pas arrivé, je lui réponds.
 
Réponse stricte : Voilà la solution à ta question
 
et je complète en informant que ce n'est peut-être pas la bonne méthode ... Mais pas l'inverse, peut-être que la personne a des problématiques, ou contraintes qui l'oblige à utiliser cette méthode, je ne suis pas dieu ni devin et ne vais pas préjuger du bien ou mal fondé de sa méthode !
 
Si les tris d'array permettent par exemple par usort d'exécuter une fonction utilisateur, je ne vais pas mettre en oeuvre un tri à bulle (à la con et couteux), aussi récusrsif soit-il, alors qu'il existe peut-être des personnes ayant rencontrés le même besoin, et ayant réussit par la combinaison de 2 ou 3 fonctions array à obtenir le résultat escompté, vu que personnellement ma grande "bêtise" ne me la pas permis !
 
Maintenant lorsque je crée un formulaire ou l'utilisateur peut mettre à jour des valeurs stockés dans différentes tables et cela sur pas mal de lignes en même temps, je préfère parser mon tableau de valeurs à la recherche des valeurs ayant été modifiés, exercer des contrôles et mettre à jour les rows modifiés, plutôt que faire de l'update global ! Je dis update car dans mon cas c'est de la mise à jour sans insertion possible, sinon j'aurais utiliser replace ! Un bon DBA me dirait ...oulala les données dans la SESSION sont peut-être trop "vieilles" et ne garantisse pas qu'elles soient, dans le cas d'accès multiples au même ligne, toujours au mêmes valeurs, ou alors il faut faire à la mode oracle, du select for update, ou gérer des transactions ... Mais moi mon problème c'est le tri de tableau en PHP !
 
Alors oui bien sur je pourrais faire des procédures stockés ou triggers, mais mon projet n'a pas besoin de tous ces processus ...
 
Par contre je suis bien aise de m'apercevoir que pour une fois tu respectes mon dernier message, ou j'étais persuadé qu'on allait me traiter de newbies, c'est la première ligne de ton message, bravo tu progresses ! (Ca c'est juste pour t'agacer un peu, tu as l'air de partir au quart de tour !)
 
Allez au plaisir de te lire rapidement flo850

Reply

Marsh Posté le 15-09-2008 à 15:45:58    

PunkRod a écrit :

La réponse "php" :
array_sort, array_multisort, etc.
Y a tout ce qu'il te faut là : http://fr.php.net/manual/fr/ref.array.php
Après pour ton "distinct", y a ptêtre array_unique qui peut le faire. Jamais testé personnelement.
 
Par contre tu vas en manger des boucles pour faire tout ce que savent faire si bien les SGBD... Ce qui m'amène à une transition parfaite : pour ton attitude hautaine et ta non remise en question de ta conception, on ne peut rien faire de plus.


 
Tu peux illustrer avec mes exemples, j'ai déjà regarder ces fonctions et jamais réussi a produire les bons résultats, ce qui m'amène à une transition parfaite : pour ton attitude hautaine et ta seule capacité à fournir un lien internet, on ne peut rien faire de plus
 
1 - 1  :D  
 

Reply

Marsh Posté le 15-09-2008 à 15:50:30    

tiens, un paté.[:pingouino]
 
Si tu as besoin de trier des données qui sont déjà dans ta session, plusieurs options :

  • Tes données sont trop vieilles, il y en a qui peut-être ont été supprimées de la base, on été modifiées ailleurs, etc. => très mauvaise idée de ne pas repasser par la base. Tu dis que ça ne pose pas pb dans ton cas, soit.
  • Tu veux juste permettre à l'utilisateur de réarranger des données que tu lui as déjà présentées. Dans ce cas pourquoi repasser par le serveur? Javascript est l'outil tout désigné.


Dernière question, toute bête - qu'apporte le fait d'utiliser la session pour stocker tout ce bordel? Tu penses vraiment y gagner quelque chose?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-09-2008 à 15:52:46    

kicest a écrit :

Tu peux illustrer avec mes exemples, j'ai déjà regarder ces fonctions et jamais réussi a produire les bons résultats,


usort fait ce que tu veux - un tri en fonction de critères que tu détermines toi même via une fonction de comparaison. Si tu n'y arrives pas avec ça, montre ce que tu as essayé, le résultat obtenu, et explique ce que tu ne comprends pas.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-09-2008 à 15:55:10    

un bon point de départ

 

et sinon, répondre a la question , c'est aussi prévenir les gens qu'ils font une connerie, surtout quand il n'est même pas possible de se marrer en le voyant se casser la gueule

 

et stocker trop de données en session est une connerie . Au mieux , ça ira moins vite qu'une base de données , au pire tu vas planter ton serveur en bouffant tout l'espace disque.

 

je vais essayer de trouver une image pour que tu essaye de comprendre que ça ne sert a rien de t'en prendre a moi si tu as une idée a chier : tu es en trazin de me demander le meilleure moyen  de nouer du fil de  pêche pour faire du saut à l'élastique  ==> ça semble peut être jouable a échelle réduite, mais en grandeur réelle, il va y avoir des bouts de viandes partout

 

edit : et sinon, j'ai parlé d'usort et d'array_unique des le debut , tu n'as meme aps lu :/

 



Message édité par flo850 le 15-09-2008 à 15:56:08
Reply

Marsh Posté le 15-09-2008 à 15:55:27    

kicest a écrit :


 
Tu peux illustrer avec mes exemples, j'ai déjà regarder ces fonctions et jamais réussi a produire les bons résultats, ce qui m'amène à une transition parfaite : pour ton attitude hautaine et ta seule capacité à fournir un lien internet, on ne peut rien faire de plus
 
1 - 1  :D  
 


dire "j'ai cherché" ne suffit pas pour empecher qu'on te file juste les lien vers la doc officielle.
citer le nom des fonctions que tu as utilisé sans succès aurait été le minimum
voire même un bout de code...

Reply

Marsh Posté le 15-09-2008 à 15:55:51    

Un forum est un lieu privilégié d'échange et de communication :o
On souhaite t'aider mais on aimerait en contrepartie comprendre tes besoins / ta solution pour notre propre culture.


Message édité par BenO le 15-09-2008 à 15:56:14

---------------
Python Python Python
Reply

Marsh Posté le 15-09-2008 à 15:58:18    

kicest a écrit :

Tu peux illustrer avec mes exemples, j'ai déjà regarder ces fonctions et jamais réussi a produire les bons résultats, ce qui m'amène à une transition parfaite : pour ton attitude hautaine et ta seule capacité à fournir un lien internet, on ne peut rien faire de plus


 
En fait, t'es surtout trop con pour avoir réussi à t'en servir [:petrus75]
 


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
Reply

Marsh Posté le 15-09-2008 à 15:59:43    

kicest a écrit :

oui j'ai consulté les fonction array php ... et ne suis jamais parvenu à obtenir le résultat que je voulais, que veux-tu tout le monde n'est pas ingénieur informatique, et j'ai très certainement du loupé et très certainement mal compris les syntaxes et utilisation de ces fonctions.


Code :
  1. <?php
  2. function cmp($a,$b){
  3.    if ($a[0] == $b[0]) {
  4.        return 0;
  5.    }
  6.    return ($a[0] < $b[0]) ? -1 : 1;
  7. }
  8.  
  9. $tab=array(array('2','a'),array('1','b'),array('3','c'));
  10.  
  11. print_r($tab);
  12. usort($tab, "cmp" );
  13. print_r($tab);
  14. ?>


Regarde le code, teste le, comprend le et ensuite adapte le.
 
PS : Et dans quelques mois, années, tu jéteras surement ta solution à la poubelle après avoir vu le nombre de fois par jours où le serveur se sera bloqué à cause de problèmes de mémoire vive et/ou d'espace disque saturé.

Message cité 1 fois
Message édité par omega2 le 15-09-2008 à 16:03:07
Reply

Marsh Posté le 15-09-2008 à 16:00:43    


 
Lui mâche pas le travail  [:cerveau mmmfff] il va partir sans nous expliquer son binz.


---------------
Python Python Python
Reply

Marsh Posté le 15-09-2008 à 16:03:25    

KangOl a écrit :


 */ base de donnée == fichier
 */ session == fichier
 
=> base de donnée == session
 
 
un peu simpliste tu trouves pas ?


 
Vrai pour le stockage physique !
 
Je n'utilise ni JS ni autre fonction, que celle offerte par le HTML et PHP ! Certes je suis tout comme toi persuadé que le moteur SGBD est bien plus puissant et rapide que PHP dans le tri de données quand celles-ci proviennent d'une base de données.
 
Mais lorsque dans un formulaire j'ai 3000 lignes, et que l'utilisateur modifie 20 lignes de ces 3000, ne voulant pas (principe chez moi) faire un update massif sans contrôle et vérification de mes données, vaut-il mieux intérroger 3000 fois la base de données pour savoir quelles sont les 20 lignes à mettre à jour, ou parser un tableau pour ne retenir que les 20 lignes à mettre à jour et pratiquer à la mise à jour ?
 
Convient que l'on est loin de la simple problématique de tri de tableau en PHP, et je suis ouvert à vos remarques, suggestions et pourquoi pas "volée de bois verts" concernant ma méthode , et suis prêt à remettre en question ma conception, mais sur le tri de tableau ... avons nous eu un élément de réponse ?
 
 

Reply

Marsh Posté le 15-09-2008 à 16:07:47    

kicest a écrit :


Mais lorsque dans un formulaire j'ai 3000 lignes, et que l'utilisateur modifie 20 lignes de ces 3000, ne voulant pas (principe chez moi) faire un update massif sans contrôle et vérification de mes données, vaut-il mieux intérroger 3000 fois la base de données pour savoir quelles sont les 20 lignes à mettre à jour, ou parser un tableau pour ne retenir que les 20 lignes à mettre à jour et pratiquer à la mise à jour ?


Un update massif sera plus rapide et moins couteux en temps de développement. Il n'y a pas de raison rationnelle à batailler en php pour ça.
C'est le boulot du sgbd de déterminer s'il a vraiment quelque chose à faire, et il bien plus efficace que n'importe-quel code php pour faire ça.

 
kicest a écrit :

Convient que l'on est loin de la simple problématique de tri de tableau en PHP, et je suis ouvert à vos remarques, suggestions et pourquoi pas "volée de bois verts" concernant ma méthode , et suis prêt à remettre en question ma conception, mais sur le tri de tableau ... avons nous eu un élément de réponse ?

 

oui, on t'a déjà répondu plusieurs fois :
1) de regarder la doc des tableaux
2) d'y trouver la fonction usort()

 



Message édité par skeye le 15-09-2008 à 16:08:12

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-09-2008 à 16:11:29    

Le jour où je vois débarquer un formulaire de 3000 lignes, j'engueule le développeur qui l'a pondu (où je le fais gentiment remarquer si c'est un de mes supérieurs qui a fait cette connerie). De même pour les listes déroulante de 200 choix pour lesquelles aucun filtre n'est disponible.
 
En fait, je ne vois pas un seul cas réel où un formulaire de 3000 lignes est préférable à une pagination de 25 ou 50 lignes modifiable.

Reply

Marsh Posté le 15-09-2008 à 16:12:37    

kicest a écrit :

Mais lorsque dans un formulaire j'ai 3000 lignes, et que l'utilisateur modifie 20 lignes de ces 3000, ne voulant pas (principe chez moi) faire un update massif sans contrôle et vérification de mes données, vaut-il mieux intérroger 3000 fois la base de données pour savoir quelles sont les 20 lignes à mettre à jour


Aux dernières nouvelles tu peux aussi interroger une seule fois la db pour récupérer tes 3k enregistrement et differ dessus, ou bien lancer un bulk update (quitte à balancer des NOOP) qui risque fort de prendre moins de temps que ton boxon, ou bien te demander s'il est possible de marquer tes lignes comme dirty afin de savoir lesquelles ont été modifées et lesquelles ne l'ont pas été (e.g. stocker un checksum pour chaque ligne affichée, vérifier le checksum au retour), ...

 

Et bien sûr...

omega2 a écrit :

Le jour où je vois débarquer un formulaire de 3000 lignes, j'engueule le développeur qui l'a pondu (où je le fais gentiment remarquer si c'est un de mes supérieurs qui a fait cette connerie). De même pour les listes déroulante de 200 choix pour lesquelles aucun filtre n'est disponible.

 

En fait, je ne vois pas un seul cas réel où un formulaire de 3000 lignes est préférable à une pagination de 25 ou 50 lignes modifiable.


:jap:

Message cité 1 fois
Message édité par masklinn le 15-09-2008 à 16:12:59

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-09-2008 à 16:20:26    

masklinn a écrit :


Aux dernières nouvelles tu peux aussi interroger une seule fois la db pour récupérer tes 3k enregistrement et differ dessus, ou bien lancer un bulk update (quitte à balancer des NOOP) qui risque fort de prendre moins de temps que ton boxon, ou bien te demander s'il est possible de marquer tes lignes comme dirty afin de savoir lesquelles ont été modifées et lesquelles ne l'ont pas été (e.g. stocker un checksum pour chaque ligne affichée, vérifier le checksum au retour), ...
 
Et bien sûr...
Le jour où je vois débarquer un formulaire de 3000 lignes, j'engueule le développeur qui l'a pondu


 
 
Et si cela répond à la demande utilisateur, que cela colle à son organisation ? tu éduques l'utilisateur ou remet en cause son organisation, ou dis au développeur qu'il a répondu au cahier des charges ?

Message cité 3 fois
Message édité par kicest le 15-09-2008 à 16:22:28
Reply

Marsh Posté le 15-09-2008 à 16:22:08    

kicest a écrit :


 
Et si cela répond à la demande utilisateur, que cela colle à son organisation ? tu éduques l'utilisateur ou remet en cause son organisation, ou dis au développeur qu'il a répondu au cahier des charges ?


Choix 1


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-09-2008 à 16:22:12    

kicest a écrit :


Et si cela répond à la demande utilisateur, que cela colle à son organisation ? tu éduques l'utilisateur ou remet en cause son organisation, ou dis au développeur qu'il a répondu au cahier des charges ?


le client est roi, mais lui faire remarquer que ça a de bonnes chances d'être inutilisable ne fait de mal à personne.

Message cité 1 fois
Message édité par skeye le 15-09-2008 à 16:22:23

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-09-2008 à 16:22:18    

ca repond surement à la demande de l'utilisateur, comme un marteau pour tuer une mouche  
 
ce n'est pas pour ça que c'est la meilleure réponse possible, ni au niveau ergonomie, ni au niveau cout en ressources[:proy]

Reply

Marsh Posté le 15-09-2008 à 16:23:33    

skeye a écrit :


le client est roi, mais lui faire remarquer que ça a de bonnes chances d'être inutilisable ne fait de mal à personne.


 
Utilisateur borné et têtu !

Reply

Marsh Posté le 15-09-2008 à 16:25:59    

flo850 a écrit :

ca repond surement à la demande de l'utilisateur, comme un marteau pour tuer une mouche  
 
ce n'est pas pour ça que c'est la meilleure réponse possible, ni au niveau ergonomie, ni au niveau cout en ressources[:proy]


 
Tout dépend ton approche ...
 
tu fais ce que l'on te demande au sens strict du terme en ayant avertit l'utilisateur, peut importe il le veut comme ça, paye et assume les responsabilités !  
 
Tu perds le développement ? ou essaye bon an mal an de lui fournir qq chose qui fonctionne un temps soit peu ?
 
Personne bien sur n'ayant jamais livré du code un peu bâclé, ou pas vraiment performant hein ?  :ange:


Message édité par kicest le 15-09-2008 à 16:28:23
Reply

Marsh Posté le 15-09-2008 à 16:29:58    

je sais pas quoi te dire si ce n'etsq u'utilise usort et commande de la ram ainsi qu'un disque de plus pour ton serveur

 

EDI T: et sinon, tu peux aussi essayer de vendre un conseil au client, en lui proposant une option payante ( un joli truc en js . MAis ca me semble un peu choquant de t'entendre parlé de client et de $$ alors que tu décris toit meme comme non DBA et non développeur

Message cité 2 fois
Message édité par flo850 le 15-09-2008 à 16:30:48
Reply

Marsh Posté le 15-09-2008 à 16:30:41    

flo850 a écrit :

je sais pas quoi te dire si ce n'etsq u'utilise usort et commande de la ram ainsi qu'un disque de plus pour ton serveur


et la ram pour les postes clients....ça peut faire un joli bordel, une pages avec un 3000 lignes de formulaire.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-09-2008 à 16:53:06    

Hum, les tableaux en php c'est bien (tm), mais les gros tableau c'est pas génial niveau performance.
 
Il existe différentes solutions :  
- garder le tableau dans un js dans une frame et le manipuler en Json (personne l'as trouvé celle là, bon ok je sort) <- a éviter :p
- utiliser proprement ta base.
- utiliser apc voir www.php.net/apc (ça ça rox fort, mais si les donnés sont par utilisateur oublie).
- pour taper plus de perf au niveau de la bdd, il faut utiliser le moteur memory de mysql qui stoque une table en mémoire (j'utilise ça pour stoquer mes sessions quand j'ai de la ram et pas de serialize...).
- revoir ton modèle de donnée :/

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed