Gestion d'arbres par représentation intervallaire

Description

Programme de gestion d'arbres par base de donnée tout est dans le titre, les icone, le SQL le fichier Javascript sont dans le .ip

Source / Exemple :


<?

function tp(&$pile_blanc,$pile_BD,$NFM_B,$NFM_BG,$NFM_BD){// affiche la stucture de l'arbre
for ($a=0;$a<count($pile_BD);$a++){
  if ($NFM_BD+1==$pile_BD[$a]) {
      echo ("<img src='./images/ftv2lastnode.gif' border='0' width='16' height='22'>"); //teste fin des fils
      $pile_blanc[$a]=true;
  }elseif (count($pile_BD)-1==$a) echo ("<img src='./images/ftv2node.gif' border='0' width='16' height='22'>");
      elseif ($pile_blanc[$a]) echo ("<img src='./images/ftv2blank.gif' border='0' width='16' height='22'>");
          else echo ("<img src='./images/ftv2vertline.gif' border='0' width='16' height='22'>");
    }
return true;
}

function folder_deplace($NFM_ID){
mysql_query("UPDATE `folder` SET `NFM_BG_temp` = '0', `NFM_BD_temp` = '0'");
$deplace = mysql_fetch_object(mysql_query("SELECT * FROM folder WHERE `NFM_ID`='$NFM_ID' "));
$remplace=mysql_fetch_object(mysql_query("SELECT * FROM folder WHERE `NFM_BD`='".($deplace->NFM_BG-1)."' "));
$decalagefaut=$remplace->NFM_BG-$deplace->NFM_BG;
$decalagebat=$deplace->NFM_BD-$deplace->NFM_BG+1;
mysql_query("UPDATE `folder` SET `NFM_BD_temp` = `NFM_BD` + $decalagefaut WHERE `NFM_BD`<='$deplace->NFM_BD' and `NFM_BG`>='$deplace->NFM_BG'");
mysql_query("UPDATE `folder` SET `NFM_BG_temp` = `NFM_BG` + $decalagefaut WHERE `NFM_BD`<='$deplace->NFM_BD' and `NFM_BG`>='$deplace->NFM_BG'");
mysql_query("UPDATE `folder` SET `NFM_BD_temp` = `NFM_BD` + $decalagebat WHERE `NFM_BD`<='$remplace->NFM_BD' and `NFM_BG`>='$remplace->NFM_BG'");
mysql_query("UPDATE `folder` SET `NFM_BG_temp` = `NFM_BG` + $decalagebat WHERE `NFM_BD`<='$remplace->NFM_BD' and `NFM_BG`>='$remplace->NFM_BG'");
mysql_query("UPDATE `folder` SET `NFM_BD` = `NFM_BD_temp`,`NFM_BG` = `NFM_BG_temp`  WHERE `NFM_BG_temp`>0");
//  mysql_query("UPDATE `activite` SET `NFM_BG` = `NFM_BG` WHERE `NFM_ID`='$deplace->NFM_ID'");
//echo (" $decalagefaut $deplace->activite <=> $decalagebat $remplace->activite ");
}

function rec_folder($NFM_BG,$NFM_BD,$new="new",$nom){ // enregistre le formulaire formfolder
 switch ($new){
        case "new" : {// enregistrement d'un nouveau folder
                   mysql_query("UPDATE `folder` SET `NFM_BD` = `NFM_BD` + 2 WHERE `NFM_BD` >= '$NFM_BD'");
                   mysql_query("UPDATE `folder` SET `NFM_BG` = `NFM_BG` + 2 WHERE `NFM_BG` >= '$NFM_BD'");
                   mysql_query("INSERT INTO `folder` (`NFM_BG`,`NFM_BD`,`nom`) VALUES ('$NFM_BD', $NFM_BD+1,\"".$nom."\")");
                   $NFM_BG=$NFM_BD;
                  } break;
       case "maj" : {  
                 mysql_query("UPDATE `folder` SET `nom` = \"".$nom."\" WHERE `NFM_BD`='$NFM_BD' and `NFM_BG`>='$NFM_BG'"); 
                 } break;
     }
}

function supp_folder($NFMDEL){
$NFMDEL = mysql_fetch_object(mysql_query("SELECT * FROM `folder` WHERE `NFM_ID`='$NFMDEL' "));
// Suppression des Sous menus                                    
$interval = $NFMDEL->NFM_BD-$NFMDEL->NFM_BG+1;      
mysql_query("DELETE FROM `folder` WHERE `NFM_BG`>='$NFMDEL->NFM_BG' AND `NFM_BD`<='$NFMDEL->NFM_BD'");
// Décalage 
mysql_query("UPDATE `folder` SET `NFM_BD` = `NFM_BD` - $interval WHERE `NFM_BD` >= '$NFMDEL->NFM_BD'");
mysql_query("UPDATE `folder` SET `NFM_BG` = `NFM_BG` - $interval WHERE `NFM_BG` >= '$NFMDEL->NFM_BG'");
}

