Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zér0 > Les tutoriels > Non-Officiels > Site Web > PHP > Base de données > Lecture des commentaires

Vos commentaires sur :
La représentation intervallaire

Retour au tutoriel

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Pseudo Commentaire
Page : 1 
Hors ligne RedoX # Posté le 18/07/2007 13:58:07
Never Trust, User Input !
Avatar
Groupe : Membres
J'ai fais que le parcourir mais très beau tuto ;)

Peut-être une explication sur comment déplacer une feuille et ou un noeud et ses enfants aurait pu être bien pour compléter. Là tu détailles/éclaires surtout le tuto de Developpez.com ( ce qui en soi n'est pas plus mal, permettant aux moins expérimentés de mieux comprendre :p )

Allez :) une bonne Note pour ton bon travail :) ( et surtout pour tes beaux schémas :p )

Le philosophe cherche des solutions aux problèmes et ne trouve que des problèmes sans solutions.
Règles du Forum C.. Valables partout quand même :)
Image utilisateur
Annexes Cours Php - Erreurs Sql - Doc Php - Doc Mysql - Temps Sql - Redirection Htaccess

 
Hors ligne Talus # Posté le 18/07/2007 14:25:00
タルス
Avatar
Groupe : Membres
Yop

Merci ^^

Pour déplacer une feuille, j'y ai pensé, mais en fait, j'ai eu la flemme, surtout que le tuto je le trouvais assez long à la fin, et qu'il suffit également de voir les astuces pour y ariver. Mais je tacherais de les mettre quand j'aurais le temps (surtout pour monter/descendre une feuille... :p) ^^

