公告

滚滚红尘, 山长水阔知何处;
......
点点滴滴,往日云烟往日花。
......

用心为人,用心做事!

博客统计信息

用户名:hapyydagui_min
文章数:18
评论数:24
访问量:70604
无忧币:20
博客积分:266
博客等级:2
注册日期:2009-02-19


 
下面的内容经过完整的测试,结合了网上看到的其他文章,修改整理。
测试环境如下:
  windows 2003 sp2
  mondrian-3.1.1.12687
  jdk1.6
  tomcat 5.5.23
 
 
LISTING 1: Determining Products Sold in Each State
说明:每个州(省)都在销售的产品
[en]
with set [SoldInUSA] as 'Filter([Product].[Brand Name].Members, Not IsEmpty( ([USA], [Unit Sales]) ))'
member [Measures].[SoldInState] as 'iif( IsEmpty(([Product].CurrentMember, [Unit Sales], [Customers].CurrentMember)), "No","Yes" )'
select [USA].children on COLUMNS,
[SoldInUSA] on ROWS
from Sales
where ([Measures].[SoldInState])
[cn]
with set [SoldInUSA] as 'Filter([Product].[Brand Name].Members, Not IsEmpty( ([美国], [Unit Sales]) ))'
member [Measures].[SoldInState] as 'iif( IsEmpty(([Product].CurrentMember, [Unit Sales], [Customers].CurrentMember)), "No","Yes" )'
select [美国].children on COLUMNS,
[SoldInUSA] on ROWS
from Sales
where ([Measures].[SoldInState])

LISTING 2: Determining Top 10 Product Categories
说明:列出销售额排名前十的产品类别
select {[Measures].[Unit Sales]} ON COLUMNS,
  TopCount([Product].[Product Category].Members, 10.0, [Measures].[Unit Sales]) ON ROWS
from [Sales]

Listing_03.Determining Brands Sold During the Past Three Quarters.txt 
说明:列出过去三个季度里都存在销售量的商品销售记录  
[en]
with set [LastQuarter] as 'Tail(Filter([Time].[Quarter].Members, Not IsEmpty([Time].CurrentMember)),1)'
set [Last3Quarters] as ' [LastQuarter].item(0).item(0).Lag(2) : [LastQuarter].item(0).item(0)'
select [Last3Quarters] on COLUMNS,
Non Empty Union(Descendants( [Food], [Product].[Brand Name] ), Descendants( [Drink],  [Product].[Brand Name] )) on ROWS
from Sales
[cn]
with set [LastQuarter] as 'Tail(Filter([Time].[Quarter].Members, Not IsEmpty([Time].CurrentMember)),1)'
set [Last3Quarters] as ' [LastQuarter].item(0).item(0).Lag(2) : [LastQuarter].item(0).item(0)'
select [Last3Quarters] on COLUMNS,
Non Empty Union(Descendants( [食品], [Product].[Brand Name] ), Descendants( [饮用类],  [Product].[Brand Name] )) on ROWS
from Sales

Listing_04.Determining Recent Trends for Best-Selling Brands.txt
说明:查出最近6个月销售趋势最好的前10个商品及销售量  
with set [TenBest] as 'TopCount( [Product].[Brand Name].Members, 10, [Unit Sales] )'
  set [LastMonth] as 'Tail(Filter([Time].[Month].Members, Not IsEmpty([Time].CurrentMember)),1)'
set [Last6Months] as ' [LastMonth].item(0).item(0).Lag(6) : [LastMonth].item(0).item(0)'
select [Last6Months] on COLUMNS,
[TenBest] on ROWS
from Sales

Listing_05.Determining Brands that Make Up 80 Percent of Sales.txt 
说明:找出组成销售额80%的商品销售及其记录  
select {[Unit Sales]} on COLUMNS,
TopPercent([Product].[Brand Name].Members, 80, [Unit Sales]) on ROWS
from Sales

Listing_06.Determining Brands That Make Up the Bottom 20 Percent of Sales.txt
说明:按销售量排序,找出组成20%销售量的商品销售记录
select {[Unit Sales]} on COLUMNS,
Non Empty BottomPercent([Product].[Brand Name].Members, 20, [Unit Sales]) on ROWS
from Sales

