Requête SQL ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Requête SQL ?

    Bonjour,

    J'ai besoin d'avis.

    J'ai réalisé une requête SQL sur une table, mais le print_r renvoie tous les champs de la table et pas seulement le champ sélectionné.
    C'est de la requête dans le foreach dont il s'agit.

    Code PHP:
    <?php
    $idUser 
    JFactory::getUser()->id;
    $StateFriend 1;
    $ExpressionDate "date";

        
    // Extraire les id des amis de la table "social_friends"  
        
    $db JFactory::getDbo();
        
    $query $db->getQuery(true);
        
    $query->select(array('target_id'))
            ->
    from($db->quoteName('#__social_friends'))
            ->
    where($db->quoteName('actor_id')." = ".$db->quote($idUser)) AND ($db->quoteName('state')." = ".$db->quote($StateFriend));
        
    // Réinitialiser la requête à l'aide de notre nouvel objet de requête.
        
    $db->setQuery($query);
        
    $resultat $db->loadAssocList();
        
    //print_r ($resultat);
    ?>
    <?php
        
    foreach ($resultat as $listFriends) {
            {
            
    //ID des users concernés (Amis de $idUser)
            
    $idfriendsbirthday $listFriends['target_id'];
            }
        
    ?>
        <?php
         
    // Requête qui me pose le souci.

        // Récupérer la date d'anniversaire (Jour et mois) de UserFriends
        // Table "social_friends_data". Colonnes : uid (Id de l'utilisateur), datakey et raw (Où est stocké la date de naissance quand datakey = date)
        
    $db1 JFactory::getDbo();
        
    $query1 $db1->getQuery(true);
        
    $query1->select(array('raw'))
            ->
    from($db1->quoteName('#__social_fields_data'))
            ->
    where($db1->quoteName('uid')." = ".$db1->quote($idfriendsbirthday)) AND ($db1->quoteName('datakey')." = ".$db1->quote($ExpressionDate));
        
    // Réinitialiser la requête à l'aide de notre nouvel objet de requête.
        
    $db1->setQuery($query1);
        
    $DatesBirthday $db1->loadAssocList();
        
    print_r ($DatesBirthday);

        
    ?>    
        <?php }?>    
    </div>
    La colonne "raw" contient divers chaines de caractères dont la chaîne "date".
    Le print_r ($DatesBirthday); affiche le contenu de toutes les colonnes de la table, ne devrait-il pas afficher que le contenu de la colonne "raw" de ma table quand la chaîne qui y est présente est "date" ?

    Cordialement.

    Eric

  • #2
    Puisque vous ne récupérez que le contenu d'une seule colonne, je ne vois pas pourquoi vous utilisez "array" dans votre requête select.
    Elle devrait être seulement

    select($db1->quoteName('raw'))

    Tous les services pour les sites Joomla! : sécurité, nettoyage de sites piratés, hébergement, SEO, applications Fabrik, migration, compatibilité mobiles, accessibilité, ...
    Administrateur certifié Joomla! 3
    https://www.betterweb.fr

    Commentaire


    • #3
      Bonjour jfique,
      Merci pour votre réponse.
      J'utilisais "array" car j'avais besoin d'extraire 3 champs, et vu qu'avec 3 champs le print_r m'affichait toutes les infos de la table, j'avais réduit à un seul champ (raw).

      J'ai modifié le select "select($db1->quoteName('raw'))" mais rien ne change.
      Je cherche si je n'ai pas d'erreur, mais je ne vois vraiment pas où.

      Cordialement.
      Eric

      Commentaire


      • #4
        Bonjour Eric,

        Pour une seule colonne, utilisez loadResult au lieu de loadAssocList : https://docs.joomla.org/Selecting_da...g_JDatabase/fr

        Pascal
        If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

        Commentaire


        • #5
          Bonjour Pascal,
          Merci pour ton aide.

          C'est effectivement mieux, mais c'est très étrange j'ai l'impression que $db1->quoteName('datakey')." = ".$db1->quote($ExpressionDate) n'a aucune incidence.


          $ExpressionDate = "date";
          ...
          $query1->select($db1->quoteName('raw'))
          ->from($db1->quoteName('#__social_fields_data'))
          ->where($db1->quoteName('uid')." = ".$db1->quote($idfriendsbirthday)) AND ($db1->quoteName('datakey')." = ".$db1->quote($ExpressionDate));
          ...

          Si je regarde la table, dans le cas ou $idfriendsbirthday est égal à 982, normalement, je devrais avoir 1959-11-09 00:00:00, or loadResult affiche le name de l'individu

          Extrait de la table:

          Cliquez sur l'image pour l'afficher en taille normale  Nom : Capture_table.JPG* Affichages : 1* Taille : 46,7 Ko* ID : 1976123

          Comprenez-vous pourquoi ?

          Cordialement.

          Eric

          Commentaire


          • #6
            Je pense que tu as des problèmes avec tes parenthèses et tes doubles guillements Le AND me gêne.

            Tu devrais essayer de mettre 2 where

            Code:
            ->where($db1->quoteName('uid')." = ".$db1->quote($idfriendsbirthday))
            ->where($db1->quoteName('datakey')." = ".$db1->quote($ExpressionDate))
            Pascal
            If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

            Commentaire


            • #7
              Merci beaucoup Pascal c'était effectivement cela.

              J'affiche bien la date au format Y m d H m

              Encore merci.

              Bien cordialement.

              Eric

              Commentaire


              • #8
                Bonjour.

                Si résolu merci de passer me post en réglé
                Christophe (cavo789)
                Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                Commentaire


                • #9
                  Ho pardon, un oubli

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X