Un article de Mmmm!!!

Liste chainée en PHP et mySQL


Une liste chainee est un concept bien connu en informatique . Il permet d'avoir une liste de donnee de taille variable ou l'ordre des elements peut etre modifié facilement sans decale l'ensemble .
Pour plus d'info sur les liste
Si vous voulez avoir une idée à propos d'une liste chainée , imaginez une chaine ou les maillons sont des strutures de données. Le grande difference entre une liste chainee et un tableau est que le placement des elements est beaucoup flexible ainsi que la taille de la liste est variable par rapport a celle du tableau. C'est tres partique si l'on souhaite par exemple changer la place d'un element, le mettre de la 10 place a la 3 eme place. Enfin bref, je ne veux pas vous faire l'apologie de la liste chainee , mais je me suis pose le probleme comment la gerer avec une base de donnée.

La base de donnée.


On peut honnetement imaginer une table tel un tableau de hashage avec comme clé l'index primaire. Cependant un tableau comme je vous le disais precedement est moins souple qu'une liste chainée, nous allons voir ici comme implementer une liste chainée via une base de donnée avec du Php.

Enchainons les enregistrements d'un base


Une liste chainée et une liste ou les elements sont reliés les uns les autres. Nous allons nous appuyer pour les chainée sur l'index primaire de l'enregistrement que nous appelerons idx. Voici la table pour chainée ( meme doublement chainée ) une suite de caractères.
CREATE TABLE listchainee (
 idx int default '0' not null auto_increment primary key,
 idxnext int default '-1' not null ,
 idxprevious int default '-1' not null ,
 name char(100) not null,
datemodif DATETIME,
datecreation DATETIME
);
Nous devons imaginer la valeur pour designer la fin de la liste , la valeur -1 semble coherente. L'ajout d'un element. Nous devons tout d'abord tester s'il y a un element ou plus dans la table. S'il n'y en a pas, nous devons l'inserer avec comme idxnext , et idxprevious egal a -1. Sinon nous devons trouver le nieme element est l'inserer alors: pour ce faire nous devons casser le lien entre les elements ont l'on veux inserer l'element.
code source , cependant il faudra vous insperer uniquement car classe elmchaine.php est generée a partir de pgosd
Bon, bien content d'avoir fait mumuze avec le p'tit langage php et une base de donnée, je suis tel un artiste admirant son oeuvre qui ne sert strictement a rien juste a exprimer d'un maniere formelle du concept d'ensemble a 2 dimensions.
C'est une vision personnelle, mais une autre perspective me passe par l'esprit, me voila avec une programme, agregat de caracteres sans grande signification pour mes congénères , par contre l'ordinateur le comprends , et c'est a ce moment la qu'un doute terrible m'envahit l'esprit :
Serais je plus habile a parler a une machine qu'a une personne humaine...
Serais ce la raison de mon celibat...
Finissons cette degresion, venons en a notre sujet. J'entends deja siffler le train , avec la masse enorme de détracteur qui me reproche l'inutilite de cette liste chaine avec le couple PHP/mySql ( ah une couple plutot heureux, en ces temps de saint valentin cela fait plaisir ... ) étant donnée la structure de la base de donnée.
Eh bien, j'entends vos reproche tel un defi, tel une quete vers la maitrise de mon sujet, j'y meme jusqu'a dire telle une croisade dans des terres vierges pour explorer et mieux comprendre l'amour regniant entre PHP et mySQL. D'autres me diront : Hum il y a rien a decouvrir sur l'amour entre php et mysql, charles tu te trompe de voie si tu cherche a connaitre les mysteres des sentiments amoureux.
Breve de sarcasme, passons a la realisation d'un exemple concret qui mettra tout le monde d'accord. Realisons un mini editeur html .
Pour tout commentaire, suggestion, et autre recette de cuisine voir bon resto , ecrivez moi.


L'equipe de Mmmm!!! copyright 2001