tbergeron->myHeadInsideOut(); » php http://tbergeron.com Tue, 20 Jul 2010 06:19:03 +0000 en hourly 1 http://wordpress.org/?v=3.0.2 Traitement du dernier élément d’un foreach [PHP] http://tbergeron.com/technologie/traitement-du-dernier-element-dun-foreach-php/ http://tbergeron.com/technologie/traitement-du-dernier-element-dun-foreach-php/#comments Wed, 09 Sep 2009 15:42:06 +0000 tom http://tbergeron.com/?p=1171 Finalement! J’ai découvert une façon de faire un traitement différent sur le dernier élément d’un foreach!

Si vous vous demandez l’utilité et bien, si vous programmez bien-sûre: ça vous a surement déjà arrivé de devoir faire un menu du genre:
Accueil | Dossiers | À Propos

Dans un foreach normal sa donnerais un « Accueil | Dossiers | À Propos | » (un | de trop). Et comme vous le savez sûrement c’est bien difficile en PHP de détecter si l’élément sélectionné d’un foreach est le dernier.

Et bien voici la solution!

$numeros = array('1', '2', '3');
$dernier = sizeof($numeros) - 1;
foreach ($numeros as $key => $numero) {
	//Je vérifie si le clé de l'element courant est
	//la même que la clé du dernier élément.
	if ($key ==$dernier) {
		echo "le dernier!";
	} else {
		echo "les autres.";
	}
}

Des heures de grattage de tête… en moins!

]]>
http://tbergeron.com/technologie/traitement-du-dernier-element-dun-foreach-php/feed/ 2
Supporter des structure de données parents/enfants http://tbergeron.com/technologie/supporter-des-structure-de-donnees-parentsenfants/ http://tbergeron.com/technologie/supporter-des-structure-de-donnees-parentsenfants/#comments Fri, 01 May 2009 17:21:12 +0000 tom http://tbergeron.com/?p=774 Aujourd’hui les enfants je vais vous montrer comment généré une liste avec des enfants à l’infinie.

Dans la base de donnée, nous avons ce style de donnée:

ID	PARENT_ID	TEXT
1	0		test
2	1		sous-test
3	0		nouveau test
4	2		sous-sous-test
5	1		sous-test 2

Comme vous pouvez voir, la structure est très simple. Nous avons nos entrées avec leurs titres, et dans la colonne PARENT_ID nous avons les références qui pointent sur leurs parents.

Un fois généré la structure HTML ressemblera à ceci:

  • test
    • sous-test
      • sous-sous-test
    • sous-test 2
  • nouveau test

Alors, allons-y! Vous remarquerez évidement que comme à l’habitude j’utilise symfony comme framework.

NB: Il est bien facile à voir que j’utilise Propel pour rejoindre et manipuler ma base de donnée. Si vous utilisez tout simplement des requêtes MySQL hardcodé vous pouvez traduire mon code à votre aise!

$c = new Criteria();
 
//Je vais chercher tout les donnée que ma db contient:
$todo = TodoPeer::doSelect($c);
 
//Ensuite je créer des arrays qui contiendront l'arborescence de mes données
$refs = array(); $list = array();
//Je fais passé les résultats de ma requête dans un foreach qui compilera mon array
foreach ($todo as $data) {
	//J'entre les premières données dans l'array
	$thisref = "$refs[ $data->getId() ];
	$thisref['parent_id'] = $data->getParentId();
	$thisref['name'] = $data->getTitle();
	//Je vérifie si l'entrée a des enfants.
	if ($data->getParentId() == 0) {
		//Si non j'entre l'entrée au premier niveau.
		$list[ $data->getId() ] = "$thisref;
	} else {
		//Si oui je crée l'enfant dans un nouveau niveau.
		$refs[ $data->getParentId() ]['children'][ $data->getId() ] = "$thisref;
	}
}

Vous remarquerez que le code utilisé est très court et rapide. Cela empêche l’utilisation de milliers de requêtes!

Et maintenant pour afficher correctement l’arborescence vous aurez besoin de cette fonction.

function generate_tree($arr) {
	//Ouverture du premier ul.
	$html = "<ul>";
	//Boucle récursive qui créera les prochains ul.
	foreach ($arr as $v) {
		//Ajout d'un entré au même niveau.
		$html .= "<li>".$v['name']."</li>";
		//Si un enfant existe, on rappel la même fonction récursivement
		if (array_key_exists('children', $v)) {
			$html .= "".toUL($v['children'])."";
		}
	}
	//On ferme le ul initial!
	$html .= "</ul>";
	//Et on renvoie le contenu
	return $html;
}

C’est ce qui conclut ce léger tutorial qui avait pour but de vous rendre la tâche facile avec ces structures de données qui sont habituellement bien difficile a manipuler.

]]>
http://tbergeron.com/technologie/supporter-des-structure-de-donnees-parentsenfants/feed/ 0
Update! http://tbergeron.com/blog/update/ http://tbergeron.com/blog/update/#comments Sun, 05 Apr 2009 14:28:59 +0000 tom http://tbergeron.com/?p=611 Voici ce qu’il se passe dans ma vie c’est temps-ci:

  1. Utilisation massive du framework PHP Symfony.
  2. Découverte de GIT (version management), ça torche svn. solide!
  3. Création d’un système de blog que j’avance très très rapidement fait avec symfony, et publié sur github.

Voici quelques screenshots:

picture-1 picture-3 picture-4 picture-5 a

En deux jour, j’ai beaucoup avancer, vous pouvez voir le code sur mon repo github. Je suis entrain de terminer la gestion des articles et ensuite je l’utiliserai pour un techblog perso à l’adresse http://pousli.net/blog

Mon but n’est pas de réinventé la roue, mais bien de créer un système versatile, et bien reprogrammable. Je me fou de la gestion des plugins car tout sera programmé quand j’en aurai envie et dans l’ordre que je veux. Une semaine ce sera un système de commentaire, l’autre ce sera un système de gestion de medias, etc. Un beau petit challenge qui est entre autre un bon passe temps.

Apart çà, et bien ça va toujours bien avec ma femme, au bureau aussi et pas mal partout héhé. La vie quand c’est bien balancé et organisé ça rock en modit. Moi qui croyait que de vivre tout croche c’était cool… c’est encore plus cool de savoir qu’ont est bien entouré et que je serai encore vivant demain matin… Héhé. Tsé c’est le fun faire le hors la loi, mais tsé les lois ça peut-être été inventé pour justement… vivre? ;)

Keep on rocking in a free world!

]]>
http://tbergeron.com/blog/update/feed/ 0
Dernieres , decouvertes… http://tbergeron.com/blog/dernieres-decouvertes/ http://tbergeron.com/blog/dernieres-decouvertes/#comments Fri, 16 Jan 2009 00:36:41 +0000 tom http://tbergeron.com/2009/01/dernieres-decouvertes/ Hey bande de pokailles!

Voici mes derniers « kicks » et aquisitions:

  1. WoW Battlegrounds, c’est trop nice c’est comme unreal tournement mais avec ton toon de WoW!!!
  2. Nouveau Disquedur 2.5 320gb 16mb 7200, enfin de l’espace sur mon laptop!
  3. CodeIgniter (framework PHP), recommandation d’hubert (lepetitweb) qui m’a l’air vraiment fort!!! Jcommence a developper un peu avec, mais a date je crois que j’adopterai!

C’est tout pour le moment, mon toon est rendu lvl 30!!!

]]>
http://tbergeron.com/blog/dernieres-decouvertes/feed/ 0