Feb 06

Inicio de webRepertorio4 con CodeIgniter

Funcionamiento

El controlador (inicio.php) hace las llamadas necesarias al modelo (torneos_model) para recopilar los datos necesarios para lanzar la vista (inicio.php).

La vista necesita los siguientes datos para mostrar la página de inicio:

  • la fecha del día (fecha_hoy)
  • el número de registros de la tabla torneos (num_tor)
  • el número de registros de la tabla partidas (num_par)
  • una tabla con los años en los que ha habido torneos, para cargar el menú lateral sólo con esos años (tor_exi).

El controlador pide los datos que necesita la vista al modelo

  • $numeroTorneos = $this->Torneos_model->dame_numero_torneos();
  • $numeroPartidas = $this->Torneos_model->dame_numero_partidas();
  • $torneosFinal = $this->Torneos_model->dame_torneos_existen();

y se los envía a la vista en un array de datos

  • $datos = array(‘fecha_hoy’ => $fecha_hoy, ‘num_tor’ => $numeroTorneos, ‘num_par’ => $numeroPartidas, ‘tor_exi’ => $torneosFinal);

El modelo realiza los cálculos necesarios mediante funciones para davolver los datos que le pide el controlador.

  • function dame_numero_torneos()
  • function dame_numero_partidas()
  • function dame_torneos_existen()

Los documentos de Inicio de webRepertorio4

Controlador: inicio.php

function index(){
//cargo el helper de url, con funciones para trabajo con URL del sitio
$this->load->helper(‘url’);

//cargo el helper de date, con funciones para trabajo con fechas del sitio
$this->load->helper(‘date’);
$fecha_ahora = now();

//preparando el dato de fecha de referencia para la página de inicio
$format = ‘DATE_W3C’;
$fecha = standard_date($format, $fecha_ahora);

//ponemos en $fecha_hoy la fecha en formato dd-mm-AAAA
$fecha_hoy = substr($fecha, 8, 2) . ‘-‘ . substr($fecha, 5, 2) . ‘-‘ . substr($fecha, 0, 4);

//ponemos en $fecha_tor la fecha en formato AAAA-mm-dd
$fecha_tor = substr($fecha, 0, 4) . ‘-‘ . substr($fecha, 5, 2) . ‘-‘ . substr($fecha, 8, 2);

//$fecha_partidas = date(‘Y-m-d’,strtotime(‘+7 days’, strtotime($fecha)));
$fecha_inipartidas = date(‘Y-m-d’,strtotime(‘+7 days’, strtotime($fecha)));
$fecha_finpartidas = date(‘Y-m-d’,strtotime(‘-7 days’, strtotime($fecha)));

//cargo el modelo de torneos
$this->load->model(‘Torneos_model’);

//preparando el cálculo del número de torneos en la base de datos mispartidas
$numeroTorneos = $this->Torneos_model->dame_numero_torneos();

//preparando el cálculo del número de partidas en la base de datos mispartidas
$numeroPartidas = $this->Torneos_model->dame_numero_partidas();

//preparar una tabla con sólo los años en los que existen torneos

$torneosFinal = $this->Torneos_model->dame_torneos_existen();

//recopilo en un array los datos de envío a la vista
$datos = array(‘fecha_hoy’ => $fecha_hoy, ‘num_tor’ => $numeroTorneos, ‘num_par’ => $numeroPartidas, ‘tor_exi’ => $torneosFinal);

//cargo la vista pasando el array con los datos recopilados
$this->load->view(‘inicio’, $datos);
}

Modelo: torneos_model.php

