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 :

Requête un rien difficile


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut Requête un rien difficile
    Bonjour,

    Désolé tout d'abord d'arriver avec une question de quasi novice, mais là, j'ai un peu de mal à faire simple...
    J'utilise un CMS et je ne peux pas changer la structure de ma base malheureusement. Je dois pouvoir afficher dans une page toutes les infos contenues dans la table "cms_content_props" pour un identifiant donné.
    Par exemple toutes les infos qui concernent le livre dont l'identifiant(content_id) est "83".
    Pour mieux m'expliquer voici le schéma de la structure (c'est plus simple qu'un long discours ) :



    Je sais récupérer une série d'enregistrements avec les valeurs pour chaque champ, mais là, cela dépasse mes maigres compétences !
    Merci d'éclairer ma lanterne

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 149
    Par défaut
    Salut,
    C'est peu être bien simplement ça que tu recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM cms_content_props WHERE content_id = 83
    Pis ensuite une boucle sur mysql_fetch_array par exemple.

  3. #3
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Bonjour,

    si le contenu de la table cms_content peut changer suivant l'id, il faut faire 2 requêtes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $id= 83;
    $sql = "SELECT prop_name FROM cms_content WHERE content_id = ".$id;
    $res = mysql_query($sql) or die (mysql_error());
     
    $sql = "SELECT ".mysql_result($res, 1)." FROM cms_content_props WHERE content_id = ".$id;
    $res = mysql_query($sql) or die (mysql_error());
    $resultats = mysql_fetch_array($res);
     
    echo "<pre>";
    print_r($resultats);
    echo "</pre>";
    en espérant que cela t'aide à comprendre...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut
    Merci, mais dans mon cas les id des deux tables correspondent forcément (cela l'a permis de jeter un œil à la doc sql pour mysql_result, ce qui n'est pas un mal).
    J'ai mal posé ma question je crois, c'est encore plus basique que cela.
    Bien voilà, pour repêcher(même le vocabulaire me trahit) le titre du livre je sais faire "au coup par coup" comme cela:
    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
     
    $id= 84;
    $req=mysql_query("select * from cms_content_props where content_id=84 and prop_name='titre_livre'");
     
    while ($cms_content_props=mysql_fetch_object($req))
    {
     
    $titrelivre=$cms_content_props->content;
     
     
    echo $titrelivre;;
     
     
     
    }
    par contre je suppose que si je souhaite récupérer pour un même content_id les seules propriétés 'titre_livre' 'longueur_livre' et 'date_livre' pour les afficher, il existe un moyen de le faire sans passer par trois requêtes séparées ?

  5. #5
    Membre expérimenté Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Par défaut
    Citation Envoyé par nextdev Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM cms_content_props WHERE content_id = 83
    Bonjour,

    je rajouterai juste ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM cms_content_props WHERE content_id = 83 and prop_name='titre_livre' or prop_name='longueur_livre' or prop_name='date_livre'
    après tu es obligé de traité au cas par cas pour afficher les données...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut
    Merci, cela m'a bien aidé.
    Pour info voici la façon dont je récupère mes données, je reste persuadé qu'il existe une solution beaucoup moins vorace en ressources et plus élégante.

    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
    18
    19
    $id= 84;
    $req=mysql_query("select * from cms_content_props where content_id=84 and prop_name='titre-livre'
    or prop_name='auteur-livre'");
     
      while($data = mysql_fetch_assoc($req))
      {
      $tablo[]=$data;
      }
     
      //les valeurs à afficher
      $titre=$tablo[0]['content'];
     $auteur=$tablo[1]['content'];
     
     
     
    echo "<pre>";
    echo $titre;
    echo $auteur;
    echo "</pre>";
    Cela fonctionne oui, mais cela me semble être du bricolage alors si quelqu'un a une solution plus aboutie...
    En attendant, je ne marque pas "résolu".

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Par défaut
    Bonjour padoberg,

    La table que tu as créé est très générique et tu peux y insérer tout ce que tu veux, hors tu veux faire du spécifique de part de ta demande (CMS ... ). Par ailleurs, le jeu de données entre des enregistrements que tu nous montres est similaire dans la colonne "prop_name". Ne serait-il pas plus judicieux d'en faire un table à moins que tu sois contraint d'utiliser cette table?
    Sinon la bricole est nécessaire. Tu devrais faire une fonction récupère les données d'un livre et les mettre dans un tableau sur une ligne. En gros tu construit la table en php.

    Cdlt.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut
    J'ai simplifié pour l'exemple, mais il s'agit de deux tables intégrées à un CMS. Au niveau structure le truc me paraît un peu limite. Une autre table avec les propriétés de prop_name en nom de champ serait bien préférable mais je ne peux pas modifier.....
    Si mon bricolage ne semble pas trop exubérant à ceux qui utilisent souvent php/mysql je vais rester avec cette solution

Discussions similaires

  1. Requête SQL très difficile
    Par mistergamer dans le forum Langage SQL
    Réponses: 9
    Dernier message: 26/07/2014, 14h09
  2. Requêtes un peu difficiles
    Par hayat2 dans le forum Bases de données
    Réponses: 3
    Dernier message: 02/06/2009, 11h20
  3. requéte me semble difficile
    Par SOA_j2EE dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/05/2009, 22h25
  4. problème lorsque ma requête retourne rien
    Par gibea00 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/08/2008, 16h54
  5. Requête difficile......
    Par HPJ dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/01/2004, 19h14

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