Sinon pour développez.com, j'avoue que je me suis basé dessus, mais disons que j'ai voulu montrer ma manière de voir les choses (car j'ai appris la RI grpace à Mr Brouard ^^)
 
Hors ligne baptiste.k # Posté le 18/07/2007 19:05:12
Avatar
Groupe : Membres
Tuto très intéressant, je n'avais jamais entendu parler de ça

20
Hors ligne Nelty # Posté le 18/07/2007 23:04:45
Persévérer c'est avancer !
Avatar
Groupe : Membres
Merde t'a réussi :p
J'irai peut-être lire ton tuto...dès que j'aurais du temps ^^



Python



À l'ouïe de ce mot, vous pouvez penser à deux choses. La première, c'est le serpent. La deuxième, c'est le langage de programmation. Étant donné que nous sommes sur un site basé autour de ce dernier domaine, je vais plutôt m'intéresser au langage. :p

Concrètement, Python c'est quoi ?



Python est comme je l'ai indiqué plus haut un langage de programmation interprété.
Il est placé sous une licence libre et est un langage dit «multi-plateforme» (il fonctionne sous Windows, Mac et Linux).
Comme beaucoup, il est à la base exploitable en console, mais l'utilisation de GUI est envisageable pour faire une application graphique.

Atouts



Un des gros avantages de Python est qu'il est très simple à l'écriture et vous permet d'adopter de bonnes méthodes de programmation, notamment au niveau de la lisibilité du code.
En effet, ici, plus d'accolades ou autres pour indiquer un bloc d'instruction (if, else, while, ...), tout se fait par indentation.
Ainsi, un tel code en PHP :
Code : PHP
1
2
3
4
5
6
<?php
for($i=1;$i<=3;$i++)
{
echo $i*2.' ';
}
?>

Donnera ceci en Python :
Code : Python
1
2
3
4
for i in xrange(1,4):
  print 2*i
# ou
[i*2 for i in [1,2,3]]


Les deux afficheront (à peu près) :
Citation : Résultat :

2,4,6


Remarquez la simplification du code pour effectuer une action très simple.

Il a aussi l'avantage d'intégrer de nombreuses bibliothèques pour effectuer une multitude d'actions très diverses, dans tous les domaines. math pour les opérations mathématiques par exemple.

Pour finir, il est aussi exploitable sur le Web. Pour l'utiliser, il vous faudra un hébergeur l'acceptant et peut-être inclure certaines bibliothèques selon vos besoins (je pense à CGI pour les traitements de formulaire). À titre d'information, alwaysdata accepte le Python et est gratuit.

Où apprendre ?



Question évidemment indispensable si vous êtes intéressés... La première, la plus évidente, c'est la documentation officielle de Python, malheureusement uniquement disponible en anglais.
Mais il existe un cours très réputé rédigé par un certain Gérard Swinnen qui est disponible en français.
S'il ne vous plaît pas, Google (ou autre moteur de recherche) est votre ami !

Où se faire aider ?



Peut-être une question qui ne vous viendra pas à l'esprit immédiatement, mais quand vous aurez un problème que vous ne saurez résoudre... Ne vous inquiétez pas, d'autres gens sont passés avant vous et sont prêts à vous aider !
Dans un premier temps, je vous conseille de passer sur IRC, channel #python, serveur irc.epiknet.org . Vous y trouverez un petit groupe de gens qui pourront peut-être vous aider.
Après, si vous n'avez pas résolu votre problème, il reste le forum « Autres langages » où des Pythoneurs viennent de temps en temps.
Enfin, si votre problème est lié à l'utilisation d'une bibliothèque, n'oubliez pas d'aller consulter sa documentation (très souvent en anglais).
 
Hors ligne Catalyse # Posté le 19/07/2007 15:59:50
Groupe : Membres
Super tuto !!

Mais je ne met que 18 car il manque une explication sur comment déplacer une feuille et ou un noeud et ses enfants et c'est ce qui me manque :-°

P.S tu t'es amélioré tout d'un coup.... :lol:

Image utilisateur

Quand vous avez la solution de votre problème, n'oubliez pas de marquer le sujet comme résolu.
 
Hors ligne Shepard # Posté le 19/07/2007 17:38:07
SQL Beginner ...
Avatar
Groupe : Membres
J'aurais pas fait mieux !

19/20 parce que les screenshots sont pas cadrés au pixel près ( sous linux c'est automatique, sous windows il faut télécharger un petit soft, je te conseille PrintScreen de Gadwin Systems, très simple et bien foutu :) )

Tu aurais quand même du expliquer pourquoi on ne met pas les bornes en UNSIGNED ( pour le déplacement de sous-arbres ) ^^ Mais excellent tuto ya pas à dire :)

Sorry si ma signature a gêné, j'avais pas vu le sujet sur DG ... :s
 
Hors ligne Talus # Posté le 19/07/2007 17:43:54
タルス
Avatar
Groupe : Membres
Hello ^^

Merci du compliment ^^

En effet, pour déplacer les arbres, soit on a besoin de les foutre en zone "temporaire". Soit un nombre très très grand (j'aime pas xD), soit foutre les bornes en négatif :)

Mais pour les clés, pour mieux illustrer la contrainte d'unicité, Haku m' fait remarqué qu'il faudrait mieux que je les foutes en uniques. Oui, non ? :p

Et promis, je ferais le déplacement dès que je pourrais (et que j'aurais pas la flemme).

Pour les captures d'écran (zut, le piti critère que j'ai négligé ^^ ), j'ai trouvé un truc intégré à Vsta (pas taper), pour les tablet PC, la capture d'une portion d'écran... Et ce n'est que vers la fin ou j'ai découvert qu'on pouvait capturer aussi "Que" une fenetre de son choix xD
 
Hors ligne Shepard # Posté le 19/07/2007 18:57:43
SQL Beginner ...
Avatar
Groupe : Membres
UNIQUE sur les bornes => pas trop utile vu que s'il y a des trous ou n'importe quoi, ça te fiche tout en l'air ...

De plus UNIQUE ne pourra agir que sur une colonne, donc s'il y a le même id dans les deux colonnes, le UNIQUE ne servira à rien non plus ... :s

Lorsqu'on utilise la représentation intervallaire, le mieux à faire est sans doute de mettre un trigger qui vérifie toutes les 100 insertions ( par exemple ) que l'arbre est cohérent, c'est en tous cas la solution que j'ai adoptée :)

Enfin, les vues peuvent être très pratiques pour ajouter le niveau de chaque élément sans le stocker directement, puis les RULE pour faire l'insertion via les vues rendent vraiment la gestion de l'arbre aisée :)

