Problème d'insertion de code php dans un article (URGENT).

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

  • [Problème] Problème d'insertion de code php dans un article (URGENT).

    Bonjour à tous,

    Voilà mon problème : je développe un site d'achat solidaire pour mon association et j'ai mis en place en partenariat avec KELKOO un moteur de recherche (comparateur de prix). Pour mettre en place ce moteur (qui est un script en php fessant appel au flux xml de l'API Kelkoo), j'ai utilisé le pluggin " includePHP " qui permet d'inclure du PHP dans un article grâce à des balises de ce type :

    {phpfile}votre-fichier.php{/phpfile}

    Quand j'affiche l'article en question, voici ce que j'obtiens :

    Warning: simplexml_load_file(http://fr.shoppingapis.kelkoo.com/V3...7BNGumulHccg--) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /homepages/12/XXXXXXX/htdocs/XXXXXXXXXXXXXXX/moteur-recherche-kelkoo.php on line 68

    Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://fr.shoppingapis.kelkoo.com/V3/productSearch?query=&sort=totalprice_ascending&sta rt=1&results=40&show_products=1&show_subcategories =1&show_refinements=1&aid=92435421&timestamp=12196 57545&hash=C1tO8yGbV17BNGumulHccg--" in /homepages/12/XXXXXXXXX/htdocs/XXXXXXXXXXXXXXX/moteur-recherche-kelkoo.php on line 68

    __________________________________________________ _____________________________________________

    Que recherchez-vous ? ===== Le champ de recherche ===== ====> le bouton :lancer la recherche !

    __________________________________________________ _____________________________________________

    Warning: Invalid argument supplied for foreach() in /homepages/12/XXXXXXXXX/htdocs/XXXXXXXXXXXXXXX/moteur-recherche-kelkoo.php on line 90

    Warning: Invalid argument supplied for foreach() in /homepages/12/XXXXXXXXX/htdocs/XXXXXXXXXXXXXXX/moteur-recherche-kelkoo.php on line 101


    Donc voilà je ne sais pas d'où vient le problème, car le script fourni par Kelkoo ne subit aucune transformation (mis à part certaines lignes où il faut renseigner ces Identifients) et doit normalement fonctionner du premier coup.

    À part ça, quand je lance une requête (iPhone par exemple), j'ai bien des résultats qui s'affichent (sans aucune limite : exemple il y a 4000 produits, les 4000 voudront s'afficher), les messages d'erreur disparaissent, mais certaines fonctions comme affiner les résultats de recherche sont affichées, mais ne fonctionne pas.

    Si quelqu'un peut m'aider à résoudre cet épineux problème, ce serait vraiment cool ! Je ne suis pas encore une flèche en programation ...

    Voici le script php :

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    
    <body>
    
    <?
    
    function UrlSigner($urlDomain, $urlPath, $partner, $key){
    // Comme propos� sur Yahoo dev
    
        settype($urlDomain, 'String');
        settype($urlPath, 'String');
        settype($partner, 'String');
        settype($key, 'String');
    
        $URL_sig = "hash";
        $URL_ts = "timestamp";
        $URL_partner = "aid";
                
        $URLreturn = "";
        $URLtmp = "";
        $s = "";
        // get the timestamp
        $time = time();
    
        // replace " " by "+"
        $urlPath = str_replace(" ", "+", $urlPath);
    
        // format URL
        $URLtmp = $urlPath . "&" . $URL_partner . "=" . $partner . "&" . $URL_ts . "=" . $time;
                
        // URL needed to create the tokken
        $s = $urlPath . "&" . $URL_partner . "=" . $partner . "&" . $URL_ts . "=" . $time . $key;
                
        $tokken = "";
        $tokken = base64_encode(pack('H*', md5($s)));
        $tokken = str_replace(array("+", "/", "="), array(".", "_", "-"), $tokken);
    
        $URLreturn = $urlDomain . $URLtmp . "&" . $URL_sig . "=" . $tokken;
                
        return $URLreturn;
    }
    
    /*function fitre_xml($val) {
        // Nettoyage complet des parasites :)    
        return utf8_decode(ereg_replace("\]\]>","",ereg_replace("<!\[CDATA\[","",$val)));
    } */
    
    // Variable indispensable :
    $keypartner = "";
    $idpartner  = "";
    $recherche  = urlencode(utf8_decode($_GET["q"]));
    
    // Recuperer le liens de traking TRADEDOUBLER
    $tradedoubler = "http://clk.tradedoubler.com/click?p=1742398&a=&g=182458688";
    // Exemple : "http://clk.tradedoubler.com/click?p=1742398&a=idtradersite&g=iddetracking&url="
    
    // Format des donn�es renvoyer par l'API...
    $format = "&sort=totalprice_ascending&start=1&results=40&show_products=1&show_subcategories=1&show_refinements=1";
    
    // Signature de URL
    $backendURL = UrlSigner('http://fr.shoppingapis.kelkoo.com', '/V3/productSearch?query='.$recherche.''.$format, $idpartner, $keypartner);
    
    // R�cuperation du FLUX XML
    $xml = simplexml_load_file($backendURL); <==== là y a un problème : ligne 68 
    
    // Exploitation du FLUX
    
    ?>
    
    <form method="get" action="">
                <div>
                    <label for="s">Que recherchez-vous ?</label>
                    <input type="text" value="<?php echo utf8_decode($_GET["q"]) ?>" name="q" id="s" />
                    <!-- <input type="hidden" value="true" name="fromform"> -->
                    <button type="submit" class="cta internal"><span class="t"><span></span></span><span class="cont"><span>Chercher</span></span><span class="b"><span> </span></span></button>
                    <div class="search-clear"></div>
                </div>
    </form>
        <div style="float: left;width: 991px;">
        <div style="float: left;width: 240px;">
                <p style="text-align: left;">
                    Affinez votre recherche :
                </p>
                <ul style="font-size: 13px; padding: 0px 0px 0px 10px; margin: 0px; float: left; width:230px;">
                    <?
                    foreach ($xml->Categories->SubCategory as $category) {       <==== là y a un problème : ligne 90
                    echo "<li class=category>";
                    echo "<h2 class=ss-category><a href=>".$category->Title." | ".$category->NumberOfProducts." </a></h2> \n";
                    echo "</li>";
                    }
                    ?>
                </ul>
        </div>
        <div style="float: left;width: 745px;">
                <ul style="float: left;width: 745px;">
                    <?
                    foreach ($xml->Products->Product as $produit) {     <==== là y a un problème : ligne 101
                    $dispo = $produit->Offer->Availability;
                    echo "<li class=produit>";
                    echo "<div class=image><img alt='".$produit->Offer->Title."' title='".$produit->Offer->Title."' src=".$produit->Offer->Images->Image->Url." width=90 height=90 /> \n";
                    echo "<img class=logo src=".$produit->Offer->Merchant->Logo->Url." alt=".$produit->Offer->Merchant->Name." /></div> \n";
                    echo "<div id=text-produit><div class=nom>".$produit->Offer->Title." </div>\n";
                    echo "<div class=description>".$produit->Offer->Description." <br />\n";
                    echo "<strong>Disponibilit&eacute; : \n";
                    switch ($dispo)
                    {
                    case 1:
                        echo "En stock";
                        break;
                    case 2:
                        echo "En commande";
                        break;
                    case 3:
                        echo "Non renseign&eacute;";
                        break;
                    case 4:
                        echo "Pr&eacute;-commande";
                        break;
                    case 5:
                        echo "Disponible sur commande";
                        break;
                    case 6:
                        echo "Rupture de stock";
                        break;
                    }
                    echo " | D&eacute;lai de livraison : ".$produit->Offer->DeliveryTime." | Frais de livraison : ".$produit->Offer->Price->DeliveryCost." &euro;</strong></div></div>\n";
                    echo "<div class=prix>Prix total<br /><a href=".$tradedoubler."&epi=".$recherche.",".$produit->Offer->Category[id]."&epi2=recherche-".$produit->Offer->Merchant[id]."&url=".$produit->Offer->Url."";
                    echo " onClick='javascript:pageTracker._trackEvent(\"".$produit->Offer->Category->Name."\",\"Clic\", \"".$produit->Offer->Merchant->Name."\", \"\" );' target=_blank> \n";
                    echo "".$produit->Offer->Price->TotalPrice." &euro;<br /><img class=offre src=bouton_voir.jpg alt=Voir cette offre border=0 /></a></div> \n";
                    echo "</li>";
                    }
                    ?>
                </ul>
                
    </body>
    </html>
    Dernière édition par artof à 28/09/2010, 10h13

  • #2
    Première impression c'est le que le XML pour l'API n'est pas téléchargeable, atteignable...
    Est-ce que le lien est correcte ?

    Je ne connais pas l'API mais
    $backendURL ne maque-t-il pas & ou autre caractère entre les variables ?
    $backendURL = UrlSigner('http://fr.shoppingapis.kelkoo.com', '/V3/productSearch?query='.$recherche.''.$format, $idpartner, $keypartner);


    Est-ce que ton hébergeur bloque les accès externe de ces machines ?
    Règlement du forum : http://forum.joomla.fr/faq.php
    Comment mettre le post en [Réglé]: http://forum.joomla.fr/announcement.php?f=58
    Joomla! 3 Le Livre Pour Tous , n'hésitez pas à le lire pour vous aider
    http://www.iwannaclick.org

    Commentaire


    • #3
      Bonjour Sharky,

      Pour mon hébergeur, je suis chez 1and1 et j'ai débloqué la fonction simple_load_xml avec un php.ini.

      Je viens de m'entretenir plus d'une heure avec le responsable de l'API kelkoo par rapport à ce problème, on essais de mettre en place une solution, il faut une page (un article) qui contient juste les lignes 74 à 82 (la <form> de recherche, ensuite pour l'affichage des résultats, je dois créer une autre page (du style http://www.monsite/mes-resultats.php).

      Sinon pour la ligne 68, apparemment il n'y aurai pas de problème...

      Donc voilà, je vais tester ca et je reviens faire un up ....

      Commentaire


      • #4
        Re-

        Bon, le problème est réglé, il y avait quelque erreur de frappe dans le script car le code avait été copié/collé depuis Word, donc des " pas tout à fait pareil et une ou deux fautes de frappe du genre "$categoty" au lieu de "$category"...

        Enfin voilà, merci pour ton aide Sharky, et à plus sur le forum....

        -Artof-

        Commentaire

        Annonce

        Réduire
        1 sur 2 < >

        C'est [Réglé] et on n'en parle plus ?

        A quoi ça sert ?
        La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

        Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

        Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
        Comment ajouter la mention [Réglé] à votre discussion ?
        1 - Aller sur votre discussion et éditer votre premier message :


        2 - Cliquer sur la liste déroulante Préfixe.

        3 - Choisir le préfixe [Réglé].


        4 - Et voilà… votre discussion est désormais identifiée comme réglée.

        2 sur 2 < >

        Assistance au forum - Outil de publication d'infos de votre site

        Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

        Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

        Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

        UTILISER À VOS PROPRES RISQUES :
        L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

        Problèmes connus :
        FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

        Installation :

        1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

        Archive zip : https://github.com/AFUJ/FPA/zipball/master

        2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

        3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

        4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

        5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

        6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
        et remplacer www. votresite .com par votre nom de domaine


        Exemples:
        Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
        Télécharger le script fpa-fr.php dans: /public_html/
        Pour executer le script: http://www..com/fpa-fr.php

        Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
        Télécharger le script fpa-fr.php dans: /public_html/cms/
        Pour executer le script: http://www..com/cms/fpa-fr.php

        En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

        Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
        Voir plus
        Voir moins
        Travaille ...
        X