Explications sur une fonction php

Explications sur une fonction php - PHP - Programmation

Marsh Posté le 10-06-2010 à 17:10:48    

Bonjour,
 
Pourriez vous m'aider à décrypter cette fonction en expliquant les lignes php (pour les <br> et les <a href> je connais mais pour les $ret=""; c'est du chinois)  :jap:  
 

Code :
  1. function _indique() {
  2.     global $f;
  3.     $ret="";
  4.     if($f->indique) {
  5.     $t=explode(",",$f->indique);
  6.     for($i=0;$i<count($t);$i++) {
  7.     if($t[$i]) $ret .= "<br><br ><img src=/photos/$t[$i].jpg ><a href=/info.html?_ref=".$t[$i].">".get("exemple","detail",$t[$i])."</a>";
  8.     }
  9.     return "<div style='margin: 0 20px;'>Information :</div>".substr($ret,4) ;
  10.     }
  11.     }


Merci

Reply

Marsh Posté le 10-06-2010 à 17:10:48   

Reply

Marsh Posté le 10-06-2010 à 17:17:54    

global $f infique que la fonction va utiliser une variable $f dont la portée n'était pas globale (et va le devenir).
 cela évite de passer en paramètre la variable $f
 
$ret = "" crée une chaine de caractères vide ($ret pour 'retour' je présume)
 
Si $f->indique (attribut de $f) existe
$t = explode => crée un tableau php (liste de valeurs) à partir d'un attribut de $f
 
et pour tout élément du tableau, partant de la position 0 à count == nb d'élements, on ajoute dans $ret un code HTML.
 
Mais si $f->indique n'existe pas, on retourne juste une div.
 
EDIT : soit dit en passant, il doit manquer un bout de la fonction, notamment return $ret je pense ...

Message cité 1 fois
Message édité par NewsletTux le 10-06-2010 à 17:18:46

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 10-06-2010 à 17:22:16    

outre le fait que c'est codé crado (genre l'utilisation d'une variable déclarée globale ailleurs), en gros :
- indique que $f est une var globale
- vérifie que l'attribut "indique" de $f existe et pas vide
- split le contenu de l'attribut dans un tableau en utilisant la virgule comme séparateur
- boucle qui parcourt le tableau pour mettre dans $ret du html, un lien sur une image avec un appel à la fonction get() qui doit renvoyer probablement des infos détaillées sur l'image en question
- retourne du html : une div contenant le html généré dans $ret, à partir du 4ième octet de cette variable jusqu'à la fin (pourquoi, a priori pour pas afficher le 1er <br> des fois que le mec aurait simplement fait un if sur le 1er tour de boucle :/)
 
Bilan des courses, cette fonction affiche une liste d'images avec leurs détails dans un html très douteux (utilisation de <br><br> à la place d'un <ul> et de <li> )...
 
Bref, du code à pas reprendre.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 10-06-2010 à 17:23:22    

NewsletTux a écrit :

global $f infique que la fonction va utiliser une variable $f dont la portée n'était pas globale (et va le devenir).
 cela évite de passer en paramètre la variable $f
 
$ret = "" crée une chaine de caractères vide ($ret pour 'retour' je présume)
 
Si $f->indique (attribut de $f) existe
$t = explode => crée un tableau php (liste de valeurs) à partir d'un attribut de $f
 
et pour tout élément du tableau, partant de la position 0 à count == nb d'élements, on ajoute dans $ret un code HTML.
 
Mais si $f->indique n'existe pas, on retourne juste une div.
 
EDIT : soit dit en passant, il doit manquer un bout de la fonction, notamment return $ret je pense ...


 
ben si, y'a un return, à la fin de sa fonction et le $ret est à l'intérieure de la chaîne retournée :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 10-06-2010 à 17:27:11    

Merci (à priori il manque rien dans la fonction)...
Que veut dire le .substr($ret,4)

Reply

Marsh Posté le 10-06-2010 à 17:27:49    

dexenium a écrit :

Merci (à priori il manque rien dans la fonction)...
Que veut dire le .substr($ret,4)


 
 
http://php.net/manual/fr/function.substr.php

Reply

Marsh Posté le 10-06-2010 à 17:32:54    

Citation :

Bilan des courses, cette fonction affiche une liste d'images avec leurs détails dans un html très douteux (utilisation de <br><br> à la place d'un <ul> et de <li> )...
 
Bref, du code à pas reprendre.


 
Arf exactement ce que je veux pas faire (les <br> c'est un peu caca  :lol: ) sinon je connais plutot bien les css mais php  :??:  
 
Bon comment modifier le truc pour avoir mon image et les détails en dessous car depuis hier je trifouille le code et à chaque fois tout plante :D  
 
Merci pour votre aide

Reply

Marsh Posté le 10-06-2010 à 17:43:10    

ah exact, rufo.
bin tu fais un <ul> et à chaque image trouvée, un <li> contenant un <span><img...></span> et ton texte</li>
puis un </ul> à la fin de toutes tes images.
Et en CSS, tu mets un display:block à ton li span, et tu mets un float et une largeur à ton li.


Message édité par NewsletTux le 10-06-2010 à 17:44:20

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 10-06-2010 à 18:15:01    

Bon grace à vous j'ai mieux compris et j'ai réussi ma mise en page.
Par contre pour que tout s'affiche correctement j'ai du mettre à la fin  
 

Code :
  1. .substr($ret,0) ;


 
Est-ce correct, propre et sécure ? Puis je faire autrement ?

Reply

Marsh Posté le 11-06-2010 à 09:34:58    

dexenium a écrit :

Merci (à priori il manque rien dans la fonction)...
Que veut dire le .substr($ret,4)


 
Je te l'ai dis dans mon msg précédent : c'est pour ne pas afficher le 1er <br> de la chaîne $ret.
 
En mettant substr($ret,0); tu vas simplement afficher le 1er <br> en +, donc être $ret direct ou substr($ret,0);, ça revient au même sauf que la 2ième solution est complètement inutile :/


Message édité par rufo le 11-06-2010 à 09:36:10

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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