Concaténation difficile

Concaténation difficile - PHP - Programmation

Marsh Posté le 31-08-2004 à 19:57:18    

Je récolte pas mal de problèmes sur ces lignes.
 

Code :
  1. if ("$obj->Test"==0){
  2. echo "<td align='center' valign='middle' bgcolor='#DDEEEE'><a href=\"javascript:action('".$obj->Code."','".$obj->Test."')\"><img src=\"http://www.tolo-serv.net/".$obj->Code.".gif\" border='0'></a></td>";
  3. }
  4. else
  5. {
  6. echo "<td align='center' valign='middle' bgcolor='#DDEEEE'><a href=\"javascript:action('".$obj->Code."','".$obj->Test."')\"><img src=\"http://www.tolo-serv.net/smileys/".$obj->Code.".gif\" border='0'></a></td>";
  7. }


 
Déjà, à la première ligne, le test ne passe pas.
En omettant cette erreur, je me retrouve encore avec une erreur lors de la déclaration des paramètres de la fonction action (apparemment, un problème de concaténation)
 
Je vois pas bien comment résoudre ces deux problèmes [:gratgrat]


Message édité par Tolor le 31-08-2004 à 19:58:22

---------------
Je ne crois qu'aux statistiques que j'ai moi-même falsifiées
Reply

Marsh Posté le 31-08-2004 à 19:57:18   

Reply

Marsh Posté le 31-08-2004 à 20:06:59    

essai de décomposer ta concaténation en plusieur étapes
 
quand tu fait:

Code :
  1. $msg="toto";
  2. $msg.=" fait du vélo";


ton $msg vaut "toto fait du vélo"
 
et puis dans tout les cas ton code est le meme, il n'y a que le "src" qui change, donc tu ne dois soumettre que ton src au conditionnemet, le reste peut etre ecrit en HTML, meme pas besoin d'un echo PHP...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 31-08-2004 à 20:22:36    

> Déjà, à la première ligne, le test ne passe pas.  
Enlève les guillemets.

Reply

Marsh Posté le 01-09-2004 à 09:49:51    

kalex a écrit :

> Déjà, à la première ligne, le test ne passe pas.  
Enlève les guillemets.


 
j'avais pas fait gaffe à celle-là, c'est vrai que les guillements autour de la variable dans la condition du "if", c'est pas bien...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 01-09-2004 à 11:22:37    

c'est ce qui arrive lorsqu'on code comme un goret.
 
code redondant dans le teste, pas d'indentation


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 01-09-2004 à 11:35:40    

JagStang a écrit :

c'est ce qui arrive lorsqu'on code comme un goret.


 
c'est vrai que ce qu'il a fait n'est pas très académique... mais t'y va peut etre un peu fort Jag ;)
 
sinon pour répondre, je propose un truc du genre

Code :
  1. <?
  2. if ($obj->Test==0)
  3.    {
  4.    $src="http://www.tolo-serv.net/".$obj->Code.".gif";
  5.    }
  6. else
  7.    {
  8.    $src="http://www.tolo-serv.net/smileys".$obj->Code.".gif";
  9.    }
  10. ?>
  11. après du html de base:
  12. <td align='center' valign='middle' bgcolor='#DDEEEE'> ...etc...
  13. avec <img src=<? echo $src; ?> border='0'> ...etc...


 
je pense que ça doit faire ce qu'il veut...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 01-09-2004 à 13:28:06    

c'est tout à fait ce que je voulais dire. perso, j'enlève même les {} inutiles et c'est parfait.  
 
désolé pour mon ton un peu direct


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 01-09-2004 à 13:47:57    

j'avais compris, que c'était ce que tu voulais dire avec "code redondant", j'avais déjà fait la remarque 2 posts plus tot... :D
 
ben pour les "{}" c'est l'habitude,je les fous dès que je met un "if" pour etre sur de pas les oublier, mais c'est vrai que si ya qu'une ligne, he ben il servent à rien...
 
Habitude quand tu nous tiens... ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 01-09-2004 à 13:56:18    

Xav_ a écrit :

j'avais compris, que c'était ce que tu voulais dire avec "code redondant", j'avais déjà fait la remarque 2 posts plus tot... :D
 
ben pour les "{}" c'est l'habitude,je les fous dès que je met un "if" pour etre sur de pas les oublier, mais c'est vrai que si ya qu'une ligne, he ben il servent à rien...
 
Habitude quand tu nous tiens... ;)

Garde ton habitude ! Moi j'ai pris l'habitude inverse (supprimer les accolades lorsque c'est possible) et ça me coûte parfois des petits bugs, et surtout de l'incompréhension de la part des débutants. De plus sans bonne indentation c'est incompréhensible (là, ça peut aussi être un +).
 
Par contre, j'aime bien la notation courte (?:).
 
Edit : désactivation des smileys (cf ligne au dessus). :D


Message édité par kalex le 01-09-2004 à 13:59:27
Reply

Marsh Posté le 01-09-2004 à 22:04:55    

Il faut prefere les accolades tout le temps. Pourquoi ca ?
Car 1 : ca facilite la comprehension du code (bon ok, faut indenter :D).
Car 2 : si vous voulez debuger, vous aller moins vous embeter si l'accolade est deja la, il ne reste plus qu'a ajouter sa ligne de debug favorite.
Alors que s'il n'y a pas deja d'accolades, alors il faut ajouter les accolades, re indenter le code puis ajouter la ligne de debug...
 
Sinon concernant l'operateur ternaire, bien que ce dernier soit pratique, il est plus lent que l'equivalent if else. Donc il ne faut pas en abuser.

Reply

Marsh Posté le 01-09-2004 à 22:04:55   

Reply

Marsh Posté le 01-09-2004 à 22:22:45    

> ...il est plus lent que l'equivalent if else
J'ai jamais réalisé ça. C'est sensible comme différence ?

Reply

Marsh Posté le 01-09-2004 à 23:41:44    

Merci,  
Je vais voir ça...
C'est pas que je "code comme un goret", c'est surtout que le php, c'est pas trop mon langage de prédilection...


Message édité par Tolor le 01-09-2004 à 23:42:31

---------------
Je ne crois qu'aux statistiques que j'ai moi-même falsifiées
Reply

Marsh Posté le 01-09-2004 à 23:48:29    

Cerel a écrit :

Sinon concernant l'operateur ternaire, bien que ce dernier soit pratique, il est plus lent que l'equivalent if else. Donc il ne faut pas en abuser.


Une légende urbaine est lancée... :whistle:

Reply

Marsh Posté le 02-09-2004 à 09:27:44    

je crois en effet que l'opérateur ternaire ?: est moins rapide. mais, on parle de PHP, et de langage interprété là. donc pas de soucis hein...
 
sinon, l'utilisation des {}, perso je réfléchis avant de coder, ce qui m'évite d'enlever/mettre des accolades pour ajouter un ligne


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 02-09-2004 à 09:34:13    

pains-aux-raisins a écrit :

Une légende urbaine est lancée... :whistle:

non ca a été prouvé [:spamafote]

Reply

Marsh Posté le 02-09-2004 à 09:55:39    

Reply

Sujets relatifs:

Leave a Replay

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