Edición de «Como Programar Consultas Paginadas en KumbiaPHP»

De KumbiaPHP Framework Wiki

Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 1: Línea 1:
Tomado del ejemplo: [[Como Programar Consultas Paginadas en KUMBIAPHP]]
+
Tomado del ejemplo: [[Como Programar Consultas Paginadas en KUMBIAPHP]] Aun si probar.
 
 
 
 
'''Diagrama de Clases'''
 
 
 
[[Archivo:Geo.png]]
 
 
 
'''DDL para PostgreSQL'''
 
  
 
<source lang='sql'>
 
<source lang='sql'>
CREATE SCHEMA geo;
+
-- DDL para PostgreSQL
  
CREATE TABLE geo.Pais
+
CREATE TABLE Pais
 
(
 
(
 
   Id serial,
 
   Id serial,
Línea 17: Línea 10:
 
   Codigo char(2) UNIQUE NOT NULL,
 
   Codigo char(2) UNIQUE NOT NULL,
 
   Nombre character varying(100) NOT NULL,
 
   Nombre character varying(100) NOT NULL,
  Bandera bytea,
 
 
   Activ boolean DEFAULT true
 
   Activ boolean DEFAULT true
 
);
 
);
  
CREATE TABLE geo.Departamento
+
CREATE TABLE Departamento
 
(
 
(
 
   Id serial,
 
   Id serial,
Línea 31: Línea 23:
 
);
 
);
  
CREATE TABLE geo.Ciudad
+
CREATE TABLE Ciudad
 
(
 
(
 
   Id bigserial,
 
   Id bigserial,
Línea 43: Línea 35:
 
);
 
);
 
</source>
 
</source>
 
  
 
''' Modelo: pais.php '''
 
''' Modelo: pais.php '''
 
 
<source lang='php'>
 
<source lang='php'>
 
<?php
 
<?php
 
