Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/09/2011, 11h50   #1
Invité de passage
 
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Par défaut Echo dans une fonction

Bonjour à tous,
J'essaie d'appeler une variable externe (echo en ligne 2) dans une fonction dans une chaine de concaténation (l20 à 23),
mon premier echo marche très bien mais le deuxième ne veut pas s'activer alors qu'il est bien présent dans le code source de ma page. Je sais qu'on ne peut pas appeler un echo dans une fonction, j'ai donc utiliser un accesseur mais ça ne fonctionne et je n'arrive à cerner le pourquoi du comment ? Je vois pas comment faire! Merci pour votre aide.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
echo $categories_menu;
$test= new bm_flyout();
$test->setCatMenu($categories_menu);
class bm_flyout {
    var $code = 'bm_flyout';
    var $group = 'boxes';
    var $title;
    var $description;
    var $sort_order;
    var $enabled = false;
        private $categories_menu; // uniquement accessible dans la classe bm_flyout
        public function setCatMenu($var) {
        $this->categories_menu=$var;
    }
 
// partie du code supprimée, on affiche categories_menu dans une chaine concaténée
    function execute() {
      global $oscTemplate;      
      $data = '<div class="ui-widget infoBoxContainer">' .
              '  <div class="ui-widget-header infoBoxHeading">' . MODULE_BOXES_FLYOUT_TITLE . '</div>' .
              '  <div class="ui-widget-content infoBoxContents">' . '<tr><td>' . $this->categories_menu . '</td></tr>'. '</div>' .
              '</div>';
 
         $oscTemplate->addBlock($data, $this->group);
    }
}
gege25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 12h09   #2
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 516
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 516
Points : 535
Points : 535
je ne comprend pas comment tu a conçut ton exemple; j'aurais fait:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
global $oscTemplate;  
$categories_menu='lalalere';
 
echo $categories_menu;
 
class bm_flyout {
    var $code = 'bm_flyout';
    var $group = 'boxes';
    var $title;
    var $description;
    var $sort_order;
    var $enabled = false;
    private $categories_menu; // uniquement accessible dans la classe bm_flyout
 
    public function setCatMenu($var) {
        $this->categories_menu=$var;
    }
 
// partie du code supprimée, on affiche categories_menu dans une chaine concaténée
    function execute() {
 
      $data ='<div class="ui-widget infoBoxContainer">' .
              '  <div class="ui-widget-header infoBoxHeading">bla</div>' .
              '  <div class="ui-widget-content infoBoxContents">' . '<tr><td>' . $this->categories_menu . '</td></tr>'. '</div>' .
              '</div>';;
 
      return $data;
    }
}
 
$test= new bm_flyout();
$test->setCatMenu($categories_menu);
$temp=$test->execute();
 
$oscTemplate=new .... ;
$oscTemplate->addBlock($temp, $this->group);
A peu près
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 12h09   #3
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 465
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2009
Messages : 465
Points : 651
Points : 651
Est ce que un echo dans la fonction execute ne marche pas??

Code :
1
2
3
4
5
6
7
8
9
function execute() {
      global $oscTemplate;      
      $data = '<div class="ui-widget infoBoxContainer">' .
              '  <div class="ui-widget-header infoBoxHeading">' . MODULE_BOXES_FLYOUT_TITLE . '</div>' .
              '  <div class="ui-widget-content infoBoxContents">' . '<tr><td>' . $this->categories_menu . '</td></tr>'. '</div>' .
              '</div>';
 
         echo $data;
    }
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 12h33   #4
Invité de passage
 
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 0
Points : 0
Alors en fait de bosse sur une solution oscommerce, voila le site sur le quel je bosse dormitoryuk.com/shop
Si tu vas dessus, tu peux voir que le menu est présent en haut à gauche grace à echo($categories_menu) en ligne 1. Mon but est en fait de l'afficher dans la première boite "Categories flyt out", code qui est généré par la fonction execute en ligne 18. Je suis obliger de l'appeler dans la variable $data tel que pour que l'installation soit propre. Mais lorsque je passe par mon assesseur, les données ne sont pas générées!
Le premier echo me sert juste d'exemple! Si je met un echo $data dans execute, ca ne respecte pas le standard imposé par mon eshop puisque l'echo n'est pas controlé par les balises html.
@tigunn Pareil, je pense qu'on peut appeler la conftion directement avec une sorte d'echo dans la concaténation mais ta solution me semble bancale!
Vous pouvez télécharger le fichier complet ici, à la racine:
http://monespacedetente.free.fr/ -->bm_flyout.php
gege25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h01   #5
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 516
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 516
Points : 535
Points : 535
Code :
1
2
3
4
5
6
7
8
9
    function execute() {
      global $oscTemplate;      
      $data = '<div class="ui-widget infoBoxContainer">' .
              '  <div class="ui-widget-header infoBoxHeading">' . MODULE_BOXES_FLYOUT_TITLE . '</div>' .
              '  <div class="ui-widget-content infoBoxContents">' . '<tr><td>' . $this->categories_menu . '</td></tr>'. '</div>' .
              '</div>';
 
         $oscTemplate->addBlock($data, $this->group);
    }
C'est ta conception qui est bancale !! Une fonction retourne un résultat et c'est dans le fichier appelant que l'on traite celui-ci.
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h51.


 
 
 
 
Partenaires

Hébergement Web