Multiplier une variable plxShow, impossible?

Salut,
ça fais longtemps que je n'ai pas eu de soucis avec Pluxml mais la, j'arrive à bout.
Le titre est effectivement à prendre au pied de la lettre, je vous explique mon problème.

Je fais des essais avec Pluxml et j'aimerais bien multiplier $a (un nombre donné: 915) qui correspond à la largeur d'un div, par $b (la variable $plxShow->nbAllArt();).

Le but serait d'opérer la multiplication pour obtenir un div d'une largeur égale à 915 x le nombre d'article en tout. Cela dans une balise de style css embarquée dans le header.php.

Le code est le suivant:
<?php 
echo("<style type=\"text/css\">
#bloc{
/*");
$a=915;
$b=$plxShow->nbAllArt();
$total=$a*$b;
echo("*/
width:".$total."px;
margin: 0;
padding: 0;
}
</style>"); ?>

Le soucis c'est que $plxShow->nbAllArt(); ne veut pas subir la multiplication...
( je lui ai retirer les termes "no_article", "article", "articles" associés pour avoir seulement le nombre )
dès que je le remplace par 1,2,3... ça fonctionne!
Mais la je suis assez désespérer.

Au rendu le code source affiche ça. Seulement le /*commentaire*/ devrait être vide et le width devrait être > 0...
<style type="text/css">
#bloc{
/*3*/
width:0px;
margin: 0;
padding: 0;
}
</style>"); ?>

Si quelqu'un sait comment m'aider, ou a une idée,
je suis preneur!

Réponses

  • Salut, peut être parce que c'est pas une valeur numérique qui est renvoyé par nbAllArt, t'a essayé :
    $b=int($plxShow->nbAllArt());
    

    J'ai un string de l'array

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    $plxShow->nbAllArt() ne renvoie aucune valeur, il affiche la valeur avec une echo.
    Donc aucune opération arithmétique possible avec cette instruction.

    ps: pour info cette fonction sera supprimée avec la 5.1.6

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Bonjour,
    merci beaucoup pour vos réponses.

    @fliflip
    en ajoutant int() cela indique une fatal error: fonction indéfinie.

    @Stéphane
    Cette fonction va être supprimée à jamais ou bien remplacée? Car c'est bien dommage, en d'autres circonstances elle est bien pratique!
    Et en attendant est ce que vous savez comment je peux récupérer uniquement la valeur qu'elle affiche, une à qui je pourrais faire subir des multiplications?
  • Jerry WhamJerry Wham Member
    février 2012 modifié
    avec un
    <!-- <?php ob_start(); $plxShow->nbAllArt();$b = ob_get_content();ob_end_flush();?> -->
    
    $b contiendra ta valeur. Je sais c'est très moche, mais bon en attendant la 5.1.6 :-°
  • Merci Jerry Wham c'est parfait avec
    ob_get_contents();
    S'il te plait, est ce que tu peux m'expliquer un peu qu'est ce qui se passe pour que cela fonctionne et pourquoi "c'est très moche?"
  • Jerry WhamJerry Wham Member
    février 2012 modifié
    En fait la fonctions ob_start() "démarre la tamporisation de sortie. Tant qu'elle est enclenchée, aucune donnée, hormis les en-têtes, n'est envoyée au navigateur, mais temporairement mise en tampon (d'où le terme de tamporisation de sortie = mise en tampon des données devant s'afficher à la sortie). Le contenu de ce tampon peut être copié dans une chaîne avec la fonction ob_get_contents(). Pour afficher le contenu de ce tampon, utilisez ob_end_flush(). Au contraire, ob_end_clean() effacera le contenu de ce tampon. " (dixit la doc php)
    .
    Tant qu' on n'utilise pas ob_end_(clean ou flush) le tampon n'est pas fermé et aucune donnée ne s'affiche.
    Je t'ai d'ailleurs dit une bêtise : il vaudrait mieux utiliser ob_end_clean() à la place de ob_end_flush() car tu ne l'utilises qu'une fois et qu'il ne sert à rien de conserver le tampon de sortie (mémoire utilisée pour rien). Le fait d'utiliser ob_end_clean() ne supprimera que le tampon et n'initialisera pas la valeur $b qui contient le nombre de tes articles.
    Ici, comme $plxShow->nbAllArt() affiche une valeur avec echo, le fait de la récupérer via ob_get_contents() la fait aussi s'afficher (à cause du echo de $plxShow). C'est pour cette raison que j'ai mis les balises de commentaires (<!-- et -->) pour que le navigateur ne l'affiche pas et que je dis que c'est très moche.
    Je ne sais pas si mes explications sont assez claires ?
  • Merci beaucoup Jerry Wham.
    Ça m'a bien aidé!

    Par contre j'aurais bien aimé savoir pour la fonction $plxShow->nbAllArt() si elle allait être supprimée définitivement ou bien remplacée?
    Car elle est sacrement utile en certains cas...
  • StéphaneStéphane Member, Former PluXml Project Manager
    La fonction va etre supprimée car les resultats affichés ne sont pas toujours justes

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Ah... merci pour la réponse.
    Seulement est-ce qu'il ne serait pas mieux de la corriger afin qu'elle retourne des résultats justes ou plus justes.
    Ce serait difficile?
Connectez-vous ou Inscrivez-vous pour répondre.