2013-07-31 2 views
0

J'ai créé une seule table dans ma base de données Magento, cette table n'a aucune connexion à aucune des tables magento. J'ai créé un formulaire qui permet à un utilisateur de mettre des informations dans cette table.manière la plus efficace de comparer une valeur de formulaire et une valeur de base de données

Dans cette table il y a une colonne qui doit contenir une valeur unique, j'ai défini cette colonne pour n'autoriser que des valeurs uniques. Ce que je fais actuellement, c'est simplement de transmettre les données sans vérifier si la valeur est unique et d'obtenir un message 'violation de la contrainte d'intégrité' affiché sur mon écran. Ce que je veux faire est avant d'essayer de passer des données à cette table est de vérifier que la valeur que l'utilisateur essaye d'entrer n'existe pas déjà dans la table et si c'est le cas, passez-les à la page appropriée, ou est-il possible d'utiliser cette 'violation de la contrainte d'intégrité' pour ensuite passer l'utilisateur sur la page concernée? Je sais comment comparer des valeurs en utilisant du code php et mysql, mais après avoir lu sur Magento, je vois que l'utilisation de requêtes sql est déconseillée. J'ai donc envisagé de créer un tableau qui contiendra toutes les lignes de cette colonne les utilisateurs ont saisi des données, mais cela semble être un gros gaspillage de ressources, surtout au fur et à mesure que la base de données se développe.

Comment serait le meilleur moyen d'y parvenir?

S'il est possible qu'une requête sql soit exécutée directement sur la table, que dois-je rechercher dans le code pour trouver cette fonction?

+0

Si vous ne comptez pas sur les modèles et le modèle de ressource, l'utilisation de requêtes sql directes peut ne pas poser de réel problème et peut vous faire gagner du temps. – dagfr

Répondre

0

À mon avis, il peut y avoir des solutions possibles:

  1. Soit utiliser une procédure stockée dans la base de données pour vérifier si la valeur existe dans la table. Si cela renvoie simplement un message à piéger et l'action correspondante à effectuer dans le frontal.
  2. utiliser une construction hashmap (collection de cartes) qui réduira le temps de traitement au minimum dans la partie frontale.

J'espère que cela aide.

+0

Merci pour votre aide. Cela me donne vraiment quelque chose à penser et à regarder car je n'aurais pas la moindre idée de comment les utiliser. J'espérais que ce serait un peu plus basique, mais je vais commencer à faire des recherches – tony09uk

Questions connexes