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 :

[Conception] probleme de tri...


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 51
    Par défaut [Conception] probleme de tri...
    salut!
    j'ai unptit probleme en fait je fait un moteur de recherche qui va chercher un ou plusieurs mots dans une table (ici news)
    ensuite je les affiche en fonction de leurs thème
    ex:
    thème 1
    news 1
    news 2
    thème 2
    news 1
    news 2
    news 3
    ...
    etc...
    mais le probleme c'est que dans le champs id_thème de la table news, il y a plusieurs id_thème séparé par des virgule.
    Donc dans le code je les sépare et les met dans un tableau avec le explode mais je n'arrive pas a tous les afficher trier dans chaque catégorie

    j'ai essayer de les mettre dans des tabeau mais j'en arrive a des tableau a double voir triple dimension :'/

    si quelqu'un peut m'aidez...

  2. #2
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, si je comprends bien, tu as 2 tables : news et themes.

    Pour connaître le thème d'une news, tu stockes tous les id des themes dans un champ de news, séparés par des virgules. J'ai tout compris :

    Je pense que ta modélisation peut être modifiée pour simplifier tes traitements ; un thème donné peut contenir plusieurs news et une news donnée peut être contenue dans plusieurs thèmes.

    Voilà ce que je propose :
    3 tables : news, theme et lien ; lien fait le lien entre news et theme

    Pour la table news : elle contient 2 champs : id (clé primaire) et nom (tu peux en rajouter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE news (
      id int(10) unsigned NOT NULL auto_increment,
      nom varchar(50) NOT NULL default '',
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    Pour theme : 2 champs : id et nom (mêmes remarques)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE theme (
      id int(10) unsigned NOT NULL auto_increment,
      nom varchar(50) NOT NULL default '',
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    Pour lien : 2 champs : id_news et id_theme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE lien (
      id_news int(10) unsigned NOT NULL default '0',
      id_theme int(10) unsigned NOT NULL default '0',
      PRIMARY KEY  (id_news,id_theme)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Et tu peux faire ta requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT l.id_theme, t.nom, l.id_news, n.nom
    FROM news AS n
    INNER JOIN lien AS l ON l.id_news = n.id
    INNER JOIN theme AS t ON t.id = l.id_theme
    ORDER BY t.nom ASC, n.nom ASC
    Comme ça, tu fais un tri par nom de thème puis par nom de news

    Je pense que c'est ce que tu voulais :

  3. #3
    Membre chevronné
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Par défaut
    La solution de Nesmontou est ce qu'il y a de mieux je pense.

    Cependant, si tu ne peux pas modifier la structure de ta base, pourquoi ne pas te tourner vers les fonctions de tri de tableaux de PHP ?

    Tu récupères tes news dans un tableau, tu appliques une de ces fonctions et voila

    Mais bon, c'est un peu "bourrin" comme solution, privilegie tout de même la première.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Par défaut
    Hello,

    Sinon tu peux utiliser tes 2 tables et faire une relation d'id entre les 2 avec une update en cascade si tu supprimes 1 theme, les news seront supprimées aussi.

    pour la table theme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE theme(
      id_theme int(10) unsigned NOT NULL auto_increment,
      nom varchar(50) NOT NULL default '',
      id_news int(10) unsigned NOT NULL,
    PRIMARY KEY (id_theme),
    FOREIGN KEY (id_news) REFERENCES news ON DELETE CASCADE );
    pour la table news:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE news(
      id_news int(10) unsigned NOT NULL auto_increment,
      nom varchar(50) NOT NULL default '',
    PRIMARY KEY (id_theme),
    );
    Après tu pourras faire une jointure entre les 2 tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM theme,news WHERE theme.id_news=news.id_news;
    et là t'auras la liste des themes avec les news correspondantes.

    Le mieux serait de récupérer un tutoriel complet sur les requètes SQL et les SGBD en général.

    @+[/code]

  5. #5
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut duble, ta solution est correcte si pour un thème donné, il y a une news (relation 1-n). Or d'après les explications de Cube55, il s'agit plutôt d'une relation n-n. Dans ce cas, 3 tables permettent de gérer simplement cette relation sans avoir de doublon.

  6. #6
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Oui, et selon l'adage "qui peut le plus peut le moins", cette troisième table peut très bien être utilisée pour une relation 1-n, au moins c'est évolutif.

  7. #7
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    +1 pour Mr N. ;-)

  8. #8
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Par défaut
    Bien vu ! Je me suis laissé emporter dans mon élan

  9. #9
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 51
    Par défaut
    merci pour ces réponses
    mais en fait je ne pouvait pas créer de nouvelle table

    je suis arrivé a affiché les thème triée grace au sort mais bon apres pour les news, pour les mettre dans les thèmes... :/
    mais bon finalement j'ai opté pour mettre un lien avant la news qui affiche sur une autre pages les thème appartenant a cette news
    mais merci pour les réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de tri de chaine de caractere...
    Par GESCOM2000 dans le forum Access
    Réponses: 12
    Dernier message: 28/12/2005, 13h43
  2. [Math]Problème avec tri
    Par HNT dans le forum Général Java
    Réponses: 4
    Dernier message: 11/12/2005, 13h43
  3. Probleme de tri et de vérificatin d'éléments
    Par danje dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 08/08/2005, 09h05
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [LG]problème de tri de pointeur (bulles non optimisé)
    Par blackmage dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2003, 23h42

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