Listing_07.Determining the Top Five Stores and the Top Five Customers.txt
说明:查出销售量最好的前5名店和每个店的前5个顾客 及其销售记录  
select {[Unit Sales]} on COLUMNS,
Generate( TopCount([Store].[Store Name].Members, 5, [Unit Sales]),
{ [Store].CurrentMember } * TopCount( [Customers].[Name].Members, 5, ([Unit Sales], 
[Store].CurrentMember) ) ) on ROWS
from Sales

Listing_08.Determining Two Top-Selling Products.txt
说明:查出每种产品大类 前2名 产品小类型号的销售记录,以及小类型号占大类的百分比  
with member [Measures].[PercTotalSales] as
' Sum( TopCount([Product].CurrentMember.Children, 2, [Unit Sales]), [Unit Sales] ) 
/([Product].CurrentMember, [Unit Sales])',
FORMAT_STRING = '##.0%'
select [Store].[(All)].Members on COLUMNS,
  Generate( [Product].[Brand Name].Members, 
   Union(
      TopCount( [Product].CurrentMember.Children, 2, [Unit Sales] ) * {[Unit Sales]},
      { ([Product].CurrentMember, [Measures].[PercTotalSales]) }
      )
   ) on ROWS
from Sales
===============================

Listing_09.Highlighting Products in the Bottom 10 Percent.txt
说明:查出4个季度中,每个时期销售量在后10%的产品销售量,并显示为粗体  
with set [LastQuarter] as 'Tail(Filter([Time].[Quarter].Members, Not 
IsEmpty([Time].CurrentMember)))'
set [Last4Quarters] as ' [LastQuarter].item(0).item(0).Lag(3) : [LastQuarter].item(0).item(0)'
member [Measures].[HLUnit Sales] as '[Unit Sales]',
  FONT_FLAGS = 'iif( Count(
       Intersect( BottomPercent( [Product].[Brand Name].Members, 10, ([Unit Sales]) ), 
{[Product].CurrentMember})
       ) = 0, 0, 1)'
select [Last4Quarters] on COLUMNS,
  [Product].[Brand Name].Members on ROWS
from Sales
where ([Measures].[HLUnit Sales])
cell properties VALUE, FORMATTED_VALUE, FONT_FLAGS

Listing_10.Comparing Sales with Those of Parallel Months.txt
说明:比较具有相同相对位置的时间点的销售量,例如今年7月和去年7月;  
with set [PromoMonths] as 'Filter([Time].[Month].Members, Not IsEmpty( ([Unit Sales], [Double Your Savings]) ) )'
  set [PromoRange] as 'Head( [PromoMonths] ).item(0).item(0) : Tail( [PromoMonths] ).item(0).item(0)'
member [Measures].[Uplift] as '([Unit Sales], [Double Your Savings])'
member [Measures].[This Quarter] as '[Unit Sales]'
member [Measures].[Last Quarter] as '( ParallelPeriod( [Time].[Quarter] ), [Unit Sales] )'
member [Measures].[Growth] as ' [Measures].[This Quarter] - [Measures].[Last Quarter]'
select [PromoRange] on Columns,
{ [Measures].[This Quarter], [Measures].[Last Quarter], [Measures].[Growth], [Measures].[Uplift] } on Rows
from [Sales]

Listing_11.Determining Sales That Exceed Store Cost by 160 Percent.txt
说明:查出利润率在16%以上的产品及销售记录  
with member [Measures].[SalesRatio] as '([Store Sales] - [Store Cost]) / [Store Cost]', 
FORMAT_STRING = '##%'
select { [Store Sales], [Store Cost], [Measures].[SalesRatio] } on COLUMNS,
Filter( [Product].[Brand Name].Members, [Measures].[SalesRatio] > 1.60 ) on  ROWS
from Sales
Listing_12.Determining Brands that Have Grown by More Than 50 Percent.txt
说明:找出最近一季度比前一季度销售量增长幅度大于50%的产品销售记录  
with set [LastQuarter] as 'Tail(Filter([Time].[Quarter].Members, Not 
IsEmpty([Time].CurrentMember)))'
  member [Measures].[CurrQSales] as '([LastQuarter].item(0).item(0), [Unit Sales])'
  member [Measures].[PrevQSales] as '([LastQuarter].item(0).item(0).PrevMember, [Unit Sales])'
  member [Measures].[Growth] as ' ([Measures].[CurrQSales] - [Measures].[PrevQSales]) / [Measures].[PrevQSales]', 
FORMAT_STRING='##%'
select { [Measures].[PrevQSales], [Measures].[CurrQSales], [Measures].[Growth] } on COLUMNS,
  Filter( [Product].[Brand Name].Members, [Measures].[Growth] > 0.5 ) on ROWS