class Pais extends ActiveRecord {
 
class Pais extends ActiveRecord {
protected $schema = 'geo';
 
 
public function getPaises($page, $ppage=25)
 
public function getPaises($page, $ppage=25)
 
{
 
{
Línea 62: Línea 51:
 
?>
 
?>
 
</source>
 
</source>
 
  
 
''' Modelo: departamento.php '''
 
''' Modelo: departamento.php '''
Línea 69: Línea 57:
 
<?php
 
<?php
 
class Departamento extends ActiveRecord {
 
class Departamento extends ActiveRecord {
protected $schema = 'geo';
 
 
public function getDepartamentosPais($page, $paisid, $ppage=25)
 
public function getDepartamentosPais($page, $paisid, $ppage=25)
 
{
 
{
Línea 85: Línea 72:
 
?>
 
?>
 
</source>
 
</source>
 
  
 
''' Modelo: ciudad.php '''
 
''' Modelo: ciudad.php '''
Línea 92: Línea 78:
 
<?php
 
<?php
 
class Ciudad extends ActiveRecord {
 
class Ciudad extends ActiveRecord {
protected $schema = 'geo';
 
 
public function getCiudadesPais($page, $paisid, $ppage=25)
 
public function getCiudadesPais($page, $paisid, $ppage=25)
 
{
 
{
Línea 106: Línea 91:
  
  
'''Diagrama de Secuencia'''
+
'''Controlador: pais_controller.php'''
 +
<source lang='php'>
 +
<?php
 +
Load::models('pais');
 +
class PaisController extends ApplicationController {
 +
public function index($page=1)
 +
{
 +
$pais = new Pais();
 +
$this->listPaises = $pais->getPaises($page);
 +
}
  
[[Archivo:ConsultaGeo.png]]
+
public function ciudades($page=1, $paisid=48)
 +
{
 +
$paises = new Pais();
 +
$this->nombredelpais = $paises->getNombre($paisid);
 +
$ciudadespais = new Ciudad();
 +
$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>
  
'''Controlador: ../geo/pais_controller.php'''
+
''' Vista: views/pais/index.phtml '''
  
 
<source lang='php'>
 
<source lang='php'>
<?php
+
<div class="content">
Load::models('ciudad', 'pais');
+
<?php echo View::content();?>
class PaisController extends AppController {
+
<h3>Paises</h3>
  public function index($page=1)
+
<ul>
  {
+
<?php foreach ($listPaises->items as $item):?>
    $pais = new Pais();
+
<li>
    $this->listPaises = $pais->getPaises($page);
+
<?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?>
  }
+
</li>
+
<?php endforeach;?>
  public function pageCiudades($page=1, $paisid=48)
+
</ul>
  {
+
<?php if($listPaises->prev) echo Html::linkAction("index/$listPaises->prev/", '<< Anterior |');?>
    $paises = new Pais();
+
<?php if($listPaises->next) echo Html::linkAction("index/$listPaises->next/", 'Próximo >>');?>
    $this->nombredelpais = $paises->getNombre($paisid);
+
</div>
    $ciudadespais = new Ciudad();
 
    $this->listCiudadesPais = $ciudadespais->getCiudadesPais($page, $paisid);
 
  }
 
}
 
?>
 
 
</source>
 
</source>
  
  
''' Vista: ../geo/pais/index.phtml '''
+
''' Vista: views/pais/ciudades.phtml'''
  
 
<source lang='php'>
 
<source lang='php'>
 
<div class="content">
 
<div class="content">
  <?php echo View::content();?>
+
<?php echo View::content();?>
  <h3>Paises</h3>
+
<h3>Ciudades de <?php echo $nombredelpais;?></h3>
  <ul>
+
<ul>
  <?php foreach ($listPaises->items as $item):?>
+
<?php foreach ($listCiudadesPais->items as $item):?>
  <li>
+
<li>
    <?php if ($item->id == 48) echo Html::link("geo/departamento/index/1/$item->id", $item->codigo); else echo Html::linkAction("pageCiudades/1/$item->id", $item->codigo);?> - <?php echo $item->nombre?> - <?php echo Html::img('banderas/' . 'flag_' . $item->codigo . '.gif', "$item->nombre")?>
+
<?php if ($item->codigo == "  ") echo "ZZZ"; else echo $item->codigo;?> - <?php echo $item->nombre;?>
  </li>
+
</li>
  <?php endforeach;?>
+
<?php endforeach;?>
  </ul>
+
</ul>
  <?php if($listPaises->prev) echo Html::linkAction("index/$listPaises->prev/", '<< Anterior |');?>
+
<?php if($listCiudadesPais->prev) echo Html::linkAction("ciudades/$listCiudadesPais->prev/$item->pais_id/", '<< Anterior |');?>
  <?php if($listPaises->next) echo Html::linkAction("index/$listPaises->next/", 'Próximo >>');?>
+
<?php if($listCiudadesPais->next) echo Html::linkAction("ciudades/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?>
 
</div>
 
</div>
 
</source>
 
</source>
  
  
''' Vista: ../geo/pais/pageCiudades.phtml'''
+
''' Vista: views/pais/departamentos.phtml'''
  
 
<source lang='php'>
 
<source lang='php'>
 
<div class="content">
 
<div class="content">
  <?php echo View::content();?>
+
<?php echo View::content();?>
  <h3>Ciudades de <?php echo $nombredelpais;?></h3>
+
<h3>Departamentos de <?php echo $nombredelpais;?></h3>
  <ul>
+
<ul>
  <?php foreach ($listCiudadesPais->items as $item):?>
+
<?php foreach ($listDepartamentosPais->items as $item):?>
  <li>
+
<li>
    <?php if ($item->codigo == "   ") echo "S/C"; else echo $item->codigo;?> - <?php echo $item->nombre;?>
+
<?php echo Html::link("departamento/ciudades/1/$item->id", str_pad($item->codigonumerico, 2, "0", STR_PAD_LEFT));?> - <?php echo $item->nombre;?>
  </li>
+
</li>
  <?php endforeach;?>
+
<?php endforeach;?>
  </ul>
+
</ul>
  <?php if($listCiudadesPais->prev) echo Html::linkAction("pageCiudades/$listCiudadesPais->prev/$item->pais_id/", '<< Anterior |');?>
+
<?php if($listDepartamentosPais->prev) echo Html::linkAction("departamentos/$listDepartamentosPais->prev/$item->pais_id/", '<< Anterior |');?>
  <?php if($listCiudadesPais->next) echo Html::linkAction("pageCiudades/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?>
+
<?php if($listDepartamentosPais->next) echo Html::linkAction("departamentos/$listDepartamentosPais->next/$item->pais_id/", 'Próximo >>');?>
 
</div>
 
</div>
 
</source>
 
</source>
  
 
+
''' Controlador: departamento_controller.php '''
''' Controlador: ../geo/departamento_controller.php '''
 
  
 
<source lang='php'>
 
<source lang='php'>
Línea 179: Línea 183:
 
Load::models('ciudad', 'departamento', 'pais');
 
Load::models('ciudad', 'departamento', 'pais');
 
class DepartamentoController extends ApplicationController {
 
class DepartamentoController extends ApplicationController {
  public function index($page=1, $paisid=48)
+
public function ciudades($page=1, $departamentoid=15)
  {
+
{
    $paises = new Pais();
+
$departamentos = new Departamento();
    $this->nombredelpais = $paises->getNombre($paisid);
+
$this->nombredeldepartamento = $departamentos->getNombre($departamentoid);
    $departamentospais = new Departamento();
+
$this->idpais = $departamentos->getIdPais($departamentoid);
    $this->listDepartamentosPais = $departamentospais->getDepartamentosPais($page, $paisid);
+
$paises = new Pais();
  }
+
$this->nombredelpais = $paises->getNombre($this->idpais);
  public function pageCiudades($page=1, $departamentoid=15)
+
$ciudadesdepartamento = new Ciudad();
  {
+
$this->listCiudadesDepartamento = $ciudadesdepartamento->getCiudadesDepartamento($page, $departamentoid);
    $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);
 
  }
 
 
}
 
}
 
?>
 
?>
 
</source>
 
</source>
  
 
+
''' Vista: views/departamento/ciudades.phtml'''
''' Vista: ../geo/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::linkAction("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: ../geo/departamento/pageCiudades.phtml'''
 
  
 
<source lang='php'>
 
<source lang='php'>
 
<div class="content">
 
<div class="content">
  <?php echo View::content();?>
+
<?php echo View::content();?>
  <h3>Ciudades de <?php echo $nombredeldepartamento;?> - <?php echo $nombredelpais;?></h3>
+
<h3>Ciudades de <?php echo $nombredeldepartamento;?> - <?php echo $nombredelpais;?></h3>
  <ul>
+
<ul>
  <?php foreach ($listCiudadesDepartamento->items as $item):?>
+
<?php foreach ($listCiudadesDepartamento->items as $item):?>
  <li>
+
<li>
    <?php if ($item->codigo == "  ") echo "S/C"; else echo $item->codigo;?> - <?php echo str_pad($item->codigonumerico, 3, "0", STR_PAD_LEFT);?> - <?php echo $item->nombre;?>
+
<?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>
+
</li>
  <?php endforeach;?>
+
<?php endforeach;?>
  </ul>
+
</ul>
  <?php if($listCiudadesDepartamento->prev) echo Html::linkAction("pageCiudades/$listCiudadesDepartamento->prev/$item->departamento_id/", '<< Anterior |');?>
+
<?php if($listCiudadesDepartamento->prev) echo Html::linkAction("index/$listCiudadesDepartamento->prev/$item->departamento_id/", '<< Anterior |');?>
  <?php if($listCiudadesDepartamento->next) echo Html::linkAction("pageCiudades/$listCiudadesDepartamento->next/$item->departamento_id/", 'Próximo >>');?>
+
<?php if($listCiudadesDepartamento->next) echo Html::linkAction("index/$listCiudadesDepartamento->next/$item->departamento_id/", 'Próximo >>');?>
 
</div>
 
</div>
 
</source>
 
</source>

Ten en cuenta que todas las contribuciones a KumbiaPHP Framework Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Proyecto:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)