////////////////////////////////////////////////////////////////////////////////////////
function viewtree(){// affiche d'arbre par interval  UPDATE `assos_activite` SET `id_activite` = '84' WHERE `id_activite` = '79'
global $tableau_langues;
$pile_BD=array();
$index=100;
$pile_blanc=array();

$result = mysql_query("SELECT *,NFM_BD-NFM_BG AS NFM_B FROM folder   ORDER BY `NFM_BG` ASC ");

if (mysql_num_rows($result)==0){
             mysql_query("INSERT INTO `folder` ( `NFM_ID` , `NFM_BG` , `NFM_BD`,`nom` ) VALUES ('1', '1', '2','Dossier');");
             $result = mysql_query("SELECT *,NFM_BD-NFM_BG AS NFM_B FROM folder  ORDER BY `NFM_BG` ASC ");
           }
?>
<div align='center'>
<table border='2' cellspacing='0' cellpadding='0' width='600' class='form'><TR>
<td width='100%'>
<?
    while ($arbre = mysql_fetch_object($result)) {
      if ($pile_BD) while ($arbre->NFM_BG > end($pile_BD)) { // depile
                    array_pop($pile_BD);
                    array_pop($pile_blanc);
                    }
?>
<table border='0' cellspacing='0' cellpadding='0' width='700'>
<TR bgColor='#F5F5F5' onmouseout="out(this,'F5F5F5');" onmouseover="over(this,'ffffff');">
    <td align='left' width='200' >&nbsp;
      <?if ($arbre->NFM_BG!=1) {?>
      &nbsp;
       <A href='./folder.php?op=folder_supp&NFMDEL=<?=$arbre->NFM_ID?>'><img src="./images/delete.png" border="0" width="16" height="16" Alt="Supprimer"></A> 
       <A href='./folder.php?op=folder_deplace&NFM_ID123=<?=$arbre->NFM_ID?>'><img src="./images/up.png" border="0" width="16" height="16" alt="Déplacer vers le haut"></A> 
       <A href='./folder.php?op=folder_form&NFM_ID123=<?=$arbre->NFM_ID?>&new=maj' alt="Mettre à jour"><img src="./images/write.png" border="0" width="16" height="16" ></A> 
       <A href='./folder.php?op=folder_form&NFM_ID123=<?=$arbre->NFM_ID?>&new=new'><img src="./images/add.png" border="0" width="16" height="16" Alt="Ajouter un dossier"></A> 
      <?} ?>   
    </td>
    <td valign='top'><?
       tp($pile_blanc,$pile_BD,$arbre->NFM_B,$arbre->NFM_BG,$arbre->NFM_BD);
       ?><img class='drag' src='./images/ftv2folderclosed.gif' border='0' width='24' height='22'></td>
          <td valign='center'><A name="lien<?=$arbre->NFM_ID?>"></A>
         <table border='0' width='300' cellspacing='0' cellpadding='0'><tr>
         <td valign='center'><A href='./folder.php?op=folder_form&NFM_ID123=<?=$arbre->NFM_ID?>&new=new'><?=$arbre->nom?></A>&nbsp;&nbsp;</td>
            </td></tr></table></td>
      <?
      if ($arbre->NFM_B>1) {
          array_push($pile_BD,$arbre->NFM_BD);   // empile
          array_push($pile_blanc,false);   // empile
          }

      ?>
      </tr></table><?
      }
?></td></tr></table></div>
<br>
<?
}

////////////////////////////////////////////////////////////////////////////////////////
function form_folder($NFM_ID123,$new=0){ // formulaire de mise a jour & d'insersion de dossier
$obj = mysql_fetch_object(mysql_query("SELECT * FROM folder WHERE `NFM_ID`='$NFM_ID123'"));
?>
<form  name='formulaire' action='./folder.php' METHOD='POST' >
<input type='hidden' name='NFM_BG123' value='<?=$obj->NFM_BG?>'>
<input type='hidden' name='NFM_BD123' value='<?=$obj->NFM_BD?>'>
<input type='hidden' name='new' value='<?=$new?>'>
<input type='hidden' name='op' value='folder_rec'>
<table border="0" width="300">
<?

  if ($new=='new')  $obj->nom="";
  ?>
		<tr>
			<td width="174">Nom </td>
			<td><input type="text" name="nom" size="20" value="<?=$obj->nom?>" ></td>
		</tr>
		<tr>
			<td width="174">&nbsp;</td>
			<td><input type='submit' value='Envoyer'></td>
		</tr>
	</table>
</form>
<?
}
include("connect.inc.php");
include("top.php");
/////////////////////////////////////////////////////////////////////////////////////////
?>
<table align="center" border="0" width="800" cellspacing="3" cellpadding="2" style="color: #000000; border: 1px solid #000000; background-color: #EDF1FC">
        <tr>
                <td width="100%" 
                style="border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; background-color: #D6DEF7"
                >&nbsp;&nbsp;<b>MENU</b></td>
        </tr>
        <tr style="color: #000000;font-size:12px; background-color: #FFFFFF">
                <td>

<?

switch($op){
case "folder_form":{
             form_folder($NFM_ID123,$new);
             viewtree();
             }break; // mise a jour & nouveau
case "folder_rec":{
             rec_folder($NFM_BG123,$NFM_BD123,$new,$nom);
             viewtree();
             }break;
case "folder_supp":{
             supp_folder($NFMDEL);
             viewtree();
             }break;
case "folder_deplace":{
             folder_deplace($NFM_ID123);
             viewtree();
             }break;
default :{viewtree();}
}
?>
</td>
        </tr>        
        </table>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.