Requete SQL dans le code source de la "HEAD" de Joomla!

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

  • Requete SQL dans le code source de la "HEAD" de Joomla!

    Bien me voilà encore avec une autre magouille bien de chez Moi

    Voilà j'aimerai modifier le contenu de la balise meta=description et meta=keyword en fonction de données présentes
    dans la base de données, car le composant que j'utilise (adsmanager) pour ce projet
    ne génère pas ces balises meta...

    Je suis donc remonté jusqu'au au code source de la "head" soit "head.php",
    et j'ai ajouté le code suivant :

    Code PHP:
    /*# RÉCUPERATION DES DONNÉES # */

            
    if ($_GET['option'] == "com_adsmanager")
            {
                if (isset(
    $_GET['id']))
                {
                    try
                                {
                                    
    // recuperation des données via l'objet PDO
                                    
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION// recuperation des données via l'objet PDO
                                    
    $bdd = new PDO('mysql:host=localhost;dbname=lst''root'''$pdo_options);
                                    
                                    
    // recupération de $ad_nom
                                    
    $req $bdd->prepare('SELECT ad_headline FROM lstt_adsmanager_ads WHERE id = ?');
                                    
    $req->execute(array($_GET['id']));

                                    while (
    $donnees $req->fetch())
                                    {
                                        
    $ad_nom htmlentities($donnees['ad_headline']);
                                    }
                                    
                                    
    $req->closeCursor();
                                }
                                catch(
    Exception $e)
                                {
                                    die(
    'Erreur : '.$e->getMessage());
                                }
                }
            }
            
    /*# Fin de la RÉCUPERATION Des Données # */    

            // ad_nom est défini puisque récuperé dans la base de donnée
            
    if (isset($ad_nom)) {
            
    $buffer .= $tab.'<meta name="description" content="Ceci est la fiche du '.$ad_nom.'" />'.$lnEnd;
            } 
            elseif (
    $documentDescription) {
            
    $buffer .= $tab.'<meta name="description" content="'.htmlspecialchars($documentDescription).'" />'.$lnEnd;
            } 
    Cela aurait été trop beau que ça fonctionne... le script ignore totalement le résultat de la recherche, alors
    que je sais que celui-ci est "positif", donc aucune description ne s'affiche puisque $ad_nom n'est pas détecté et le composant ne génère pas les balises...

    Par contre si je défini $ad_nom manuellement cela fonctionne... et si je suis sur de ma requete SQL c'est parce que je l'utilise à un autre endroit du site, mais directement dans le code source du composant.

    Je voulais donc savoir si quelqu'un peut me dire comment faire une requête SQL dans la "head".

    Merci d'avance pour vos réponses et bonne journée...

    MICKAEL

  • #2
    Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

    personne pour m'aider à faire fonctionner ce petit bout de code dans la head ??

    Commentaire


    • #3
      Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

      Beurk beurk beurk

      Désolé pour cette entrée en matière peu ragoutante mais l'idée est d'insister sur le caractère gros bricolage.

      N'aurais-tu pas plus facile à tenter de trouver un plugin de type system / content qui mettrait les meta de la page à jour ?

      Je ne me prononce pas sur ton code car je n'ai pas d'expérience en ce type de déclaration : tu crées une connexion vers la base de données. Est-ce que cette connexion est correcte / correctement écrite / ... ? Tu aurais un million de fois plus facile à le faire via un plugin où JFactory::getDBO() te donne un accès immédiat à la base de données.
      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
        Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

        Ma requête SQL est bien rédigée et elle fonctionne depuis le code source du composant...
        si elle ne fonctionne pas c'est parce que je l'a mais dans le fichier source "head.php"
        (déductions d’après constatations )

        merci pour la suggestion de JFactory::getDBO(), je test ça demain, bonne soirée à tous

        Commentaire


        • #5
          Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

          Faut voir si le framework de Joomla est chargé à ce moment-là... Pas sûr
          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


          • #6
            Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

            Bonjour,

            Pourquoi utiliser une connexion PDO, avec par dessus le marché une prepared query, alors que ce type de requête préparée n'est utile que dans une boucle, et de plus, vouloir bricoler à la main les meta alors qu'il existe une belle collection d'éléments de l'API Joomla! qui font ça proprement.

            Faut voir si le framework de Joomla est chargé à ce moment-là... Pas sûr
            Si le code modifié est dans la partie gérant le head de la page du template, le framework est chargé.
            Un code plus "politiquement" correct ressemblerait à ça (à tester, c'est du on the fly )
            Code PHP:
            if ( ( JRequest::getString'option' ) == 'com_adsmanager' ) && isset( JRequest::getInt'id' )   ) {
                
            $db JFactory::getDBO() ;
                
            $db->setQuery'SELECT ad_headline FROM lstt_adsmanager_ads WHERE id =' .  JRequest::getInt'id' ) ) ;
                
            $res $db->loadObject();
                
            $ad_nom $res->ad_headline ;

                
            $doc JFactory::getDocument() ; // pas toujours nécessaire, si un accès document existe dans le template
                
            $doc->setMetaData'Description''Ceci est la fiche de ' $ad_nom ) ; 

            le tout à caser après le jdoc:include du head.
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

              Envoyé par cavo789 Voir le message
              N'aurais-tu pas plus facile à tenter de trouver un plugin de type system / content qui mettrait les meta de la page à jour
              La vraie solution serait de patcher Ads manager pour qu'il renseigne correctement les méta. Dans son code actuel, la gestion correcte des métas passe à la trappe
              Pas de demande de support par MP.
              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

              Commentaire


              • #8
                Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

                Et patcherAds manager ne devrait pas être trop compliqué à mon avis. Ce serait toujours mieux que de bricoler le fichier index.php.
                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
                  Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

                  Envoyé par cavo789 Voir le message
                  Et patcherAds manager ne devrait pas être trop compliqué à mon avis. Ce serait toujours mieux que de bricoler le fichier index.php.
                  Oui, il faudrait lui rajouter ce quyi lui manque, qu'il décide d'utiliser JDocument pour y insérer proprement les métas.

                  Mais ça, ce n'est pas toujours à la portée de tous
                  Pas de demande de support par MP.
                  S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                  Commentaire


                  • #10
                    Re : Requete SQL dans le code source de la &quot;HEAD&quot; de Joomla!

                    me revoilà avec une bonne nouvelle : ça fonctionne !

                    grâce au code de jisse, que j'ai pu placer dans mon fichier "head.php", il doit juste y avoir un problème
                    au niveau de la syntaxe conditionnel car PHP me renvoyait une erreur...
                    je l'ai remplacée par une syntaxe conditionnel traditionnelle et ça fonctionne bien.

                    Voilà en gros la syntaxe à utilisé pour une requête minimal :
                    Code PHP:
                    $db JFactory::getDBO() ;
                        
                    $db->setQuery'SELECT donnee FROM table WHERE id =' .  JRequest::getInt'id' ) ) ;
                        
                    $res $db->loadObject();
                        
                    $donnee $res->donnee 
                    Pour ce qui est de la modification des composant je vais peut être essayer de mi mettre en commencant par ce post : http://forum.joomla.fr/showthread.ph...647#post814647

                    merci beaucoup pour votre aide et bonne journée !!
                    Dernière édition par Soundboy39 à 23/12/2011, 11h53

                    Commentaire

                    Annonce

                    Réduire
                    Aucune annonce pour le moment.

                    Partenaire de l'association

                    Réduire

                    Hébergeur Web PlanetHoster
                    Travaille ...
                    X