Changeset 20217 in spip-zone


Ignore:
Timestamp:
Apr 28, 2008, 9:07:18 AM (12 years ago)
Author:
cam.lafit@…
Message:

Petite simplification des arguments à transmettre,
on demande un tableau $champs[] pour connaitre les noms des champs (clef primaire et etrangére)

Location:
_plugins_/_test_/sql_arbo
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_test_/sql_arbo/base/abstract_arbre.php

    r20147 r20217  
    2727 *  \param $table table à convertir, nom de table complet
    2828 *  \param $champ_noeud nom du champ contenant l'index de table en général id_objet
    29  *  \param $champ_parent nom du champs contenant l'index de l'element parent
     29 *  \param $champ_parent nom du champ contenant l'index de l'element parent
    3030 *
    3131 *  \return booleen retourne un controle sur le nombre d'elements traités
    3232 */
    33 function sql_arbre_convertir($table, $champ_noeud, $champ_parent) {
     33function sql_arbre_convertir($table, $id_noeud, $champs = array()) {
     34
     35    // test la presence des noms des champs
     36    if(!isset($champs['noeud']) || !isset($champs['parent']) ) {
     37        return false;
     38    }
     39   
    3440    //création des champs necessaires
    3541    sql_alter('TABLE '.$table.' ADD bord_gauche INT');
     
    3743       
    3844    //formatage intervallaire
    39     $bord_gauche = sql_arbre_convertir_noeud(1,0,'spip_autojointure','FAM_ID','FAM_PERE');
     45    $bord_gauche = sql_arbre_convertir_noeud(1,$id_noeud,$table,$champs);
    4046
    4147    //controle la conversion
     
    5561
    5662
    57 /*! \brief Defini les bords d'un noeud et de sa descendande
     63/*! \brief Defini les bords d'un noeud et de sa descendance
    5864 *
    5965 *
     
    6672 *  \return int retourne la valeur du prochain bord gauche à donner, pour le noeud frere par exemple
    6773 */
    68 function sql_arbre_convertir_noeud($bord_gauche,$id_noeud,$table,$champ_noeud,$champ_parent) {
     74function sql_arbre_convertir_noeud($bord_gauche,$id_noeud,$table,$champs = array()) {
    6975   
    7076    //on sauve le bord gauche du noeud en cours
     
    7682    //recherche des enfants immédiats
    7783    $ressource = sql_select(
    78         $champ_noeud,
    79         $table,
    80         "$champ_parent = $id_noeud"
     84        $champs['noeud'],
     85        $table,
     86        $champs['parent']." = ".$id_noeud
    8187    );
    8288     
    8389    //parcours les enfants
    8490    while($fils = sql_fetch($ressource)) {
    85         $id_fils = $fils[$champ_noeud];
    86         $bord_gauche = sql_arbre_convertir_noeud($bord_gauche,$id_fils,$table,$champ_noeud,$champ_parent);
     91        $id_fils = $fils[$champs['noeud']];
     92        $bord_gauche = sql_arbre_convertir_noeud($bord_gauche,$id_fils,$table,$champs);
    8793    }
    8894   
     
    94100            'bord_droit' => $bord_gauche
    95101        ),
    96         "$champ_noeud = $id_noeud"
     102        $champs['noeud']." = ".$id_noeud
    97103    );
    98104   
  • _plugins_/_test_/sql_arbo/exec/sql_arbo.php

    r20193 r20217  
    3636        echo "<h1>Conversion autojointure -> intervallaire</h1>";
    3737       
    38         echo sql_arbre_convertir($table, $champ_noeud, $id_noeud, $champ_parent);
     38        $champs['parent'] = $champ_parent;
     39        $champs['noeud'] = $champ_noeud;
     40       
     41        echo sql_arbre_convertir($table, $id_noeud, $champs);
    3942       
    4043        echo "<h1>Obtenir toutes les feuilles</h1>";
Note: See TracChangeset for help on using the changeset viewer.