2010-09-17 5 views
1

utilisateurs veulent voir des rapports à partir des données stockées dans la base de par exemple:MVC (CodeIgniter) question de conception

toutes les ventes dans un intervalle de temps (utilisateur envoie juste un intervalle de temps),

tous les ventes dans la ville sélectionnée dans un intervalle de temps (même avec ci-dessus mais cette fois-ville supplémentaire sélectionnez menu déroulant),

top vente de 20 magasins (un autre rapport, aucune soumission de formulaire et différentes tables db impliquées),

etc

Mon problème est comment puis-je accomplir ces tâches sans avoir à écrire un modèle distinct, contrôleur et vue pour chaque rapport ou chaque rapport a une méthode dans un seul contrôleur et le modèle et deux points de vue (un pour formulaire de soumission 1 pour résultats).

Je dois dire que mes antécédents sont de programmation procédurale et je suis confus. tout a l'air d'écrire basique "switch case" d'une manière très compliquée.

merci.

Répondre

1

Cela dépend de la façon dont vous structurez votre base de données. Bien que le fait d'avoir beaucoup de modèles puisse sembler exagéré, je suggérerais que si vous l'approchez de la bonne manière, vous trouverez que cela vous facilitera la vie. Par exemple, vous pourriez avoir un modèle qui traite des ventes. Dans ce modèle, il pourrait y avoir une fonction pour récupérer toutes les ventes par date ou heure. Cette fonction pourrait avoir un paramètre facultatif pour vous permettre de filtrer par ville. Vous pourriez alors avoir une autre fonction dans le même modèle pour récupérer le top 20. Du contrôleur vous auriez une fonction. Ce serait une grosse instruction if si l'utilisateur avait envoyé le formulaire. Sinon, affichez la vue du formulaire (il est préférable d'avoir des vues séparées pour des choses spécifiques ou au moins des fragments de vues). Si des données ont été soumises, il vous suffit de tester les données pour savoir quel rapport est requis, d'interroger la méthode appropriée dans votre modèle et d'envoyer les résultats à une autre vue des résultats. De cette façon, un contrôleur, un modèle, 2 vues (ou plus si vous utilisez un type de modèle). Je n'ai délibérément pas écrit le code pour vous, mais j'espère que cela vous indique la bonne direction. S'il vous plaît commentez si vous avez mal compris la question ou si vous avez besoin de clarification.

+0

J'apprécie votre réponse. Je comprends ce que vous dites et ça m'aide. mais j'ai plus de 100 de ces rapports et ils utilisent plus de 20 tables db qui sont liées ou non les uns aux autres. donc je rêve d'un moyen, quand j'ajoute un nouveau rapport au système, je fournirai des champs de formulaire et une requête à un mécanisme fait maison et il ramènera le formulaire pour l'utilisateur et montrera le rapport. semble que MCV ne me permet pas de le faire plus facilement que n'importe quelle autre façon. Je lisais sur les bibliothèques, les assistants, les plugins, etc .. Je suppose que je suis en train d'essayer d'être trop créatif par la paresse. Merci encore. – bezelye