from Sales

Listing_13.Determing the Top 10 and Bottom 10 Product Brands.txt
说明:找出销售额在前、后10名的产品销售记录,并列出总排名,就是找出销售情况最好和最坏的产品  
with set [OrderedBrands] as 'Order( [Product].[Brand Name].Members, [Unit Sales], BDESC )'
  member [Measures].[Brand Rank] as 'Rank( [Product].CurrentMember, [OrderedBrands] )'
select {[Measures].[Brand Rank], [Unit Sales]} on COLUMNS,
  Union( Head( [OrderedBrands], 10 ), Tail( [OrderedBrands], 10 ) ) on ROWS
from Sales
Listing_14.Comparing Product Trends.txt
说明:比较一下产品销售趋势,没什么用  
with set [LastQuarter] as 'Tail(Filter([Time].[Quarter].Members, Not 
IsEmpty([Time].CurrentMember)))'
set [Last4Quarters] as ' [LastQuarter].item(0).item(0).Lag(3) : [LastQuarter].item(0).item(0)'
member [Measures].[GroupAvg] as 'Avg([Product].CurrentMember.Siblings, [Unit Sales])'
member [Measures].[AllAvg] as 'Avg( [Product].[Product Name].Members, [Unit Sales])'
select [Last4Quarters] on COLUMNS,
{ [Unit Sales], [Measures].[GroupAvg], [Measures].[AllAvg] } on ROWS
from Sales
/*where ([Ebony Plums])*/

Listing_15.Determining the Top 10 Middle-Tier Brands.txt
说明:查出一定条件下的前10名产品的销售记录,例如销售量在500到3000之间的  
with set [LastQuarter] as 'Tail(Filter([Time].[Quarter].Members, Not 
IsEmpty([Time].CurrentMember)))'
set [Last4Quarters] as ' [LastQuarter].item(0).item(0).Lag(3) : [LastQuarter].item(0).item(0)'
member [Measures].[GroupAvg] as 'Avg([Product].CurrentMember.Siblings, [Unit Sales])'
member [Measures].[AllAvg] as 'Avg( [Product].[Product Name].Members, [Unit Sales])'
member [measures].[abc] as '[Product].CurrentMember.uniquename'
select [Last4Quarters] on COLUMNS,
{ [Unit Sales], [measures].[GroupAvg], [measures].[AllAvg],[measures].[abc] } on ROWS
from Sales
/*where ([Ebony Plums])*/
[/img]..
注:本系列教程都在zend studio 6.1.1上开发完成,amp环境全部自己配置,以避免使用类似xampp\wamp等继承环境带来的未知问题。 1、首先创建存储用户的表 image  
2、创建对应于数据库表的数据库访问模型,即Zend Table
在zend studio的工程上右键选择New Zend Framework Item,选择Zend Table,使用Users作为PHP文件名,以下是Users.php的内容:
image
代码具体的含义不言自明。
 
3、创建控制器
使用同2的方法创建Zend Framework Item,不过选择的是Zend Controller,使用AuthController.php作为PHP文件名。内容如下(控制器中使用的LoginForm 和RegistrationForm 是Zend_Form的子类,用于创建表单,细节在下一节):

<?php

/**
* AuthController
*
* @author happydagui.min
* @version
*/

require_once 'Zend/Controller/Action.php';
require_once '../application/default/forms/LoginForm.php'; // 注意这里的路径的写法
require_once '../application/default/forms/RegistrationForm.php';