Par contre pour ceux qui sont sous MySQL, c'est mort, c'est le seul SGBDR que je connaisse qui ne gère pas les RULE :D ( même Access le fait, et je ne le porte pas dans mon coeur ... )

Sorry si ma signature a gêné, j'avais pas vu le sujet sur DG ... :s
 
Hors ligne Talus # Posté le 19/07/2007 19:19:25
タルス
Avatar
Groupe : Membres
Donc c'est mieux de faire comme j'ai fait, de simples index (histoire que, pas comme certains, je n'enseine pas des choses fausses... :p ) ? :D
 
Hors ligne Gaga971 # Posté le 19/07/2007 21:03:04
Programmeur indépendant
Avatar
Groupe : Membres
Salut,

C'est un bon tutorial Talus! ;)
Screenchot ne servant pas a rien, et du blabla constructif pour arriver à quelque chose de bien!
Le ptit défaut, la couleur violette du debut que j'aime pas trop!
Allez 19! :D

PS: Je trouve que les tutoriels Base de donnée de la zone Php servent tous à quelque chose, en esperant que cette partie reste comme cela! Bravo à tous!


 
Hors ligne Talus # Posté le 19/07/2007 21:25:28
タルス
Avatar
Groupe : Membres
Pour al couleur, à la base, c'etait du Marron, mais me suis dit, pour les amateurs de rose, pour rendre le tuto encore plus parfait... ^^

Enfin, merci, ca encourage (surtout à faire un truc chiant qui est le déplacement xD) ^^
 
Hors ligne Draeli # Posté le 04/08/2007 13:31:29
Groupe : Membres
Intéressant quoi que reprenant le tutoriel de www.developpez.com. Des explications plus approfondies seraient appréciables, notemment sur la partie dite 'lourde' de la fin :)

Jedi PHP (Certifié Zend PHP) - Jedi MySQL (Certifié MySQL Core) - Padawan MySQL 5
Le côté obscur de la force bientôt rejoins ai-je ! :-°
 
Hors ligne Routeur # Posté le 18/10/2007 11:31:05
Groupe : Membres
Comment faire pour représenter l'arbre lorsque les chemins se croisent?
Je m'explique: lorsqu'on veut qu'un même sous-ensemble apparaissent sur des niveaux différents.
Hors ligne Talus # Posté le 18/10/2007 13:46:20
タルス
Avatar
Groupe : Membres
Salut,

Que veux tu dire par là ?
 
Hors ligne Routeur # Posté le 18/10/2007 14:17:52
Groupe : Membres
J'ai une nomenclature qui est contituée d'articles et de sous-ensembles qui sont contitués eux-mêmes d'articles.
Certains sous-ensembles identiques apparaissent plusieurs fois dans ma nomenclature.
Comment je peux garantir que ces sous-ensembles restent strictement identiques dans mon arborescence?
Hors ligne Talus # Posté le 18/10/2007 15:03:48
タルス
Avatar
Groupe : Membres
Mmh, je crois voir ce que tu veux dire... Faudrait que tu essaye de mettre une réference sur le sous ensemble / article identique que tu désires (par exemple, au niveau le plus haut), pour ensuite, à chaque fois ou le sous ensemble apparait, tu puisse mettre une référence à l'autre. Par exemple, par la création d'une colonne qui renseigne, si il existe, le sous ensemble censé être duppliqué. Si, par exemple, cette colonne vaut 0, alors tu vérifie les autres infos...

Enfin, je crois, si j'ai bien ce que j'ai compris. Il peut y avoir un autre moyen, mais là totu de suite maintenant, je vois celui-là.
 
Hors ligne Routeur # Posté le 18/10/2007 15:14:28
Groupe : Membres
Merci pour ta réponse,
Tu as bien compris mon problème et je vais essayer de faire quelques essais pour voir si ce n'est pas trop compliqué à implémenter par la suite.
Hors ligne lunariel # Posté le 08/11/2007 09:03:17
Avatar
Groupe : Membres
Bonjour,
deja merci c'est un super tutos il ma etait bien utile.

voila seulement j'ai eux un petit probleme avec le bout de code pour ajouter un nouvel element

