IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Schéma relationnel et clés


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Schéma relationnel et clés
    Bonjour,

    Je ne sais si je peux vous déranger pour m'aider à résoudre mon problème, aussi n'hésitez pas à me renvoyer ailleurs.
    J'ai hérité d'une base de données mysql qui permet de gérer les articles et auteurs d'un bulletin (en l'occurrence le Bulletin du Musée Basque de Bayonne). J'ai une interface Modèle de Vue Contrôleur qui permet de saisir en une sule page toutes les données: le n° du bulletin, les articles avec résumés, le ou les auteurs et des mots-clés. Jusqu'à là tout va bien.
    Mais une fois les données saisies avec un nouveau n° de bulletin et des auteurs qui peuvent être nouveaux ou déjà entrés dans le BD le moteur de recherche trouve certains résultats et pas les autres. J'identifie le défaut dans la table de jonction Rediger car si je saisis les données dans phpmyadmin et que j'associe bien le n° de l'auteur (en auto-implement) au n° de l'article (en auto-implement) tout fonctionne.
    Grâce au site Developpez.com j'ai travaillé en local avec wampserver, mis en place le Concepteur, ajouté des relations internes comme le montre l'image. Elles n'existaient pas auparavant mais cela n'a rien changé.
    Pourriez-vous me donner une piste et en particulier me dire ce que vous pensez des index relatifs à cette table Rediger tels qu'ils figurent sur la partie basse de l'image. Le pb ne viendrait-il pas de ces index car je trouve bizarre d'avoir deux index différents pour un même code (PRIMARY et INDEX) ? Le même problème se pose avec la table Contenir qui est censée associer les mots-cles entrés et l'article concerné.
    Je précise que je ne suis ni développeur ni spécialiste des BD mysql mais je me débrouille avec les bons sites...comme le votre.

    Bien cordialement

    Olivier

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    le problème ne vient pas de l'index.
    Cet index à surement été auto généré à cause de la clef étrangère sur cette colonne.
    Ceci n'est pas forcément une mauvaise chose, tout dépend comment vous accédez aux données.


    Pour en revenir à votre poste initial, vous avez déjà les pistes :
    - soit l'enregistrement des données affichées bug, l'association ce fait mal
    - soit le système de recherche ne fonctionne pas comme vous le souhaitez


    Dans les deux cas il va falloir chercher un peu plus profondément dans l’application afin de trouver la cause du problème.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci déjà pour cette information.
    Donc mon hypothèse de départ n'était pas la bonne.
    Je ne crois pas que le moteur de recherche soit en cause.
    Si j'entre les données table par table directement dans phpmyadmin et en particulier si je réalise l'association entre le n° d'article et le n° d'auteur par la table Rediger, alors la recherche par l'interface aboutit.
    Par contre, si j'entre les données par l'interface MVC je constate ensuite dans phpmyadmin que l'association ne s'est pas réalisée. Donc que la BD n'a pas été remplie complètement. Et la recherche par l'interface n'aboutit pas.
    Le problème semble donc se situer entre la saisie de la page dans l'interface et le remplissage de la table Rediger. Et même constat pour la table Contenir.
    Du coup je ne vois pas trop où chercher.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Encore moi.
    Voici le code php de la table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //------------------------ Table rediger ---------------------//
     
    //recuperation du cecodeart
    $requete2 = "SELECT MAX(codeart) FROM article";
    $result1 = mysql_query($requete2, $connexionMYSQL);
    $codeart = mysql_fetch_array($result1);
    $codeartaajouter = $codeart[0];
     
    //recuperation du cecodeaut
    $requete3 = "SELECT MAX(codeaut) FROM auteur";
    $result2 = mysql_query($requete3, $connexionMYSQL);
    $codeaut = mysql_fetch_array($result2);
    $codeautaajouter = $codeaut[0];
     
    //ajout dans la table d'association rediger du cecodeart et cecodeaut recupérés
    $requete4 = "INSERT INTO rediger (cecodeart,cecodeaut) VALUES ('$codeartaajouter', '$codeautaajouter')";
    mysql_query($requete4, $connexionMYSQL);
    Mais je suis incapable de juger s'il y a un défaut dans cette table Rediger

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 200
    Points : 102
    Points
    102
    Par défaut
    Essaie ça pour récupérer ton dernier enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //recuperation du cecodeart
    $requete2 = "SELECT codeart FROM article ORDER BY codeart LIMIT 0,1";

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup. Je vais essayer.
    Mais je m'aperçois aussi à la lecture du code php du fichier qui valide le récapitulatif que la table Bulletin n'existe pas.
    Il faut que je procède à divers essais de saisie pour bien voir dans quels cas cela fonctionne et dans quels autres cela cloche.

Discussions similaires

  1. convertion SQL en schéma relationnel
    Par delma dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/02/2007, 16h22
  2. Schéma relationnel
    Par poosh dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 23/05/2006, 17h31
  3. Générer le schéma relationnel de scripts SQL
    Par webspeak dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/03/2006, 16h14
  4. [9i] schéma relationnel en SQL
    Par BugFactory dans le forum Oracle
    Réponses: 15
    Dernier message: 22/12/2005, 15h31
  5. Aide sur contrainte d'un schéma relationnel
    Par Sinclair dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 06/10/2004, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo