PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 12-10-2010 22:26:06

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Niveau SVP

Salut tout le monde.
j'ai un taff de dingue et j'ai envie de vous en faire profiter big_smile

j'ai pas envie de bosser alors, je vous donne mon boulot big_smile:D

je vous explique :


table categorie
id, id_parent, libelle
1        0         shmolldur
2        0         shmollmou
3        2         un truc
4        1         bla bla
5        3         fils de truc
6        0         j'ai bientot fini
7        3         frere de fils de truc


j'ai besoin d'un requête qui me retourne toutes les catégories de 3iemes niveau

a vos clavier !!!
je repasse demain ramasser les copies big_smile



a++

ps : si vous avez le courage de me faire la même pour le niveau 2, chui preneur big_smile:D





























































ha, j'ai oublié, j'ai aussi besoin de dessiner l'arborescence des catégories big_smile:D

c'est tout, c'est promis big_smile:D


Hors ligne

#2 12-10-2010 23:41:52

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Niveau SVP

hum, tu veut dire retourné ceux qui ont un grand parent ?

la je crois que c'est pour MK moi je suis largué la wink)

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#3 13-10-2010 05:56:28

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

koaaaaaaaaaaaaa !!!!!!!!!!!!!!!!!!!!!!!! mad

pas encore de réponse !!!!!!!!!!!!!!!!!!!!!!

on peu pas compter sur vous roll

@moogli->
pas obligatoirement une requête wink
quelques lignes de code peuvent faire l'affaire wink
ou une procédure stockée wink

a++

Hors ligne

#4 13-10-2010 07:35:38

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Niveau SVP

Saluton,
Je ne botte pas en touche, quoique...
Mais à quoi bon réinventez sempiternellement ce que d'autres ont déjà mis en œuvre.
Gestion d'arbres par représentation intervallaire


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 13-10-2010 07:43:13

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

Mk->
le lien que tu m'as donné est déjà a la poubelle roll
pk faire simple qd on peut faire compliqué roll

pourtant, l'algo est simple.
tu lis le père jusqu’à  ce que  le père soit égale a 0 et tu as le niveau.


a++

Hors ligne

#6 13-10-2010 19:26:50

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

Pas une seule copie a corriger ??? hmm
a++

Hors ligne

#7 13-10-2010 20:08:52

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Niveau SVP

heu ben c'est trop dur pour moi hmm

j'arrive déja pas trouver mon motif de regexp smile

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#8 17-10-2010 18:49:27

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 620
Site Web

Re : Niveau SVP

Bonjour,

Tu devrais prendre en compte la suggestion de Maljuna concernant la mise en place d'un système intervallaire. Mais j'avoue que pour du niveau 3 ca peut ne pas être necessaire.
Je pense qu'au niveau logique tu devrais travailler avec les ensembles et faire une soustraction d'ensemble comme suit:

Ensemble 1: Toutes les catégories.
Ensemble 2: Catégories avec id_parent 0
Ensemble 3: Catégories ayant une id < entre l'univers global des catégories et l'ensemble des catégories qui ont pour id parent 0 et l'ensemble des catégories qui ont pour id parent l'ensemble 2.

Résultat = Ensemble 1 - Ensemble2 - Ensemble 3 (Edit: devrait être plus clair comme cela)

Si tu as des difficultés de modélisation d'opérations sur des ensembles en SQL, fait moi signe je te donnerais des liens.

++

Dernière modification par Jc (19-10-2010 19:47:03)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#9 18-10-2010 10:34:01

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

ouaaaaaaaaaaaaa
j'ai mal a la tête yikes

a++

Hors ligne

#10 18-10-2010 16:56:21

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

Voila,
C'est fait, et tout simplement.
l'arbo est dessinée wink


<?php
include("connect.php");
require_once('header_html.php');
define('NL',"\n");
function estParent($idcat) {
    global $connexion;
    $sql="SELECT count(id) as cnt FROM aolv2.categories WHERE id_parent = $idcat";
    $res1=$connexion->query($sql);
    $row1=$res1->fetch(PDO::FETCH_OBJ);
    return $row1->cnt;
}
function affEnfant($idcat) {
    global $connexion;
    global $buffer;
    $sql="SELECT id,libelle FROM aolv2.categories WHERE id_parent = $idcat";
    $res=$connexion->query($sql);
    while( $row=$res->fetch(PDO::FETCH_BOTH)) {
        $ep=estParent($row['id']);
        $buffer.='<ul>'.NL;
        $class=($ep>0) ? ' class="folder"' : '' ;
        $buffer.= '<li><span' .$class . '>'. $row['libelle'] . '</span>'.NL;
        affEnfant($row['id'],$buffer);
        $buffer.='</ul>'.NL;
    }
}
$buffer="";
$sql="SELECT id,libelle FROM aolv2.categories WHERE id_parent = 0 ORDER BY libelle";
$res=$connexion->query($sql);
$buffer='<ul id="browsercat" class="filetree treeview-famfamfam">'.NL;
$buffer .='<li><span class="folder">Arborescence des catégories</span>'.NL;
$buffer .='<ul>'.NL;
while($row=$res->fetch(PDO::FETCH_OBJ)) {
    $buffer .= '<li><span classe="folder">'.$row->libelle.'</span>'.NL;
    affEnfant($row->id,$buffer);
    $buffer .='</li>'.NL;
}
$buffer .='</ul>'.NL;
$buffer .='</li>'.NL;
$buffer .='</ul>'.NL;
echo $buffer;

