Diferencia entre revisiones de «Como Programar Consultas Paginadas en KumbiaPHP»

De KumbiaPHP Framework Wiki
(Deshecha la edición 2988 de Cbeltranv (disc.))
Línea 96: Línea 96:
 
<source lang='php'>
 
<source lang='php'>
 
<?php
 
<?php
Load::models('ciudad', 'departamento', 'pais');
+
Load::models('ciudad', 'pais');
 
class PaisController extends ApplicationController {
 
class PaisController extends ApplicationController {
 
public function index($page=1)
 
public function index($page=1)
Línea 103: Línea 103:
 
$this->listPaises = $pais->getPaises($page);
 
$this->listPaises = $pais->getPaises($page);
 
}
 
}
 
+
public function ciudades($page=1, $paisid=48)
+
public function pageCiudades($page=1, $paisid=48)
 
{
 
{
 
$paises = new Pais();
 
$paises = new Pais();
Línea 110: Línea 110:
 
$ciudadespais = new Ciudad();
 
$ciudadespais = new Ciudad();
 
$this->listCiudadesPais = $ciudadespais->getCiudadesPais($page, $paisid);
 
$this->listCiudadesPais = $ciudadespais->getCiudadesPais($page, $paisid);
}
 
 
public function departamentos($page=1, $paisid=48)
 
{
 
$paises = new Pais();
 
$this->nombredelpais = $paises->getNombre($paisid);
 
$departamentospais = new Departamento();
 
$this->listDepartamentosPais = $departamentospais->getDepartamentosPais($page, $paisid);
 
 
}
 
}
 
}
 
}
?>
 
 
</source>
 
</source>
  
Línea 132: Línea 123:
 
<?php foreach ($listPaises->items as $item):?>
 
<?php foreach ($listPaises->items as $item):?>
 
<li>
 
<li>
<?php if ($item->id == 48) echo Html::link("pais/departamentos/1/$item->id", $item->codigo); else echo Html::link("pais/ciudades/1/$item->id", $item->codigo);?> - <?php echo $item->nombre?>
+
<?php if ($item->id == 48) echo Html::link("departamento/index/1/$item->id", $item->codigo); else echo Html::link("pais/pageCiudades/1/$item->id", $item->codigo);?> - <?php echo $item->nombre?>
 
</li>
 
</li>
 
<?php endforeach;?>
 
<?php endforeach;?>
Línea 142: Línea 133:
  
  
''' Vista: views/pais/ciudades.phtml'''
+
''' Vista: views/pais/pageCiudades.phtml'''
 
<source lang='php'>
 
<source lang='php'>
 
<div class="content">
 
<div class="content">
Línea 154: Línea 145:
 
<?php endforeach;?>
 
<?php endforeach;?>
 
</ul>
 
