function arborescence_construction($table, $champ_valeur, $champ_id_fils, $champ_id_pere, $id_racine, $sql_where, $extension) { $table = 'classification_arborescence_article,classification_arborescence_article_categorie_contenu,classification_fta'; //nom de la table contenant l'association "Père" / "Fils" $champ_valeur = 'nom_classification_arborescence_article_categorie_contenu'; //nom du champ contenant la valeur à afficher (sans le "underscore" et le nom de la table) $champ_fta = 'classification_arborescence_article_categorie_contenu'; //nom du champ contenant la valeur à afficher (sans le "underscore" et le nom de la table) $champ_id_fils = 'id_classification_arborescence_article'; //nom du champ fils contenant l'id (sans le "underscore" et le nom de la table) $champ_id_pere = 'ascendant_classification_arborescence_article_categorie_contenu'; //nom du champ père contenant l'id (sans le "underscore" et le nom de la table) $id_racine = 1; //Identifiant de l'enregistrement père racine (le premier) if (!$liste_id) { $liste_id = "," . $id_racine . ","; } if ($add_id) { $liste_id .= $add_id . ","; } //echo $liste_id; //echo $_GET; // print_r(parse_url($url)); $sql_where = "classification_arborescence_article.id_classification_arborescence_article_categorie_contenu=classification_arborescence_article_categorie_contenu.id_classification_arborescence_article_categorie_contenu"; //Permet de personnaliser la clause SQL "WHERE" comme pour insérer une jointure par exemple // Déclaration des variables: /// $table='matiere_premiere_composant'; //nom de la table contenant l'association "Père" / "Fils" // $champ_valeur='nom_matiere_premiere_composant'; //nom du champ contenant la valeur à afficher (sans le "underscore" et le nom de la table) // $champ_id_fils='id_matiere_premiere_composant'; //nom du champ fils contenant l'id (sans le "underscore" et le nom de la table) // $champ_id_pere='id_ascendant_matiere_premiere_composant'; //nom du champ père contenant l'id (sans le "underscore" et le nom de la table) $table; //nom de la table contenant l'association "Père" / "Fils" //Peux aussi être une liste de table séparé par une virgule ex: "table1,table2" $champ_valeur; //nom du champ contenant la valeur à afficher $champ_id_fils; //nom du champ fils contenant l'id $champ_id_pere; //nom du champ père contenant l'id $id_racine; //Identifiant de l'enregistrement père racine (le premier) $id_recherche = $id_racine; //Identifiant en cours de recherche $id_fils; //Identifiant du fils en cours de traitement $id_pere; //Identifiant du pre en cours de traitement $tab; //Nombre de tabulation permettant un affichage en cascade de l'arborescence $tab_init = ' '; //Representation de la tabulation $sql_where; //Permet de personnaliser la clause SQL "WHERE" comme pour insérer une jointure par exemple $return = ''; //Valeur retourne par la fonction //$return[1] --> liste de éléments séparé par une virgule //$return[2] --> Réprésentation de l'arborescence au format texte $extension = Lib::isDefined("extension"); //Tableau d'argument optionnelle de la fonction // $extension[0]; //Code HTML qui sera ajouter à la fin de la valeur dans la représentation graphique // $extension[1]; //0 ou 1. Permet de terminer le code HTML créé par $extension[0] avec l'id de l'objet en cours // $extension[2]; //Ordre tri: 0=Valeur, 1=Clefs Fils et 2=Clef Père // $extension[3]; //Liste des id à développer, si NULL, alors tout est développé // $extension[4]; //Lien lorqu'on clic sur un élément de l'arborescence (terminé par l'id) $tri; //Champ à trier /* Initialisation des variables */ //$champ_valeur .= "_".$table; //$champ_id_fils.= "_".$table; //$champ_id_pere.= "_".$table; $id_pere = $id_racine; if ($sql_where) { $sql_where = "WHERE " . $sql_where; } if (!$extension[2]) { $extension[2] = 1; //Tri par défaut } //Configuration du tri de l'arborescence switch ($extension[2]) { case 0: $tri = $champ_valeur; break; case 1: $tri = $champ_id_fils; break; case 2: $tri = $champ_id_pere; break; } $requete_principale = "SELECT {$champ_id_pere}, {$champ_id_fils}, {$champ_valeur} FROM {$table} " . "{$sql_where} " . "ORDER BY {$tri} ASC "; //echo $requete_principale; $resultat = DatabaseOperation::query($requete_principale); $nombre_ligne = mysql_num_rows($resultat); /* Corps de la fonction */ //Lancement de la fonction //Appel recursif de la fonction $i = 1; //Affiche le niveau dans lequel on est $return = recursif($resultat, $id_recherche, $champ_id_pere, $champ_id_fils, $champ_valeur, $tab_fils, $tab_arborescence, $tab_espace, $return, $nombre_ligne, $extension); //var_dump($return); return $return; }
function arborescence_tableau($paramtable, $param_valeur, $param_id_fils, $param_id_pere, $param_id_racine, $param_tableau) { $paramtable; //nom de la table contenant l'association "Père" / "Fils" $param_valeur; //nom du champ contenant la valeur à afficher $param_id_pere; //Identifiant du pre en cours de traitement $param_id_fils; //Identifiant du fils en cours de traitement $param_id_racine; //Identifiant de l'enregistrement père racine (le premier) $id_recherche = $param_id_racine; //Identifiant en cours de recherche $param_tableau; //un truc qui sert à l'affichage de l'arborescene en tableau $return = ''; //Valeur retourne par la fonction $tri; //Champ à trier $param_id_pere = $param_id_racine; $connect = new PDO('mysql:host=dev-intranet.agis.fr;dbname=intranet_v3_0_dev;charset=utf8', 'root', '8ale!ne') or die("connexion impossible"); $table_req = 'classification_arborescence_article,classification_arborescence_article_categorie_contenu'; //nom de la table contenant l'association "Père" / "Fils" $champ_valeur = 'nom_classification_arborescence_article_categorie_contenu'; //nom du champ contenant la valeur à afficher (sans le "underscore" et le nom de la table) $champ_id_fils = 'id_classification_arborescence_article'; //nom du champ fils contenant l'id (sans le "underscore" et le nom de la table) $champ_id_pere = 'ascendant_classification_arborescence_article_categorie_contenu'; //nom du champ père contenant l'id (sans le "underscore" et le nom de la table) if (!$param_tableau[3]) { $param_tableau[3] = 1; //Tri par défaut } //Configuration du tri de l'arborescence switch ($param_tableau[3]) { case 0: $tri = $champ_valeur; break; case 1: $tri = $champ_id_fils; break; case 2: $tri = $champ_id_pere; break; } $requete_principale = " SELECT " . $champ_id_fils . "," . $champ_id_pere . "," . $champ_valeur . " " . " FROM " . $table_req . "" . " WHERE classification_arborescence_article.id_classification_arborescence_article_categorie_contenu=classification_arborescence_article_categorie_contenu.id_classification_arborescence_article_categorie_contenu"; $resultat = $connect->query($requete_principale); $nombre_ligne = $resultat->rowCount(); foreach ($resultat as $rip) { $return = recursif($rip, $nombre_ligne, $champ_id_pere, $champ_id_fils, $champ_valeur, $id_recherche, $return, $param_tableau); ?> <?php } return $return; }
/** * Non fonctionnelle * @param type $table * @param type $champ_valeur * @param type $champ_id_fils * @param type $champ_id_pere * @param type $id_racine * @param string $sql_where * @param type $extension * @return type */ public static function getClassificationName($table, $champ_valeur, $champ_id_fils, $champ_id_pere, $id_racine, $sql_where, $extension) { /* Déclaration des variables: */ /* $table='matiere_premiere_composant'; //nom de la table contenant l'association 'Père' / 'Fils' $champ_valeur='nom_matiere_premiere_composant'; //nom du champ contenant la valeur à afficher (sans le 'underscore' et le nom de la table) $champ_id_fils='id_matiere_premiere_composant'; //nom du champ fils contenant l'id (sans le 'underscore' et le nom de la table) $champ_id_pere='id_ascendant_matiere_premiere_composant'; //nom du champ père contenant l'id (sans le 'underscore' et le nom de la table) */ $table; //nom de la table contenant l'association 'Père' / 'Fils' //Peux aussi être une liste de table séparé par une virgule ex: 'table1,table2' $champ_valeur; //nom du champ contenant la valeur à afficher $champ_id_fils; //nom du champ fils contenant l'id $champ_id_pere; //nom du champ père contenant l'id $id_racine; //Identifiant de l'enregistrement père racine (le premier) $id_recherche = $id_racine; //Identifiant en cours de recherche $id_fils; //Identifiant du fils en cours de traitement $id_pere; //Identifiant du pre en cours de traitement $tab; //Nombre de tabulation permettant un affichage en cascade de l'arborescence $tab_init = ' '; //Representation de la tabulation $sql_where; //Permet de personnaliser la clause SQL 'WHERE' comme pour insérer une jointure par exemple $return = ''; //Valeur retourne par la fonction //$return[1] --> liste de éléments séparé par une virgule //$return[2] --> Réprésentation de l'arborescence au format texte $extension = Lib::isDefined('extension'); //Tableau d'argument optionnelle de la fonction // $extension[0]; //Code HTML qui sera ajouter à la fin de la valeur dans la représentation graphique // $extension[1]; //0 ou 1. Permet de terminer le code HTML créé par $extension[0] avec l'id de l'objet en cours // $extension[2]; //Ordre tri: 0=Valeur, 1=Clefs Fils et 2=Clef Père // $extension[3]; //Liste des id à développer, si NULL, alors tout est développé // $extension[4]; //Lien lorqu'on clic sur un élément de l'arborescence (terminé par l'id) $tri; //Champ à trier /* Initialisation des variables */ //$champ_valeur .= '_'.$table; //$champ_id_fils.= '_'.$table; //$champ_id_pere.= '_'.$table; $id_pere = $id_racine; $tab_arborescence = '|'; //Signe Nouvelle Arborescence $tab_fils = '---> '; //Signe Nouveau Fils $tab_espace = '----->'; //Espace de décalage if ($sql_where) { $sql_where = 'WHERE ' . $sql_where; } if (!$extension[2]) { $extension[2] = 1; //Tri par défaut } //Configuration du tri de l'arborescence switch ($extension[2]) { case 0: $tri = $champ_valeur; break; case 1: $tri = $champ_id_fils; break; case 2: $tri = $champ_id_pere; break; } $requete_principale = 'SELECT ' . $champ_id_pere . ',' . $champ_id_fils . ',' . $champ_valeur . ' FROM ' . $table . $sql_where . ' ORDER BY ' . $tri . ' ASC '; $array = DatabaseOperation::convertSqlStatementWithoutKeyToArray($requete_principale); if ($array) { $nombre_ligne = count($array); } else { $nombre_ligne = '0'; } /* Corps de la fonction */ //Lancement de la fonction //Appel recursif de la fonction $i = 1; //Affiche le niveau dans lequel on est $return = recursif($resultat, $id_recherche, $champ_id_pere, $champ_id_fils, $champ_valeur, $tab_fils, $tab_arborescence, $tab_espace, $return, $nombre_ligne, $extension); //var_dump($return); return $return; }
function recursif($paramrows, $param_nb_ligne, $param_id_pere, $param_id_fils, $param_valeur, $param_id_recherche, $param_return, $param_tableau) { $tableau_debut = "<table>"; $tableau_tr_ligne = "<tr>"; $tableau_tr_ligne_fin = "</tr>"; $tableau_td_cellule = "<td>"; $tableau_td_cellule_fin = "</td>"; $tableau_tmp = "/"; $tableau_espace = "<br>"; $tableau_fin = "</table>"; //Compteur de la boucle $i = 0; $param_return[$i] = null; while ($i < $param_nb_ligne) { foreach ($paramrows as $rows) { if ($param_id_pere == $param_id_recherche) { //Enregistrement des informations //echo "test".$extension[3]; //Structure $param_return[0] .= $tableau_debut . $tableau_espace . $tableau_tr_ligne; //Liens if ($param_tableau[1]) { $deploy = $param_tableau[0] . $param_id_fils . $param_tableau[2]; } } if (isset($param_return[1]) and $param_id_fils) { $return[1] .= ","; } $param_return[1] .= $param_id_fils; //Structure et Données $param_return[2] .= $tableau_debut . $tableau_espace . $deploy . " " . $param_valeur . $tableau_td_cellule_fin . $tableau_tr_ligne_fin; $id_recherche_ancien = $param_id_recherche; $param_id_recherche = $param_id_fils; //Appel recursif de la fonction //echo "<br>".$id_recherche." ".$extension[3]." --- ". strstr($extension[3], ",".$id_recherche.",")."<br>"; //echo strstr("123456", "2"); //$test = strstr($extension[3], ",".$id_recherche.","); $liste_id = $param_tableau[3]; $dont_explore = $return[2]; //Permet de ne deployer tous les dossiers HTML tout en parcourant l'ensemble de l'arboresence. $param_return = recursif($paramrows, $param_nb_ligne, $param_id_pere, $param_id_fils, $param_valeur, $param_id_recherche, $param_return, $param_tableau); // if ($_SESSION["module"] <> "fiches_mp_achats") { //A optimiser !! // if (!strstr($liste_id, "," . $id_recherche . ",")) { // $return[2] = $dont_explore; // } // } // $param_id_recherche = $id_recherche_ancien; // // $id_recherche_ancien = $param_id_recherche; // $param_id_recherche = $rows[$champ_id_fils]; // $return = recursif($resultat, $id_recherche, $champ_id_pere, $champ_id_fils, $champ_fta); } $i = $i + 1; } return $param_return; }