Code : SQL - Afficher / masquer les numéros de ligne
  1. UPDATE tuto_ri
  2.         SET forum_droite = forum_droite + 2
  3.         WHERE forum_droite >= 22;
  4.        
  5. UPDATE tuto_ri
  6.         SET forum_gauche = forum_gauche + 2
  7.         WHERE forum_gauche >= 22;
  8.  
  9. INSERT INTO tuto_ri (forum_level, forum_gauche, forum_droite, forum_name)
  10.         VALUES
  11.                 (5, 22, 23, '1.1.1.1.3.1');


vue que je me sert des données de la catégorie parent j'ai du faire comme ceci
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. msql_query('UPDATE categories SET cat_droite = cat_droite + 2
  3.             WHERE cat_droite >= "'.$cat_result['cat_gauche'].'"');
  4. msql_query('UPDATE categories SET cat_gauche = cat_gauche + 2
  5.             WHERE cat_gauche > "'.$cat_result['cat_gauche'].'"');
  6. ?>

j'ai donc du modifier le >= de la deuxieme requete sinon ca marchais pas
sinon bravo j'ai preferé ton tutos a celui de developez.com plus simple a comprendre avec tous c'est tp
Hors ligne Talus # Posté le 08/11/2007 14:06:49
タルス
Avatar
Groupe : Membres
Salut,

En effet, c'est une erreur (très) bête de ma part. En effet, il vaut mieux mettre > que >= (tout comme pour la suppression, d'ailleurs...), car sinon, la borne gauche de l'élément parent qui va contenir le nouvel arbre (ou le nouvel élément, comme dans ton cas par exemple) sera mis à jour, ce qui n'aurait "presque" servi à rien (à part si tu veux déplacer un élément =D).

Ce sera corrigé dans la prochaine version (avec les déplacements, d'ailleurs ?)
 
Hors ligne Taiotoshi # Posté le 13/11/2007 13:56:25
Hey mon ami !
Avatar
Groupe : Membres
Citation : Talus
Notez que, tout au long du tutoriel, pour la plupart des exemples, j'utiliserais l'exemple de Forums

Je commence la lecture de ton tuto et bing, une faute d'orthographe :p
Allez, je lis la suite et éditerai mon message en fonction ;)

EDIT: bon en fait, j'ai lu la première partie et je dois y aller.
Question quand même : pourquoi avoir des bornes de chaque côté et ne pas juste utiliser le parent_id ? En fait, je ne comprends pas trop l'utilité des bornes Droite et Gauche. Faut aller jusqu'au bout du toto ? :euh:

En tout cas, ton style est plaisant mais attention aux blagues qui, bien que sympas (quoi, à l'hôpital Velpo ? :p ), peuvent parfois brouiller ton message, le perturber... Ton sujet est quand même pas évident, alors si des breaks sont les bienvenus, trop rapprochés ils peuvent faire perdre le fil du raisonnement...
En tout cas merci de ton tuto... :)

Projet actuel :
Site Familial avec une belle généalogie dynamique, présentable sur une page internet et facilement adaptable à tout type de situation, et qui sert le café, et qui fait la vaisselle...
Commandement # 32 :
Pour assurer aux dépanneurs, une lecture sans heurt,
Ton code, tu indenteras; et leur bonheur, tu feras. :-°
La suite
 
Hors ligne Talus # Posté le 13/11/2007 19:25:11
タルス
Avatar
Groupe : Membres
Désolé pour la fôte, elle sera corrigée dans la prochaine version du tuto =)

Citation : Taiotoshi
(quoi, à l'hôpital Velpo ? :p )


Ah, voilà un connaisseur =)

Ehbien, pour les bornes gauche / bornes droites, tu peux également ajouter un "parent_id" ; mais, le problème, c'est que si tu fais toute une architecture de sous-sous-(...)-elements, tu fais coment à coup de parent_id ? Tu peux rien faire, car à moins de faire une requête bouclée, ou alors une drôle de jointure, ou quelque chose du genre, tu n'arriveras pas à grand chose :/

Ce qui est extremment consommateur de ressources... ;)

Et, surtout, tu as plus de possibilité, que l'on exploie dans la seconde partie ;)
 
Hors ligne shi # Posté le 02/12/2007 06:29:05
Groupe : Membres
Très bon sujet

