| @ -0,0 +1,48 @@ | |||
| <?php | |||
| /* | |||
| * Donne tous les parents d'un item, comme parents.php | |||
| * Rajoute une jointure sur les crédits | |||
| * Cela permet de r&écupérer le montant, et la réalisation | |||
| * Le montant est affecté directement à l'item | |||
| * La réalisation est la somem des crédits des enfants de l'item | |||
| */ | |||
| header('Content-Type: application/json'); | |||
| try{ | |||
| $pdo = new PDO('sqlite:../data/base.sqlite'); | |||
| $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); | |||
| $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT | |||
| } catch(Exception $e) { | |||
| echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage(); | |||
| die(); | |||
| } | |||
| $where_clause = 'WHERE 1 = 1 '; | |||
| $where_clause .= 'AND item = '.$_REQUEST['item']; | |||
| $sql = ' | |||
| WITH arbre (id, level, path, realisation) AS( | |||
| SELECT parent, 0, '['|| tree.parent || ']', (SELECT SUM(montant) FROM credit WHERE item in (SELECT item FROM tree st WHERE st.parent = tree.parent)) | |||
| FROM tree | |||
| WHERE_CLAUSE | |||
| UNION ALL | |||
| SELECT parent, arbre.level+1, arbre.path||'['||tree.parent||']',(SELECT SUM(montant) FROM credit WHERE item in (SELECT item FROM tree st WHERE st.parent = tree.parent)) | |||
| FROM tree | |||
| INNER JOIN arbre ON arbre.id = tree.item | |||
| ) SELECT arbre.*, item.code, item.title, credit.montant FROM arbre | |||
| INNER JOIN item ON arbre.id = item.id | |||
| LEFT JOIN credit ON credit.item = item.id | |||
| ORDER BY path | |||
| '; | |||
| $query = $pdo->prepare(str_replace('WHERE_CLAUSE',$where_clause,$sql)); | |||
| $query->execute(); | |||
| echo json_encode( $query->fetchAll(PDO::FETCH_ASSOC)); | |||
| /* | |||
| * TODO : Cumuler les réalisatiosn sur les parents lorsque ceux-ci n'en n'ont pas | |||
| */ | |||
| ?> | |||
| @ -0,0 +1,39 @@ | |||
| <?php | |||
| header('Content-Type: application/json'); | |||
| try{ | |||
| $pdo = new PDO('sqlite:../data/base.sqlite'); | |||
| $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); | |||
| $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT | |||
| } catch(Exception $e) { | |||
| echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage(); | |||
| die(); | |||
| } | |||
| $where_clause = 'WHERE 1 = 1'; | |||
| //$where_clause .= ' AND path LIKE "%[1]%"'; | |||
| $sql = ' | |||
| WITH arbre (parent, id, link, code, name, level, path) AS ( | |||
| SELECT 0, id, link, code, libelle, 0, "{0} [" || id || "]" | |||
| FROM v_items_tree WHERE parent IS NULL | |||
| UNION ALL | |||
| SELECT | |||
| v_items_tree.parent, | |||
| v_items_tree.id, | |||
| v_items_tree.link, | |||
| v_items_tree.code, | |||
| v_items_tree.libelle, | |||
| arbre.level+1, | |||
| arbre.path || " {" || v_items_tree.rank || "} [" || v_items_tree.id || "]" | |||
| FROM v_items_tree | |||
| INNER JOIN arbre ON v_items_tree.parent=arbre.id | |||
| ) SELECT parent, id, link, code, name,level,path FROM arbre WHERE_CLAUSE ORDER BY path | |||
| '; | |||
| $query = $pdo->prepare(str_replace('WHERE_CLAUSE',$where_clause,$sql)); | |||
| $query->execute(); | |||
| echo json_encode( $query->fetchAll(PDO::FETCH_ASSOC)); | |||
| ?> | |||
| @ -0,0 +1,35 @@ | |||
| <?php | |||
| header('Content-Type: application/json'); | |||
| try{ | |||
| $pdo = new PDO('sqlite:../data/base.sqlite'); | |||
| $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); | |||
| $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT | |||
| } catch(Exception $e) { | |||
| echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage(); | |||
| die(); | |||
| } | |||
| $where_clause = 'WHERE 1 = 1 '; | |||
| $where_clause .= 'AND item = '.$_REQUEST['item']; | |||
| $sql = ' | |||
| WITH arbre (id,level, path) AS( | |||
| SELECT parent, 0, '['|| tree.parent || ']' | |||
| FROM tree | |||
| WHERE_CLAUSE | |||
| UNION ALL | |||
| SELECT parent, arbre.level+1, arbre.path||'['||tree.parent||']' | |||
| FROM tree | |||
| INNER JOIN arbre ON arbre.id = tree.item | |||
| ) SELECT arbre.*, item.code, item.title FROM arbre | |||
| INNER JOIN item ON arbre.id = item.id | |||
| ORDER BY path DESC | |||
| '; | |||
| $query = $pdo->prepare(str_replace('WHERE_CLAUSE',$where_clause,$sql)); | |||
| $query->execute(); | |||
| echo json_encode( $query->fetchAll(PDO::FETCH_ASSOC)); | |||
| ?> | |||