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

De KumbiaPHP Framework Wiki
Línea 2: Línea 2:
  
 
Controlador: consultarpaises_controller.php
 
Controlador: consultarpaises_controller.php
 
+
<source lang='php'>
 
<?php
 
<?php
 
Load::models('pais');
 
Load::models('pais');
Línea 13: Línea 13:
 
}
 
}
 
?>
 
?>
 +
</source>
  
Modelo: pais.php
+
''' Modelo: pais.php '''
  
 +
<source lang='php'>
 
<?php
 
<?php
 
class Pais extends ActiveRecord {
 
class Pais extends ActiveRecord {
Línea 28: Línea 30:
 
}
 
}
 
?>
 
?>
 +
</source>
  
Vista: index.phtml de views/consultarpaises
+
''' Vista: index.phtml de views/consultarpaises '''
  
 +
<source lang='php'>
 
<div class="content">
 
<div class="content">
 
<?php echo View::content();?>
 
<?php echo View::content();?>
Línea 44: Línea 48:
 
<?php if($listPaises->next) echo Html::linkAction("index/$listPaises->next/", 'Próximo >>');?>
 
<?php if($listPaises->next) echo Html::linkAction("index/$listPaises->next/", 'Próximo >>');?>
 
</div>
 
</div>
 +
</source>
  
 
Como se nota con Html::link("consultarciudadespais/index/1/$item->id"?> permite el despliegue de las ciudades del respectivo pais entonces:
 
Como se nota con Html::link("consultarciudadespais/index/1/$item->id"?> permite el despliegue de las ciudades del respectivo pais entonces:
  
Controlador: consultarciudadespais_controller.php
+
''' Controlador: consultarciudadespais_controller.php '''
  
 +
<source lang='php'>
 
<?php
 
<?php
 
Load::models('ciudad', 'pais');
 
Load::models('ciudad', 'pais');
Línea 61: Línea 67:
 
}
 
}
 
?>
 
?>
 +
</sorce>
  
 
La funcion index tiene el parametro $paisid con default 48 que en mi caso es el id de Colombia
 
La funcion index tiene el parametro $paisid con default 48 que en mi caso es el id de Colombia
  
Modelo: ciudad.php
+
''' Modelo: ciudad.php '''
  
 +
<source lang='php'>
 
<?php
 
<?php
 
class Ciudad extends ActiveRecord {
 
class Ciudad extends ActiveRecord {
Línea 78: Línea 86:
 
}
 
}
 
?>
 
?>
 +
</source>
  
 
Al invocar paginate se debe incluir el parametro "pais_id = $paisid" con comillas dobles para que resuelva $paisid
 
Al invocar paginate se debe incluir el parametro "pais_id = $paisid" con comillas dobles para que resuelva $paisid
  
Vista: index.phtml de views/consultarciudadespais
+
''' Vista: index.phtml de views/consultarciudadespais '''
  
 +
<source lang='php'>
 
<div class="content">
 
<div class="content">
 
<?php echo View::content();?>
 
<?php echo View::content();?>
Línea 96: Línea 106:
 