</ul>
<?php if($listCiudadesPais->prev) echo Html::linkAction("ciudades/$listCiudadesPais->prev/$item->pais_id/", '<< Anterior |');?>
+
<?php if($listCiudadesPais->prev) echo Html::linkAction("pageCiudades/$listCiudadesPais->prev/$item->pais_id/", '<< Anterior |');?>
<?php if($listCiudadesPais->next) echo Html::linkAction("ciudades/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?>
+
<?php if($listCiudadesPais->next) echo Html::linkAction("pageCiudades/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?>
</div>
 
</source>
 
 
 
 
 
''' Vista: views/pais/departamentos.phtml'''
 
<source lang='php'>
 
<div class="content">
 
<?php echo View::content();?>
 
<h3>Departamentos de <?php echo $nombredelpais;?></h3>
 
<ul>
 
<?php foreach ($listDepartamentosPais->items as $item):?>
 
<li>
 
<?php echo Html::link("departamento/ciudades/1/$item->id", str_pad($item->codigonumerico, 2, "0", STR_PAD_LEFT));?> - <?php echo $item->nombre;?>
 
</li>
 
<?php endforeach;?>
 
</ul>
 
<?php if($listDepartamentosPais->prev) echo Html::linkAction("departamentos/$listDepartamentosPais->prev/$item->pais_id/", '<< Anterior |');?>
 
<?php if($listDepartamentosPais->next) echo Html::linkAction("departamentos/$listDepartamentosPais->next/$item->pais_id/", 'Próximo >>');?>
 
 
</div>
 
</div>
 
</source>
 
</source>
Línea 183: Línea 156:
 
Load::models('ciudad', 'departamento', 'pais');
 
Load::models('ciudad', 'departamento', 'pais');
 
class DepartamentoController extends ApplicationController {
 
class DepartamentoController extends ApplicationController {
public function ciudades($page=1, $departamentoid=15)
+
public function index($page=1, $paisid=48)
 +
{
 +
$paises = new Pais();
 +
$this->nombredelpais = $paises->getNombre($paisid);
 +
$departamentospais = new Departamento();
 +
$this->listDepartamentosPais = $departamentospais->getDepartamentosPais($page, $paisid);
 +
}
 +
public function pageCiudades($page=1, $departamentoid=15)
 
{
 
{
 
$departamentos = new Departamento();
 
$departamentos = new Departamento();
Línea 198: Línea 178:
  
  
''' Vista: views/departamento/ciudades.phtml'''
+
''' Vista: views/departamento/index.phtml '''
 +
<source lang='php'>
 +
<div class="content">
 +
<?php echo View::content();?>
 +
<h3>Departamentos de <?php echo $nombredelpais;?></h3>
 +
<ul>
 +
<?php foreach ($listDepartamentosPais->items as $item):?>
 +
<li>
 +
<?php echo Html::link("departamento/pageCiudades/1/$item->id", str_pad($item->codigonumerico, 2, "0", STR_PAD_LEFT));?> - <?php echo $item->nombre;?>
 +
</li>
 +
<?php endforeach;?>
 +
</ul>
 +
<?php if($listDepartamentosPais->prev) echo Html::linkAction("index/$listDepartamentosPais->prev/$item->pais_id/", '<< Anterior |');?>
 +
<?php if($listDepartamentosPais->next) echo Html::linkAction("index/$listDepartamentosPais->next/$item->pais_id/", 'Próximo >>');?>
 +
</div></source>
 +
 
 +
 
 +
''' Vista: views/departamento/pageCiudades.phtml'''
 
<source lang='php'>
 
<source lang='php'>
 
<div class="content">
 
<div class="content">
Línea 210: Línea 207:
 
<?php endforeach;?>
 
<?php endforeach;?>
 
</ul>
 
</ul>
<?php if($listCiudadesDepartamento->prev) echo Html::linkAction("index/$listCiudadesDepartamento->prev/$item->departamento_id/", '<< Anterior |');?>
+
<?php if($listCiudadesDepartamento->prev) echo Html::linkAction("pageCiudades/$listCiudadesDepartamento->prev/$item->departamento_id/", '<< Anterior |');?>
<?php if($listCiudadesDepartamento->next) echo Html::linkAction("index/$listCiudadesDepartamento->next/$item->departamento_id/", 'Próximo >>');?>
+
<?php if($listCiudadesDepartamento->next) echo Html::linkAction("pageCiudades/$listCiudadesDepartamento->next/$item->departamento_id/", 'Próximo >>');?>
 
</div>
 
</div>
 
</source>
 
</source>

Revisión del 14:15 5 nov 2010

Tomado del ejemplo: Como Programar Consultas Paginadas en KUMBIAPHP Aun si probar.

DDL para PostgreSQL

-- DDL para PostgreSQL

CREATE TABLE Pais
(
  Id serial,
  PRIMARY KEY (Id),
  Codigo char(2) UNIQUE NOT NULL,
  Nombre character varying(100) NOT NULL,
  Activ boolean DEFAULT true
);

CREATE TABLE Departamento
(
  Id serial,
  PRIMARY KEY (Id),
  Nombre character varying(100) NOT NULL,
  Pais_Id integer REFERENCES Pais(Id) NOT NULL,
  CodigoNumerico integer,
  Activ boolean DEFAULT true
);

CREATE TABLE Ciudad
(
  Id bigserial,
  PRIMARY KEY (Id),
  Nombre character varying(100) NOT NULL,
  Pais_Id integer REFERENCES Pais(Id) NOT NULL,
  Departamento_Id integer REFERENCES Departamento(Id),
  Codigo char(3) DEFAULT '   ',
  CodigoNumerico integer,
  Activ boolean DEFAULT true
);

Modelo: pais.php

<?php
class Pais extends ActiveRecord {
	public function getPaises($page, $ppage=25)
	{
		return $this->paginate("page: $page", "per_page: $ppage", 'order: nombre asc');
	}
	public function getNombre($id)
	{
		return $this->find($id)->nombre;
	}
}
?>


Modelo: departamento.php

<?php
class Departamento extends ActiveRecord {
	public function getDepartamentosPais($page, $paisid, $ppage=25)
	{
		return $this->paginate("page: $page", "pais_id = $paisid", "per_page: $ppage", 'order: nombre asc');
	}
	public function getNombre($id)
	{
		return $this->find($id)->nombre;
	}
	public function getIdPais($id)
	{
		return $this->find($id)->pais_id;
	}
}
?>


Modelo: ciudad.php

<?php
class Ciudad extends ActiveRecord {
	public function getCiudadesPais($page, $paisid, $ppage=25)
	{
		return $this->paginate("page: $page", "pais_id = $paisid", "per_page: $ppage", 'order: nombre asc');
	}
	public function getCiudadesDepartamento($page, $departamentoid, $ppage=25)
	{
		return $this->paginate("page: $page", "departamento_id = $departamentoid", "per_page: $ppage", 'order: nombre asc');
	}
}
?>


Controlador: pais_controller.php

<?php
Load::models('ciudad', 'pais');
class PaisController extends ApplicationController {
	public function index($page=1)
	{
		$pais = new Pais();
		$this->listPaises = $pais->getPaises($page);
	}
 
	public function pageCiudades($page=1, $paisid=48)
	{
		$paises = new Pais();
		$this->nombredelpais = $paises->getNombre($paisid);
		$ciudadespais = new Ciudad();
		$this->listCiudadesPais = $ciudadespais->getCiudadesPais($page, $paisid);
	}
}


Vista: views/pais/index.phtml

<div class="content">
	<?php echo View::content();?>
	<h3>Paises</h3>
	<ul>
	<?php foreach ($listPaises->items as $item):?>
	<li>
		<?php if ($item->id == 48) echo Html::link("departamento/index/1/$item->id", $item->codigo); else echo Html::link("pais/pageCiudades/1/$item->id", $item->codigo);?> - <?php echo $item->nombre?>
	</li>
	<?php endforeach;?>
	</ul>
	<?php if($listPaises->prev) echo Html::linkAction("index/$listPaises->prev/", '<< Anterior |');?>
	<?php if($listPaises->next) echo Html::linkAction("index/$listPaises->next/", 'Próximo >>');?>
</div>


Vista: views/pais/pageCiudades.phtml

<div class="content">
	<?php echo View::content();?>
	<h3>Ciudades de <?php echo $nombredelpais;?></h3>
	<ul>
	<?php foreach ($listCiudadesPais->items as $item):?>
	<li>
		<?php if ($item->codigo == "   ") echo "ZZZ"; else echo $item->codigo;?> - <?php echo $item->nombre;?>
	</li>
	<?php endforeach;?>
	</ul>
	<?php if($listCiudadesPais->prev) echo Html::linkAction("pageCiudades/$listCiudadesPais->prev/$item->pais_id/", '<< Anterior |');?>
	<?php if($listCiudadesPais->next) echo Html::linkAction("pageCiudades/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?>
</div>


Controlador: departamento_controller.php

<?php
Load::models('ciudad', 'departamento', 'pais');
class DepartamentoController extends ApplicationController {
	public function index($page=1, $paisid=48)
	{
		$paises = new Pais();
		$this->nombredelpais = $paises->getNombre($paisid);
		$departamentospais = new Departamento();
		$this->listDepartamentosPais = $departamentospais->getDepartamentosPais($page, $paisid);
	}
	public function pageCiudades($page=1, $departamentoid=15)
	{
		$departamentos = new Departamento();
		$this->nombredeldepartamento = $departamentos->getNombre($departamentoid);
		$this->idpais = $departamentos->getIdPais($departamentoid);
		$paises = new Pais();
		$this->nombredelpais = $paises->getNombre($this->idpais);
		$ciudadesdepartamento = new Ciudad();
		$this->listCiudadesDepartamento = $ciudadesdepartamento->getCiudadesDepartamento($page, $departamentoid);
	}
}
?>


Vista: views/departamento/index.phtml

<div class="content">
	<?php echo View::content();?>
	<h3>Departamentos de <?php echo $nombredelpais;?></h3>
	<ul>
	<?php foreach ($listDepartamentosPais->items as $item):?>
	<li>
		<?php echo Html::link("departamento/pageCiudades/1/$item->id", str_pad($item->codigonumerico, 2, "0", STR_PAD_LEFT));?> - <?php echo $item->nombre;?>
	</li>
	<?php endforeach;?>
	</ul>
	<?php if($listDepartamentosPais->prev) echo Html::linkAction("index/$listDepartamentosPais->prev/$item->pais_id/", '<< Anterior |');?>
	<?php if($listDepartamentosPais->next) echo Html::linkAction("index/$listDepartamentosPais->next/$item->pais_id/", 'Próximo >>');?>
</div>


Vista: views/departamento/pageCiudades.phtml

<div class="content">
	<?php echo View::content();?>
	<h3>Ciudades de <?php echo $nombredeldepartamento;?> - <?php echo $nombredelpais;?></h3>
	<ul>
	<?php foreach ($listCiudadesDepartamento->items as $item):?>
	<li>
		<?php if ($item->codigo == "   ") echo "ZZZ"; else echo $item->codigo;?> - <?php echo str_pad($item->codigonumerico, 3, "0", STR_PAD_LEFT);?> - <?php echo $item->nombre;?>
	</li>
	<?php endforeach;?>
	</ul>
	<?php if($listCiudadesDepartamento->prev) echo Html::linkAction("pageCiudades/$listCiudadesDepartamento->prev/$item->departamento_id/", '<< Anterior |');?>
	<?php if($listCiudadesDepartamento->next) echo Html::linkAction("pageCiudades/$listCiudadesDepartamento->next/$item->departamento_id/", 'Próximo >>');?>
</div>

--Cbeltranv 02:56 2 nov 2010 (UTC) --Henry.stivens 12:00 2 nov 2010 (UTC)