예제 #1
0
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 pŠre 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 retourn‚e 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;
}
예제 #2
0
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 pŠre 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 retourn‚e 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 pŠre 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 retourn‚e 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;
}