Remplacer un résultat par un autre

Remplacer un résultat par un autre - PHP - Programmation

Marsh Posté le 28-06-2010 à 17:26:47    

Bonjour
 
A l'aide de cette fonction j'affiche un titre de page.
 
Ce que je voudrais c'est que au moment du deuxième get mon $sousfam remplace mon $fam car là les deux s'affichent
 
Comment faire, j'ai tenté avec un str_replace() mais je ne sais pas comment l'utiliser et si c'est adapté pour cela.
 
Pouvez vous m'aider ?
Merci
 [:abnocte invictus]  
 

Code :
  1. function _tit() {
  2. global $_sousrub, $_rub;
  3. if(!empty($GLOBALS['_rub'])) $fam=get("categories","cat",$GLOBALS['_rub']);
  4. $ret .= "$fam";
  5. if(!empty($GLOBALS['_sousrub'])) $sousrub=get("categories","cat",$GLOBALS['_sousrub']);
  6. $ret .= "$sousrub"; 
  7. return $ret;
  8. }

Reply

Marsh Posté le 28-06-2010 à 17:26:47   

Reply

Marsh Posté le 28-06-2010 à 17:52:30    

L'opérateur .= ajoute une string à une variable.
L'opérateur = affecte une valeur à une variable

Code :
  1. $var = 'test';
  2. // $var vaut "test"
  3. $var = 'remplacement';
  4. // $var vaut "remplacement"
  5. $var .= 'concatenation';
  6. // $var vaut "remplacementconcatenation";


$var .= 'string' est un raccourci pour $var = $var . 'string', ce qui signifie que l'on affecte à $var sa valeur actuelle suivie de 'string'


Message édité par Paulp le 28-06-2010 à 17:52:50
Reply

Marsh Posté le 28-06-2010 à 21:10:47    

Ben là je comprends pas bien ce que tu veux dire...

Reply

Marsh Posté le 29-06-2010 à 09:55:00    

Ton code :

Code :
  1. function _tit() {
  2. global $_sousrub, $_rub;
  3. // $ret vaut null, car tu ne l'as pas initialisé
  4. if(!empty($GLOBALS['_rub'])) $fam=get("categories","cat",$GLOBALS['_rub']);
  5.  
  6.  
  7. $ret .= "$fam";
  8. // ça équivaut à $ret = $ret . $fam;
  9. // soit $ret = null . $fam;
  10. // soit $ret = "" . $fam;
  11. // soit $ret = $fam;
  12. // d'ailleurs, les guillemets autours de "$fam" sont en trop
  13.  
  14. if(!empty($GLOBALS['_sousrub'])) $sousrub=get("categories","cat",$GLOBALS['_sousrub']);
  15.  
  16.  
  17. $ret .= "$sousrub";  
  18. // ça équivaut à $ret = $ret . $sousrub;
  19. // soit $ret = $fam . $sousrub;
  20.  
  21. // Les guillemets autours de "$sousrub" sont aussi en trop
  22.  
  23. return $ret;
  24. }



Message édité par Paulp le 29-06-2010 à 10:24:09
Reply

Marsh Posté le 29-06-2010 à 10:01:40    

C'est ce que j'avais compris et j'ai déjà fait cette manip mais dans ce cas, le premier get ne s'affiche plus...

Reply

Marsh Posté le 29-06-2010 à 10:24:15    

Voici un bout de code qui devrait faire ce que tu veux

Code :
  1. function _tit() {
  2. global $_sousrub, $_rub;
  3. if(!empty($GLOBALS['_rub'])) return get("categories","cat",$GLOBALS['_rub']);
  4.  
  5. if(!empty($GLOBALS['_sousrub'])) return get("categories","cat",$GLOBALS['_sousrub']);
  6.  
  7. return '';
  8. }
 

Mais c'est assez moche comme façon de faire ... Pourquoi passer les paramètres en global et pas en paramètre de la fonction ?


Message édité par Paulp le 29-06-2010 à 10:25:48
Reply

Marsh Posté le 29-06-2010 à 10:55:48    

Ben désolé de te donner tout ce mal mais ça ne fonctionne pas non plus...
J'ai :
=> pour le premier get : _rub
=> pour le deuxième get : _rub + _sousrub (alors que je ne veux que _sousrub)

Reply

Marsh Posté le 29-06-2010 à 11:30:32    

dexenium a écrit :

Ben désolé de te donner tout ce mal mais ça ne fonctionne pas non plus...
J'ai :
=> pour le premier get : _rub
=> pour le deuxième get : _rub + _sousrub (alors que je ne veux que _sousrub)


Ce n'est pas dans cette fonction qu'est le problème alors. Peut-être la fonction get ?
 
Mais je te le redis, tu devrais revoir l'architecture générale ...
 
Enfin, tu n'es pas obligé d'utiliser $GLOBALS.
Soit tu déclares les variables comme globales avec le mot clef global, soit tu y accèdes avec $GLOBALS. Faire les deux est redondant.
http://php.net/manual/fr/language.variables.scope.php

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed