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 :

[SQL] Utiliser un autre champ dans une table si le champ par défaut est vide


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut [SQL] Utiliser un autre champ dans une table si le champ par défaut est vide
    Bonjour à tous,

    Malgré plusieurs heures de travaux et le peu d'expérience, je n'arrive pas à faire fonctionner la fonction suivante.
    En résumé : Utiliser un autre champ dans une table si le champ par default est vide
    Dans mon fichier .php pour inclure le texte se trouvant dans ma base de donnée, j'utilise donc :
    SELECT la_description_de_mes_articles_1 FROM matable1 WHERE language = fr;

    A l'époque j'avais fait des descriptions de mes articles.
    ("la_description_de_mes_articles_1")
    Et depuis, on à re-créer un champ avec des nouvelles descriptions.
    ("la_description_de_mes_articles_2") qu'on utilise par default.
    Voir Pour une compréhension visuelle ci-dessous :
    Cependant j'ai des pages de l'époque ou je n'ai pas de nouvelles description et j'ai également de nouvelles pages sans anciennes descriptions.

    J'aimerais en fait garder ces 2 descriptions possibles.
    Et avoir une règle en php qui va chercher dans ma base de donnée les descriptions suivant la règle :

    Par default on utilise mes nouvelles descriptions, mais si un des articles utilise une nouvelle description et que ce champ est vide pour cette article, il va chercher le champ de l'ancienne description pour cette article.

    Je me permet d'insister sur "pour cette article".
    Car je ne veux pas que si une nouvelle description est vide il utilise une ancienne description pour "tous les articles de mon site".

    Me comprenez-vous ?

    Je vous remercie d'avance.

    Pour une compréhension visuelle :

    Donc :

    matable1
    la_description_de_mes_articles_1 (champ)
    --->> article 1
    ^ article 2
    ^ article 3
    ^ article 4, ....
    la_description_de_mes_articles_2 (champ)
    ^ <<--- article 1
    ^ article 2
    ^ article 3
    ^ article 4, ....
    la_description_de_mes_articles_3 (champ)
    ^ <<--- article 1
    ^ article 2
    ^ article 3
    ^ article 4, ....

    J'aimerais donc mettre la règle suivante :

    Si le champ "la_description_de_mes_articles_2" du produit article 1 ou "la_description_de_mes_articles_3" du produit article 1 ou une infinité de "la_description_de_mes_articles_NUMERO_X" du produit article 1 dans ma base de donnée est vide il prend le champ "la_description_de_mes_articles_1" par default.
    Histoire d'avoir toujours du texte dans mes pages ( et pas une page vide )

    N'étant pas très doué en .php et n'ayant pas trouvé réponse à ma question je me permet de vous cette question.

    Si certains d'entrent vous peuvent ne fus-ce que me donner des pistes.

    Je vous remercie d'avance.

  2. #2
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Bravo pour la presentation du sujet, ca donne envie d'aider pas vrai B)

    Il me semble que la liste des champs du select est statique dans le cas d'une requete select normal, je ne sais pas comment faire en SQL.

    Par contre, je suis curieux de savoir pourquoi ne pas requetter les deux colones et selectionnerr le contenu a afficher en PHP ? (pas tapper Mawashigeri hahaha).
    Precisez si vous avez besoin d'aide pour implementer une telle solution en postant le code depuis la requete a l'affichage.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Avant tout merci pour ta réponse.
    C'est vrai que c'est chouette la couleur sur les forums.
    J'avoue que j'ai eu dur de jouer avec les > ( [ I N D E N T ] [ / I N D E N T ])
    C'est une bonne idée la requête sur les 2 champs,
    En fait j'y ai déja pensé, mais je me suis dit que faire une requête sur la totalité du 2ème champ risquerait d'allourdir fortement cette requête non ? (dans le cas de milliers de descriptions)
    Dans le cas ou on fait cette requête même si celle-ci n'est pas utile.
    Je m'explique: dans certains cas le premier champ(la première requête) suffira et la seconde requête est faite également même si elle n'est pas affichée.
    (Une grosse requête en trop.)
    Cependant, je mets mon site en cache donc la requête ne devrait s'executer qu'une seule fois...
    Mais c'est une très bonne idée malgré tout, je pense que je vais me lancer dans cette voie.

    Cependant saurais-tu ou (sauriez-vous) m'aider pour la fonction php disant que si l'article x
    (x veut dire l'article de la page courante) du champ "la_description_de_mes_articles_2" est empty (vide) il affiche par default l'article x du champ "la_description_de_mes_articles_1" ?

    N'hésitez pas à donner vos commentaires si vous trouvez une solution plus légère que la requête sur les 2 champs.
    Dans le sens il ne fait que la requête sur la deuxième champ uniquement si la requete du premier rapporte un artcile vide.

    Je vous remercie d'avance.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 354
    Points : 15 700
    Points
    15 700
    Par défaut
    suivant ta base de données, il y a surement des fonctions SQL qui permettent de faire ça

    voilà par exemple la documentation pour MySQL :
    http://dev.mysql.com/doc/refman/5.0/...functions.html

  5. #5
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par Mawashigeri Voir le message
    Bonjour,

    Avant tout merci pour ta réponse.
    C'est vrai que c'est chouette la couleur sur les forums.
    J'avoue que j'ai eu dur de jouer avec les > ( [ I N D E N T ] [ / I N D E N T ])
    C'est une bonne idée la requête sur les 2 champs,
    En fait j'y ai déja pensé, mais je me suis dit que faire une requête sur la totalité du 2ème champ risquerait d'allourdir fortement cette requête non ? (dans le cas de milliers de descriptions)
    Dans le cas ou on fait cette requête même si celle-ci n'est pas utile.
    Je m'explique: dans certains cas le premier champ(la première requête) suffira et la seconde requête est faite également même si elle n'est pas affichée.
    (Une grosse requête en trop.)
    Cependant, je mets mon site en cache donc la requête ne devrait s'executer qu'une seule fois...
    Mais c'est une très bonne idée malgré tout, je pense que je vais me lancer dans cette voie.

    Cependant saurais-tu ou (sauriez-vous) m'aider pour la fonction php disant que si l'article x
    (x veut dire l'article de la page courante) du champ "la_description_de_mes_articles_2" est empty (vide) il affiche par default l'article x du champ "la_description_de_mes_articles_1" ?

    N'hésitez pas à donner vos commentaires si vous trouvez une solution plus légère que la requête sur les 2 champs.
    Dans le sens il ne fait que la requête sur la deuxième champ uniquement si la requete du premier rapporte un artcile vide.

    Je vous remercie d'avance.
    Poste le code.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci pour vos réponses

    Je vais aller jeter un petit coup d'oeil sur :

    http://dev.mysql.com/doc/refman/5.0/...functions.html
    Merci mathieu

    Concernant le code, le voici: (je l'ai changé pas mal de fois depuis )

    $varible_description_requete = connection("SELECT description_1 FROM article WHERE language = 'fr'");
    $varible_description = range($varible_description_requete);

    Dont connection(); à une function derrière(connection db).
    Dont range(); à une function derrière(ranger le tableau).
    Merci is_null

    Ps: en ayant jeté un pt'it coup d'oeil rapidos sur la fonction du lien de mathieu, je pense que je vais pouvoir me débrouiller.
    Je vous tiens au courant.

    Merci encore à vous.

Discussions similaires

  1. [Oracle] Requête qui sélectionne tous les champs d'une table et un champ d'une autre table
    Par roswina dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/06/2015, 13h34
  2. Réponses: 5
    Dernier message: 20/11/2006, 17h45
  3. [MS SQL]Ajouter et visionner des champs dans une table
    Par 5a573 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/10/2006, 16h10
  4. [A97] VBA : Commande sql pour insertion de champs dans une table
    Par JeremieT dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/07/2006, 13h12
  5. Nom de Champ dans une table pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 6
    Dernier message: 30/10/2004, 13h28

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