Feb 29

Reutilizar un array en una vista (2)

Una vez resuelto el problema sobre la reutilización en una vista de un array de datos, he de puntualizar que esa no es la manera «correcta» de hacerlo con el sistema MVC, ya que en la vista no debe haber lógica, sino que tiene que ser el controlador quien proporcione tal información.

En el caso que nos ocupa lo correcto es que el controlador haga una nueva llamada a la función del modelo para obtener de nuevo los datos del array. Se que parece un poco más lento pero es lo que hay que hacer para que en la vista no haya lógica de programación.

De esta manera en el controlador habría algo así:

//pido las partidas de un torneo $id
$partidasTorneo = $this->Partidas_model->dame_partidas_torneo($id);
$partidasTorneo2 = $this->Partidas_model->dame_partidas_torneo($id);

//creo el array con el código de torneo y las partidas del torneo para la vista
$data = array (‘cdgotorneo’ => $id, ‘nombretorneo’ => $nombreTorneo, ‘rs_par’ => $partidasTorneo, ‘rs_par2’ => $partidasTorneo2, ‘rs_tor’ => $datosTorneo, ‘tor_exi’ => $torneosFinal);

De tal manera que en la vista utilizo $rs_par para la primera utilización de los datos, y luego utilizo $rs_par2 para utlizar los mismos datos por segunda vez.

Feb 27

Reutilizar un array en una vista

Tras enviar un array con los datos de una base de datos y recorrerlos en la vista para poder visualizarlos, tuve la necesidad de volver a utilizar ese array en la misma vista.

En principio pensé que volviendo a utilizar el array recibido era suficiente, pero no es así. Al parecer una vez terminado de recorrer, bien con un foreach o un while, el puntero del array no vuelve a funcionar.

Esto me proporcionó un gran dolor de cabeza hasta que encontré una solución. Posicionar el puntero en el elemento 0 (cero) del array mediante $rs_par->data_seek(0), y entonces pude volver a utilizar el array de nuevo.

Parecerá sencillo, pero me tiré dos días hasta que encontré la solución. Eso sí, aprendí algunas cosas de las array y su manejo con PHP.

// primera utilización del array $rs_par

while ($fila = mysqli_fetch_array($rs_par)) {…}

// segunda utilización del array $rs_par

$rs_par->data_seek(0);
while ($fila = mysqli_fetch_array($rs_par)) {…}