class AuthController extends Zend_Controller_Action {
/**
* The default action - show the home page
*/

public function homeAction() { // 进入首页前检查用户是否已经登录,否则转向登录页面
$storage = new Zend_Auth_Storage_Session ( );
$data = $storage->read ();
if (! $data) {
$this-&gt;_redirect ( 'auth/login' );
}
$this-&gt;view-&gt;username = $data-&gt;username;
}

public function loginAction() { // 处理登录
$users = new Users ( );
$form = new LoginForm ( );
$this-&gt;view-&gt;form = $form;

if ($this-&gt;getRequest ()-&gt;isPost ()) {
if ($form-&gt;isValid ( $_POST )) {
$data = $form-&gt;getValues ();

$auth = Zend_Auth::getInstance ();
$authAdapter = new Zend_Auth_Adapter_DbTable ( $users-&gt;getAdapter (), 'tb_users' );
$authAdapter-&gt;setIdentityColumn ( 'username' )
-&gt;setCredentialColumn ( 'password' );
$authAdapter-&gt;setIdentity ( $data ['username'] )
-&gt;setCredential ( $data ['password'] );

$result = $auth-&gt;authenticate ( $authAdapter );
if ($result-&gt;isValid ()) {
$storage = new Zend_Auth_Storage_Session ( );
$storage-&gt;write ( $authAdapter-&gt;getResultRowObject () );
$this-&gt;_redirect ( 'auth/home' );
} else {
$this-&gt;view-&gt;errorMessage = "Invalid username or password, Please try again.";
}

}
}
}

public function signupAction() { // 处理注册
$users = new Users ( );
$form = new RegistrationForm ( );
$this-&gt;view-&gt;form = $form;
if ($this-&gt;getRequest ()-&gt;isPost ()) {
if ($form-&gt;isValid ( $_POST )) {
$data = $form-&gt;getValues ();
if ($data ['password'] != $data ['confirmPassword']) {
$this-&gt;view-&gt;errorMessage = "Password and confirm password donnot match.";
return;
}
if ($users-&gt;checkUnique ( $data ['username'] )) {
$this-&gt;view-&gt;errorMessage = "Name already taken.";
return;
}
unset ( $data ['confirmPassword'] );
$users-&gt;insert ( $data );
$this-&gt;_redirect ( 'auth/login' );
}
}
}

public function logoutAction() { // 处理注销
$storage = new Zend_Auth_Storage_Session ( );
$storage-&gt;clear ();
$this-&gt;_redirect ( 'auth/login' );
}

}
// 这里去掉了php的结束符号

4、显示注册和登录的表单类,需要手工创建LoginForm.php(位置:application/default/forms/)
image
RegistrationForm.php(位置:application/default/forms/)
类别:未分类|阅读(8684)|回复(1)|(0)阅读全文>>
2009-03-31 14:02:15
正潜水研究Joomla!,两周ing…
类别:未分类|阅读(37)|回复(0)|(0)阅读全文>>
Zend Framework学习的绝好的电子书。坚持读完,肯定不错!
这是电子书配套源码。
类别:PHP|阅读(928)|回复(0)|(0)阅读全文>>
世界经济金融危机的不期而至,使得原本供需矛盾已经显现的大学毕业生就业问题,在今年格外突出。“啃老”毕竟是绝少数,大多数的大学毕业生还是面临着究竟是就业,还是创业的选择。但无论是选择就业,还是创业,大学生首先学会的应该是敬业。
类别:IT界|阅读(386)|回复(1)|(0)阅读全文>>
Zend Framework学习的绝好的电子书。坚持读完,肯定不错!

注:part1附件下载后把rar后缀去掉。
类别:PHP|阅读(4320)|回复(3)|(0)阅读全文>>
如题
类别:未分类|阅读(52)|回复(0)|(0)阅读全文>>
闲话少说,先操作一遍,再给出解释。 1、把模板(本文以siteground-j15-41为例)复制到另外的目录,连同templates\system目录一起复制过去 目录如下: -模板学习目录     -siteground-j15-41 ..
类别:joomla|阅读(3361)|回复(1)|(0)阅读全文>>
你不了解PHP的10件事情,转自http://www.ccvita.com/302.html 看到有人翻译的《10 things you (probably) didn’t know about PHP》,发现在此次之前2、8两条并不知道,1、3虽然熟知但是去没有实际应用。 由于阅..
类别:PHP|阅读(233)|回复(0)|(0)阅读全文>>
网上搜索相关主题,90%都不可实际操作,通过实验,终于找到了可行的办法,发布在这里和大家分享。 注意:适用与oracle 10g+以上的版本。 如果目标表空间为TS-D,源表空间为TS-S,使用imp命令导入源表空间导出的..
本节主要内容:使用Zend Framework访问数据库,本文把整个过程一步一步描述出来,已让初学者更加明白,更容易上手。
下一节内容:完整的CRUD示例。
 
1 设置数据库
1.1 创建数据库zfaction
在MySQL中创..
类别:PHP|阅读(2473)|回复(3)|(0)阅读全文>>
2009-02-24 22:08:27
呵呵,博客更新要推迟几天了。
类别:未分类|阅读(214)|回复(2)|(0)阅读全文>>
 <<   1   2   >>   页数 ( 1/2 )