J'ajouterais que les requêtes multiples permettant d'ajouter ou supprimer les branches devraient être effectuées en mode transaction ou pour ceux qui le peuvent utiliser une procédure stockée:

Il y a un très bon article sur cette technique sur le site de mysql qui commence par expliquer la méthode du parent direct, donnant des examples de requêtes et ensuite enchaîne sur la méthode intervallaire, nested model
L'article est en anglais mais explique très bien les avantages de cette méthode et offre même un example sur une catégorie liée à une table de produits

http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Hors ligne duxy # Posté le 12/02/2008 17:17:11
Groupe : Membres
C'est exactement ce que je cherchais. Très bon tuto dans l'ensemble

Je te met que 19 car j'avais pas assimilé dès le début le schéma qui me semble mal fait enfin c'est ma vision. L'histoire des bordes gauche ou droite était assez flou au début.
Hors ligne Kyle Katarn # Posté le 16/02/2008 19:16:40
Star Wars fan
Avatar
Groupe : Membres

20/20



Rien à redire, humour, beaucoup d'illustrations, c'est parfait.
 
Hors ligne katagoto # Posté le 13/06/2008 17:53:20
Hard than a rock
Avatar
Groupe : Membres
Tu m'as évité une grosse migraine

20/20

Très bien expliqué, bon screen, ça les mértie largement ^^

Vive PHP, PostGreSQL, la POO, PDO, AC/DC et le C++ :p
 
Hors ligne doco_xplo # Posté le 16/06/2008 16:38:09
Pas le Xplosif de la team sdz
Avatar
Groupe : Membres
Je mets un bon 19 :)

J'ai tout de même une question : Comment faire pour lister les forums parents donc les catégories dans mon exemple, puis juste après tout les forums compris entre les bornes de ce forum parent ?

Jointure ? Boucle dans une boucle ?

Merci d'éclairer ma lanterne :magicien:

Pourquoi ?????????????
 
Hors ligne Talus # Posté le 16/06/2008 17:36:12
タルス
Avatar
Groupe : Membres
Salut ;

Si je comprends bien, ce que tu veux faire, c'est ce schéma là :

Citation : Schéma
Affichage de l'ancêtre, ..., grand père, père
(Affichage du forum concerné)
Puis affichage du fils, petit-fils, ..., descendant


? Si oui, je pense que deux requêtes et deux boucles séparées feront l'affaire...
 
Hors ligne Catalyse # Posté le 16/06/2008 19:12:01
Groupe : Membres
ou alors, tu peux faire un where "double" c'est a dire : where (parents ou actuel) or (enfnts ou actuel)
par contre niveau ressources c'est quand meme aps top

Image utilisateur

Quand vous avez la solution de votre problème, n'oubliez pas de marquer le sujet comme résolu.
 
Hors ligne Ardouar # Posté le 02/07/2008 15:32:48
Groupe : Membres
Y a conflit entre le code que tu donnes dans la partie Insertion / Suppression d'un sous-arbre (nœud) dans un arbre.

SET forum_droite = forum_droite + 18 et SET forum_droite = forum_droite + 19. Je pige pas vraiment. :/

Secret (cliquez pour afficher)
Code : SQL
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
UPDATE tuto_ri
        SET forum_droite = forum_droite + 18
        WHERE forum_droite >= 40;
 
UPDATE tuto_ri
        SET forum_gauche = forum_gauche + 18
        WHERE forum_gauche >= 40;
 
INSERT INTO tuto_ri (forum_level, forum_gauche, forum_droite, forum_name) 
        VALUES 
                (1, 40, 57, '2.1'),
                (2, 41, 46, '2.1.1'),
                (2, 47, 48, '2.1.2'),
                (2, 49, 50, '2.1.3'),
                (2, 51, 56, '2.1.4'),
                (3, 42, 43, '2.1.1.1'),
                (3, 44, 45, '2.1.1.2'),
                (3, 52, 53, '2.1.4.1'),
                (4, 54, 55, '2.1.4.2');


Image utilisateur


  • Le tort tue, la mort rue et la pisse tache.
  • 111 111 111² = 12 345 678 987 654 321
 

Vous devez être inscrit pour pouvoir poster des messages

Retour au tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 329 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0424s (0.0303s)