?>


 


a++

Hors ligne

#11 18-10-2010 21:49:42

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

au fait JC, j'ai pas compris ton explication ????????:/
a++

Hors ligne

#12 19-10-2010 19:36:34

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 620
Site Web

Re : Niveau SVP

Bonjour,

Pas de soucis Pierrot.
Les ensembles en SQL sont définis tels qu'ils le sont en algèbre relationnelle, et sont représentés par les requêtes elles-mêmes et les opérations entre elles par les opérateurs UNION, INTERSECT et EXCEPT. Il faut cependant noter que les opérateurs INTERSECT et EXCEPT ne font pas partie de la norme SQL et par conséquent ils ne sont pas implémentés dans tous les SGBDR.
Dans mon exemple, c'est l'opérateur EXCEPT dont il est question.
Quand EXCEPT n'est pas implémenté dans la base de donnée utilisée ou plus précisément par le moteur de base de données utilisé, des contournements de syntaxe sont possibles comme :

SELECT a,b FROM table1 WHERE NOT EXISTS ( SELECT c,d FROM table2 WHERE a=c AND b=d )

ou encore

SELECT a FROM  Table_1 WHERE a NOT IN (SELECT b FROM Table_2)

Donc résoudre ce genre de problème par l'algèbre relationnelle permet de savoir si une cat donnée est de L3 ou moins sur une simple requête SQL. Pour une implémentation de L=n une gestion  intervallaire sera de rigueur ainsi qu'une utilisation de proc stockée associée.

++

Dernière modification par Jc (19-10-2010 19:41:09)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#13 19-10-2010 19:43:37

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 620
Site Web

Re : Niveau SVP

Ps: C'est la première fois que je peux voir ta façon de développer Pierrot, et je dois avouer que je suis fan wink


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#14 19-10-2010 22:37:08

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

ouaaaaaaaaaaaaa, mon mal de tête empire !!!!:/:mad:

je crois que tu n'as pas bien compris;)
si tu veux, un jour, je t'explic wink

a++

Hors ligne

#15 20-10-2010 17:02:09

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 620
Site Web

Re : Niveau SVP

Re Bonjour,

Si j'ai bien compris smile : tu demandais à la base de dev une requête SQL pour sortir toutes les catégories de L3, et je t'ai sorti la méthodologie que je préfère pour ça plutôt que de faire du récursif en PHP, ce que tu as fais toi avec ton code pour générer une arborescence de tes cats, qui soit dit en passant n'a rien à voir avec la question que tu as posé, car même si elle y répond indirectement, elle ne correspond pas au problème posé.

++

Dernière modification par Jc (20-10-2010 17:08:02)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#16 21-10-2010 07:45:50

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Niveau SVP

>>Jc
Il va te falloir découvrir que Pierrot attend rarement une réponse aux problèmes qu'il lui arrive d'exposer ici.
Je pense qu'il ajouterait même "heureusement".
Après, libre à chacun d'entrer ou non dans son jeu où il y a toujours à apprendre.
En cette période de tensions sociales, il importe de jouer sur le curseur DISTANCIATION.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#17 21-10-2010 15:49:29

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 620
Site Web

Re : Niveau SVP

Bonjour,

big_smile
Je te remercie Maljuna pour cet eclaircissement concernant les attentes de Pierrot. J'en prends bonne note en tout cas wink

Bonne journée à vous.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#18 21-10-2010 21:36:47

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

Salut,
Comme tu dis MJ, heureusement big_smile

l'histoire est simple, c'est moi qui ai pisser ce mcd de merde et un développeur de pacotille m'as dis qu'il était impossible de parcourir l’arborescence sans avoir une référence sur les enfants.
Comme vous le savez, çà fais environ 5 ans que je ne fait plus de développement.
Il à donc fallut que je prouve a ce clown qu'il avait tord big_smile
c'est vrai qu'en postant, le problème était déjà réglé dans ma ptite tête de linotte big_smile:D
c'est vrai aussi que je me suis mis en colere parce que ce mec m'a pissé pres de 300 lignes de code et qui ne fonctionnait pas de surcroît mad.
mais je ne lui en veut  pas, parce que ça m'a permis de revenir sur mon clavier qui me manque beaucoup big_smile.

Enfin, tout ceci pour dire que certain ont une façon très complexe d'aborder des problèmes qui me semble simple.

La spécialité de beaucoup de développeurs est "sodomiser les mouches en plein vol et avec des gants de boxes" big_smile:D
j'ai employé le terme "sodomiser" pour ne pas choquer les oreilles chastes de notre chère Xtg big_smile
sinon, comme vous vous en doutez, j'aurai employé des termes bien plus crus big_smile:D

bon, je sais que le code que j'ai posté est très critiquable et que l'on peu l'optimiser un max:/
mais je pense que j'ai de beau restes big_smile:D

a++

Hors ligne

#19 22-10-2010 08:42:44

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Niveau SVP

Quoi ça vous dit pas de venir reprendre des cours dans mon école d'ingénieur au monastère ?

Hors ligne

#20 22-10-2010 12:12:43

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 188

Re : Niveau SVP

si c'est toi qui les donnent, avec plaisir wink

a++

Hors ligne

Pied de page des forums