class Torneos_model extends CI_Model {

function __construct(){
parent::__construct();
}

function dame_numero_torneos(){
$mysqli = new mysqli(‘localhost’, ‘root’, », ‘mispartidas’);
//Indicar a la conexión de mysqli que use la codificacion UTF8 ¡¡¡MUY IMPORTANTE!!!
mysqli_set_charset($mysqli,»utf8″);

if ($mysqli->connect_errno) {
echo «Falló la conexión a MySQL: (» . $mysqli->connect_errno . «) » . $mysqli->connect_errno;
}

//$resultado = $mysqli->query(«SELECT mt_cdgo FROM torneos ORDER BY mt_cdgo ASC»);
$resultado = $mysqli->query(«SELECT * FROM torneos»);
return mysqli_num_rows($resultado);

// Cerrar la conexión.
mysqli_close($mysqli);

}

// ————————————————————————————————-

function dame_numero_partidas(){
$mysqli = new mysqli(‘localhost’, ‘root’, », ‘mispartidas’);

//Indicar a la conexión de mysqli que use la codificacion UTF8 ¡¡¡MUY IMPORTANTE!!!
mysqli_set_charset($mysqli,»utf8″);

if ($mysqli->connect_errno) {
echo «Falló la conexión a MySQL: (» . $mysqli->connect_errno . «) » . $mysqli->connect_errno;
}

$resultado2 = $mysqli->query(«SELECT * FROM partidas»);
return mysqli_num_rows($resultado2);

// Cerrar la conexión.
mysqli_close($mysqli);

}

// ————————————————————————————————-

function dame_torneos_anyo($id){
// $id viene en formato aaaa
$mysqli = new mysqli(‘localhost’, ‘root’, », ‘mispartidas’);

//Indicar a la conexión de mysqli que use la codificacion UTF8 ¡¡¡MUY IMPORTANTE!!!
mysqli_set_charset($mysqli,»utf8″);

if ($mysqli->connect_errno) {
echo «Falló la conexión a MySQL: (» . $mysqli->connect_errno . «) » . $mysqli->connect_errno;
}

$resultado3 = $mysqli->query(«SELECT * FROM torneos WHERE mt_anyo = ‘$id’ ORDER BY mt_cdgo ASC»);
return $resultado3;

// Cerrar la conexión.
mysqli_close($mysqli);

}

// ————————————————————————————————-

function dame_torneos_existen(){
$mysqli = new mysqli(‘localhost’, ‘root’, », ‘mispartidas’);

//Indicar a la conexión de mysqli que use la codificacion UTF8 ¡¡¡MUY IMPORTANTE!!!
mysqli_set_charset($mysqli,»utf8″);

if ($mysqli->connect_errno) {
echo «Falló la conexión a MySQL: (» . $mysqli->connect_errno . «) » . $mysqli->connect_errno;
}

// Se seleccionan de la base los torneos comprendidos entre 1987 y 2017

$resultado3 = $mysqli->query(«SELECT * FROM torneos WHERE ((mt_anyo > 1987) AND (mt_anyo < 2017))»);

// Se crea una tabla de 69 elementos conteniendo cada elemento un año desde 1988 hasta 2056

for ($i = 1; $i <= 69; $i++) {
$anyo[$i]=$i + 1987;
}

// inicializar tabla de años ($anyoexiste) que tienen torneos con valor cero
for ($i = 1; $i <= 69; $i++) {
$anyoexiste[$i]=0;
}

// contabilizamos el número de torneos existentes en cada año en la tabla $anyoexiste

$conta_mad = 0;
while ($fila = mysqli_fetch_array($resultado3)) {
$conta_mad += 1;
//echo «Torneo » . $conta_mad . «: » . $fila[‘mt_torneo’] . «
«;

for ($i = 1; $i <= 69; $i++) {
if ($anyo[$i] == $fila[‘mt_anyo’]) {
$anyoexiste[$i]++;
//echo «paso por este año» . $fila[‘mt_anyo’] . » – » . $i . » – » . $anyoexiste[$i] . «
«;
break;
}
}
}

// creamos una tabla ($torneosfinal) con aquellos años que SI tienen torneos en la tabla $anyoexiste
$k = 0;
for ($i = 1; $i <= 69; $i++) {
if ($anyoexiste[$i] |= 0) {
$k++;
$torneosfinal[$k] = $anyo[$i];
//echo $i . » – » . $anyo[$i] . » – » . $anyoexiste[$i] . «
«;
}
}
return $torneosfinal;

// Cerrar la conexión.
mysqli_close($mysqli);

}

Vista: Inicio.php

<!DOCTYPE html>
<head>
<meta charset=»utf-8″ />
<meta name=»viewport» content=»width=device-width, initial-scale=1.0″ />
<title>WebReperetorio4</title>
<?php include ‘includes/head0.inc’ ?>
</head>
<body>
<div id=»wrapper»>
<!– NAV TOP  –>
<?php include ‘includes/menu_superior0.inc’ ?>
<!– /. NAV TOP  –>

<!– Inicio Nav Lateral  –>
<?php include ‘includes/menu_lateral0.inc’ ?>
<!– Fin Nav Lateral  –>

<!– Inicio Page-wrapper –>
<div id=»page-wrapper» >

<!– Inicio Page Inner –>
<div id=»page-inner»>
<div class=»row»>
<div class=»col-md-12″>
<h2>Mi historial de Ajedrez</h2>
<h5>Bienvenido a la página del historial de mi ajedrez. </h5>
</div>
</div>
<!– /. ROW  –>
<hr />
<div class=»row»>
<div class=»col-md-6 col-sm-6 col-xs-6″>
<div class=»panel panel-back noti-box»>
<span class=»icon-box bg-color-red set-icon»>
<i class=»fa fa-envelope-o»></i>
</span>
<div class=»text-box» >
<p class=»main-text»><?php  echo $num_tor . » Torneos»; ?> </p>
<p class=»text-muted»>Torneos</p>
</div>
</div>
</div>
<div class=»col-md-6 col-sm-6 col-xs-6″>
<div class=»panel panel-back noti-box»>
<span class=»icon-box bg-color-green set-icon»>
<i class=»fa fa-bars»></i>
</span>
<div class=»text-box» >
<p class=»main-text»><?php  echo $num_par . » Partidas»; ?></p>
<p class=»text-muted»>Partidas</p>
</div>
</div>
</div>
</div>
<!– /. ROW  –>
<hr />
<?php
echo «Estos son los resultados <br />»;
echo $fecha_hoy . «<br />»;
echo $num_tor . » torneos<br />»;
echo $num_par . » partidas<br /><br />»;

$k = count($tor_exi);
echo «k = » . $k;
echo «<br /><br />»;

for ($i = 1; $i <= $k; $i++) {
echo «tor_exi(» . $i . «) – » . $tor_exi[$i] . «<br />»;
}

?>

</div>
<!– /. PAGE INNER  –>
</div>
<!– /. PAGE WRAPPER  –>
</div>
<!– /. WRAPPER  –>

<!– SCRIPTS -AT THE BOTOM TO REDUCE THE LOAD TIME–>
<?php include ‘includes/scripts0.inc’ ?>

</body>
</html>

Vista: menu_lateral0.inc

<nav class=»navbar-default navbar-side» role=»navigation»>
<div class=»sidebar-collapse»>
<ul class=»nav» id=»main-menu»>
<li class=»text-center»>
<img src=»assets/img/maseda_luis5_80.jpg» class=»user-image img-responsive»/>
</li>

<li>
<?php
echo ‘<a class=»active-menu»  href=»‘ . site_url(») . ‘»><i class=»fa fa-home fa-2x»></i> Inicio</a>’;
?>
</li>
<?php
$k = count($tor_exi);

for ($i = $k; $i >= 1; $i–) {
//for ($i = 1; $i <= $k; $i++) {
if ($tor_exi[$i] |= 0) {
echo ‘<li>’;
echo ‘<a href=»‘ . site_url(‘/torneosanyo/muestraanyo/’ . $tor_exi[$i]) . ‘»><i class=»fa fa-sitemap fa-2x»></i> ‘ . $tor_exi[$i] . ‘<span class=»fa arrow»></span></a>’;
echo ‘<li>’;
}
}
?>

</ul>

</div>

</nav>