<?php if($listCiudadesPais->next) echo Html::linkAction("index/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?>
 
<?php if($listCiudadesPais->next) echo Html::linkAction("index/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?>
 
</div>
 
</div>
 +
</sorce>
  
 
Ahora para Colombia el Html::link("consultardepartamentospais/index/1/$item->id"?> permite el despliegue de los departamentos del respectivo pais entonces:
 
Ahora para Colombia el Html::link("consultardepartamentospais/index/1/$item->id"?> permite el despliegue de los departamentos del respectivo pais entonces:
  
Controlador: consultardepartamentospais_controller.php
+
''' Controlador: consultardepartamentospais_controller.php '''
  
 +
<source lang='php'>
 
<?php
 
<?php
 
Load::models('departamento', 'pais');
 
Load::models('departamento', 'pais');
Línea 113: Línea 125:
 
}
 
}
 
?>
 
?>
 +
</sorce>
 +
  
Modelo: departamento.php
+
''' Modelo: departamento.php '''
  
 +
<source lang='php'>
 
<?php
 
<?php
 
class Departamento extends ActiveRecord {
 
class Departamento extends ActiveRecord {
Línea 132: Línea 147:
 
}
 
}
 
?>
 
?>
 +
</source>
  
Vista: index.phtml de views/consultardepartamentospais
+
''' Vista: index.phtml de views/consultardepartamentospais '''
  
 +
<source lang='php'>
 
<div class="content">
 
<div class="content">
 
<?php echo View::content();?>
 
<?php echo View::content();?>
Línea 148: Línea 165:
 
<?php if($listDepartamentosPais->next) echo Html::linkAction("index/$listDepartamentosPais->next/$item->pais_id/", 'Próximo >>');?>
 
<?php if($listDepartamentosPais->next) echo Html::linkAction("index/$listDepartamentosPais->next/$item->pais_id/", 'Próximo >>');?>
 
</div>
 
</div>
 +
</source>
 +
  
 
Como se nota Html::link("consultarciudadesdepartamento/index/1/$item->id"?> permite el despliegue de los departamentos del respectivo pais entonces:
 
Como se nota Html::link("consultarciudadesdepartamento/index/1/$item->id"?> permite el despliegue de los departamentos del respectivo pais entonces:
  
Controlador: consultarciudadesdepartamento_controller.php
+
''' Controlador: consultarciudadesdepartamento_controller.php '''
  
 +
<source lang='php'>
 
<?php
 
<?php
 
Load::models('ciudad', 'departamento', 'pais');
 
Load::models('ciudad', 'departamento', 'pais');
Línea 168: Línea 188:
 
}
 
}
 
?>
 
?>
 +
</source>
  
Vista: index.phtml de views/consultarciudadesdepartamento
+
''' Vista: index.phtml de views/consultarciudadesdepartamento '''
  
 +
<source lang='php'>
 
<div class="content">
 
<div class="content">
 
<?php echo View::content();?>
 
<?php echo View::content();?>
Línea 184: Línea 206:
 
<?php if($listCiudadesDepartamento->next) echo Html::linkAction("index/$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>
 +
  
 +
[[Categoría:Tutoriales KumbiaPHP]]
 
--[[Usuario:Cbeltranv|Cbeltranv]] 02:56 2 nov 2010 (UTC)
 
--[[Usuario:Cbeltranv|Cbeltranv]] 02:56 2 nov 2010 (UTC)

Revisión del 04:17 2 nov 2010

Ejemplo probado del uso de paginate en Beta 2

Controlador: consultarpaises_controller.php

<?php
Load::models('pais');
class ConsultarPaisesController extends ApplicationController {
	public function index($page=1)
	{
		$pais = new Pais();
		$this->listPaises = $pais->getPaises($page);
	}
}
?>

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;
	}
}
?>

Vista: index.phtml de views/consultarpaises

<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("consultardepartamentospais/index/1/$item->id", $item->codigo); else echo Html::link("consultarciudadespais/index/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>

Como se nota con Html::link("consultarciudadespais/index/1/$item->id"?> permite el despliegue de las ciudades del respectivo pais entonces:

Controlador: consultarciudadespais_controller.php

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

La funcion index tiene el parametro $paisid con default 48 que en mi caso es el id de Colombia

''' Modelo: ciudad.php '''

<source lang='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');
	}
}
?>

Al invocar paginate se debe incluir el parametro "pais_id = $paisid" con comillas dobles para que resuelva $paisid

Vista: index.phtml de views/consultarciudadespais

<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("index/$listCiudadesPais->prev/$item->pais_id/", '<< Anterior |');?>
	<?php if($listCiudadesPais->next) echo Html::linkAction("index/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?>
</div>
</sorce>

Ahora para Colombia el Html::link("consultardepartamentospais/index/1/$item->id"?> permite el despliegue de los departamentos del respectivo pais entonces:

''' Controlador: consultardepartamentospais_controller.php '''

<source lang='php'>
<?php
Load::models('departamento', 'pais');
class ConsultarDepartamentosPaisController 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);
	}
}
?>
</sorce>


''' Modelo: departamento.php '''

<source lang='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;
	}
}
?>

Vista: index.phtml de views/consultardepartamentospais

<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("consultarciudadesdepartamento/index/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>


Como se nota Html::link("consultarciudadesdepartamento/index/1/$item->id"?> permite el despliegue de los departamentos del respectivo pais entonces:

Controlador: consultarciudadesdepartamento_controller.php

<?php
Load::models('ciudad', 'departamento', 'pais');
class ConsultarCiudadesDepartamentoController extends ApplicationController {
	public function index($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: index.phtml de views/consultarciudadesdepartamento

<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("index/$listCiudadesDepartamento->prev/$item->departamento_id/", '<< Anterior |');?>
	<?php if($listCiudadesDepartamento->next) echo Html::linkAction("index/$listCiudadesDepartamento->next/$item->departamento_id/", 'Próximo >>');?>
</div>

--Cbeltranv 02:56 2 nov 2010 (UTC)