Interrogation d'une table

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

  • [RÉGLÉ] Interrogation d'une table

    Bonjour,
    Dans une table j'ai un champ "nom", je veux faire une requête qui me retourne la valeur de ce champ nom quand j'indique l'id correspondante.

    Je fais:

    Code PHP:
        <?php    
    $test 
    "non";

    $db JFactory::getDbo();        
    $query $db->getQuery(true);        
    $query->select(array('id','nom','denivele_min'))
                 ->
    from($db->quoteName('#__randonne_randonnees'))      
                 ->
    where($db->quoteName('retour_idem')." = ".$db->quote($test));                    
                  
    $db->setQuery($query);                
                  
    $ListRando $db->loadAssocList();                                  

                  foreach (
    $ListRando as $ListRandos) { {            
                  
    $IdRandonnee $ListRandos['id'];            
                  
    $NomRandonnee $ListRandos['nom'];          
                  
    $DenivelRandonnee $ListRandos['denivele_min'];                              

                  echo 
    $IdRandonnee;            
                  echo 
    $NomRandonnee;            
                  echo 
    $DenivelRandonnee;                          
                    }                      
             
    ?>
                  TEST          
            <?php ?>
    Mais rien n'est affiché.

    Aucun résultat !

    Voici une capture écran de la table.

    Cliquez sur l'image pour l'afficher en taille normale  Nom : Capture_table.JPG  Affichages : 0  Taille : 39,7 Ko  ID : 2011822

    Quelqu'un voit-il l'erreur ?

    Cordialement.

    Eric
    Dernière édition par Agrepe à 17/01/2020, 15h36

  • #2
    Bonjour Eric,

    Au niveau php, cela semble correct. Cependant, avant de le mettre en php, je teste la requête sous phpmyadmin.

    Donc, si tu testes, select id, nom, denivele_min from <prefixe>_randonne_randonnees where retour_idem = "non" , est-ce que cele fonctionne ?

    Personnellement, je préfèrerais un LIKE plutôt qu'un =

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

    Commentaire


    • #3
      Bonjour

      Personnellement, mon oeil s'arrête sur des détails ...

      Code:
      Il jouait du piano debout
      C'est peut-être un détail pour vous
      Mais pour moi, ça veut dire beaucoup
      ...
      ;-)

      * Ton indentation est inexistante
      * Tu récupères loadAssocList() qui, à priori, te retourne plusieurs valeurs dans "ListRando" (sans "s")
      * Tu fais un foreach d'une variable sans "s" et tu extraits record par record pour les stocker dans une variable avec "s")

      C'est bête mais quelque chose comme ci-dessous est plus propre non ?

      Code PHP:
      $arr $db->loadAssocList();                                  

      foreach (
      $arr as $item) {
          ... 
      * pourquoi de multiples <?php ... ?> ... <?php ... ?>, il suffirait d'écrire echo "TEST"; pour n'avoir qu'un seul bloc

      Je me permets de faire ces remarques car, plus le code sera écrit de manière cohérente et propre, plus il deviendra aisé d'en débusquer les coquilles.

      Bonne journée.
      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


      • #4
        Hello.

        Petites astuces pour le développement.

        Avant ton
        Code PHP:
        $db->setQuery($query
        Tu fait un
        Code PHP:
        JFactory::getApplication()->enqueueMessage($query->__toString()); 
        Tu récupères ainsi ton code sql generé dans la zone message de ton template et tu le testes dans phpmyadmin.
        Ceci le temps de debugger.

        Il faut juste remplacer les #_ par ton préfixe de tables.

        Ou si tu n'as pas de retour d'affichage (retour qui n'appele pas le template (ajax, format non html -&format=raw ou csv par exemple-) tu peux passer par les logs pour laisser des traces pour te faciliter le debuggage.

        Par exmeple :
        Code PHP:
        //en début de script
        use Joomla\CMS\Log\Log;
        .
        .
        .
        //
        $query->select(...);
        //
        Log::addLogger(array('text_file' => 'nom_de_ton_fichier_logs.php'), Log::ALL, array('ta_categorie_de_logs'));
        Log::add($query->__toString(), Log::INFO'ta_categorie_de_logs');
        $db->setQuery($query
        Les logs se trouvent dans ton dossier log défini en paramètres généraux du site (généralement /logs)
        Dernière édition par roland_d_alsace à 17/01/2020, 12h11
        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
        Rejoignez le Joomla Users Groupe Alsace...
        roland_d_alsace va-t-il devenir roland_du_grand_est ?

        Commentaire


        • #5
          Bonjour,
          Ce matin tout fonctionne, sans que je n'y ai rien changer.
          Je ne comprends pas pourquoi hier cela ne fonctionnait pas.
          J'avais pourtant testé sur un autre ordi ressorti du placard, qui ne s'était jamais connecté à ce site.

          Merci pour vos réponses, elles me sont de toutes façons très utiles.

          Cordialement.

          Eric

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X