Jul 29

Nueva estrategia

Una vez finalizada la conversión de la web de MySql a MySqli y del aumento del tamaño del código de torneo, tenía previsto realizar el cambio inmediatamente en Ajedrez en Madrid.

Sin embargo he estado pensando y he llegado a la conclusión de que es un buen momento para acometer otros cambios que quiero realizar en la web, y mientras el problema de seguir utilizando MySql no impida el funcionamiento de la web, puedo ir avanzando en otras mejoras en Ajedrez8x8 y en un momento «especial» volcar todas las novedades de golpe. Algo así como darle más contenido a la versión 4.0 que estoy realizando.

De alguna manera me he quitado la presión de que se me quede colgada la web porque tengo muy bien documentado todo lo que tendría que hacer para que fuera operativa. Lo cual no tardaría más de un día en tenerlo todo en marcha.

Así que ahora toca dedicarse a las mejoras que se me han ido ocurriendo durante este tiempo:

  • Cambiar el diseño de la página principal, diferenciando noticias, problemas y torneos.
  • Cambiar la información de los torneos (rondas, clasificación, orden de fuerza, bases) de manera que vayan en ficheros diferentes y así poder utilizar esos datos para generar información en la página principal.
  • Generar noticias a partir de torneos. Esto implicará tablas de rondas y clasificaciones específicas. Esta será una tarea compleja, pero que si la saco adelante reduciré el trabajo y daré más vistosidad a la web.

 

 

Jul 27

Cambiar MySql por MySqli

Aunque tengo ya preparado el cambio del tamaño del código de torneo, mi atención se ha desviado ahora al cambio de la conexión a las bases de datos ¿porqué?

Pues porque la conexión MySql está obsoleta, y en cualquier momento me puedo quedar con la web colgada. Así que mi objetivo prioritario ahora es solucionar este problema.

 

Empezando cambios

  • application/config/database.php -> $db[‘default’][‘dbdriver’] = ‘mysqli’;
  • application/controllers/noticia.php -> $filanoticia = mysqli_fetch_array($ssqldatos_noticia);
  • application/models/torneos_model.php -> reemplazar mysql_query por mysqli_query
  • system/database/DB_driver.php -> var $dbdriver = ‘mysqli’;
  • application/views/plantillas/inicio_titulares_noticias.php -> if (mysqli_num_rows($rs_hoytitulares)!=0){
    while ($fila = mysqli_fetch_array($rs_hoytitulares)) {
  • En todas las funciones que contengan return mysql_query, incluir la línea que define el $link, la línea que define el encoding UTF8 y añadir ese parámetro a la instrucción mysqli_query
    • $link = mysqli_connect(«localhost», «luismase_admin», «Rioja/17»,
    • if (!$link->set_charset(«utf8»)); «Esto es muy importante para evitar que salgan ñakas en lugar de acentos y ñ» Más información
    • return mysqli_query($link, $ssqlultorpub);
  • En todas las vistas(inicio_noticias.php, inicio_partidas_en_directo.php, inicio_partidas_actualidad.php, inicio_fotos_actualidad.php) que contengan if (mysql_num_rows($rs_hoynoticias)!=0) o if (mysql_num_rows($rs_hoytorneos)!=0) sustituirlos respectivamente por:
    • if(!empty($rs_hoynoticias) AND mysqli_num_rows($rs_hoynoticias) > 0)
    • if(!empty($rs_hoytorneos) AND mysqli_num_rows($rs_hoytorneos) > 0)
  • application\views\plantillas\inicio_partidas_en_directo.php sustituir:
    • $contaTordir = mysqli_num_rows($rs_tordir);
    • $contaDir = mysqli_num_rows($rs_dir);
  • application\views\plantillas\inicio_partidas_actualidad.php sustituir:
    • $contaToract = mysql_num_rows($rs_toract); -> $contaToract = mysqli_num_rows($rs_toract);
  • application\views\plantillas\inicio_fotos_actualidad.php sustituir:
    • $contaFotos = mysql_num_rows($rs_fotos); -> $contaFotos = mysqli_num_rows($rs_fotos);
  • application\views\plantillas\inicio_proximos_torneos.php incluir delante del while la línea y modificar el while:
    • if(!empty($rs_protorneos20) AND mysqli_num_rows($rs_protorneos20) > 0) {
    • while ($fila = mysql_fetch_array($rs_protorneos20)) { -> while ($fila = mysqli_fetch_array($rs_protorneos20)) {
    • Añadir un } tras el cierre del while.
  • application\views\plantillas\inicio_torneos_finalizados.php incluir delante del while la línea y modificar el while:
    • if(!empty($rs_fintorneos20) AND mysqli_num_rows($rs_fintorneos20) > 0) {
    • while ($fila = mysql_fetch_array($rs_fintorneos20)) { -> while ($fila = mysqli_fetch_array($rs_fintorneos20)) {
    • Añadir un } tras el cierre del while.
  • application\views\plantillas\lista_torneos_julio.php incluir delante del while la línea y modificar el while:
    • if(!empty($rs_torneos07) AND mysqli_num_rows($rs_torneos07) > 0) {
    • while ($fila = mysql_fetch_array($rs_torneos07)) { -> while ($fila = mysqli_fetch_array($rs_torneos07)) {
    • $conta_jul += 1;
    • $c_pgn_jul += $fila[‘numpartidas_torneo’];
    • Añadir un } tras el cierre del while.
  • Realizar la operación anterior en las siguientes plantillas cambiando los datos relativos a cada mes: $rs_torneosxx y $conta_xxx 
    • application\views\plantillas\
      • lista_torneos_enero.php
      • lista_torneos_febreroo.php
      • lista_torneos_marzoo.php
      • lista_torneos_abril.php
      • lista_torneos_mayo.php
      • lista_torneos_junio.php
      • lista_torneos_agosto.php
      • lista_torneos_septiembre.php
      • lista_torneos_octubre.php
      • lista_torneos_noviembre.php
      • lista_torneos_diciembre.php
  • application\views\plantillas\lista_torneos_anual.php incluir delante del while la línea y modificar el while:
    • if(!empty($rs_torneos01) AND mysqli_num_rows($rs_torneos01) > 0) {
    • while ($fila = mysql_fetch_array($rs_torneos01)) { -> while ($fila = mysqli_fetch_array($rs_torneos01)) {
  • application\views\plantillas\lista_torneos_menu_anyodejuego.php añadir líneas de 2019 y 1999 (Esto de momento es manual, pero habrá que automatizarlo).

 

 

Jul 25

Primera prueba general

Voy a realizar el cambio masivo de los códigos de torneo en las dos tablas (torneos y noticias). Para ello, de nuevo, voy a volver a cargar las tablas originales, cambiar los tamaños de campos y comenzar a realizar las sentencias sql para realizar el cambio de los datos.

Paso 1 – Duplicado de tablas originales.

  • tabla_torneos -> tabla_torneos_8x8
  • tabla_noticias -> tabla_noticias_8x8

Paso 2 – Estructura – Cambio de tamaño de campos de código de torneo de 8 a 10 posiciones.

  • tabla_torneos_8x8
    • cdgo_torneo VARCHAR 10
    • anterior_torneo VARCHAR 10
    • siguiente_torneo VARCHAR 10
    • historial_torneo VARCHAR 10
    • certamen_torneo VARCHAR 10
  • tabla_noticias_8x8
    • torneo_noticia VARCHAR 10

Paso 3 – Copias de seguridad – Con las tablas modificadas genero unas nuevas copias de seguridad a partir de éstas.

  • tabla_torneos_8x8 -> tabla_torneos_8x8_copia
  • tabla_noticias_8x8 -> tabla_noticias_8x8_copia

Paso 4 – Cambiar códigos de torneo en tabla_torneos_8x8.

  • UPDATE tabla_torneos_8x8 SET cdgo_torneo = CONCAT(’20’, cdgo_torneo); -> 11.532
  • UPDATE tabla_torneos_8x8 SET anterior_torneo = CONCAT(’20’, anterior_torneo) WHERE anterior_torneo NOT LIKE »; -> 6.183
  • UPDATE tabla_torneos_8x8 SET siguiente_torneo = CONCAT(’20’, siguiente_torneo) WHERE siguiente_torneo NOT LIKE »; -> 6.183
  • UPDATE tabla_torneos_8x8 SET historial_torneo = CONCAT(’20’, historial_torneo) WHERE historial_torneo NOT LIKE »; ->  5.094
  • UPDATE tabla_torneos_8x8 SET certamen_torneo = CONCAT(’20’, certamen_torneo) WHERE certamen_torneo NOT LIKE »; -> 2.083

Paso 5 – Cambiar código de torneo en tabla_noticias_8x8.

  • UPDATE tabla_noticias_8x8 SET torneo_noticia = CONCAT(’20’, torneo_noticia) WHERE torneo_noticia NOT LIKE »; -> 12.409

Paso 6 – En el visor de partidas también hay que hacer cambios.

Hay que cambiar en el fichero application/views/visor_partidas.php las siguientes líneas referidas a la creación de la ruta para la localización del fichero pgn.

  • <a class=»linkItem» href=»<?php echo base_url(‘visor/20’ . substr($rs_tor[‘cdgo_torneo’], 0, 2) . ‘/’ . $rs_tor[‘partidas_torneo’] . ‘.pgn’)?>»><div class=»downloadlogo»></div></a>
  • <?php $urlpartidas = ‘visor/’ . substr($rs_tor[‘cdgo_torneo’], 0, 4) . ‘/’ . $rs_tor[‘partidas_torneo’] . ‘.pgn’;?>

 

  • SetPgnUrl(«<?php echo base_url(‘visor/20’ . substr($rs_tor[‘cdgo_torneo’], 0, 2)) . ‘/’ . $rs_tor[‘partidas_torneo’] . ‘.pgn’?>»);
  • SetPgnUrl(«<?php echo base_url(‘visor/’ . substr($rs_tor[‘cdgo_torneo’], 0, 4)) . ‘/’ . $rs_tor[‘partidas_torneo’] . ‘.pgn’?>»);

Paso 7 – Descarga de partidas

En el fichero application/views/plantillas/torneo_lado_izq.php cambiar las siguientes líneas referidas a la creación de la ruta para la localización de las descargas cbv y zip de partidas.

  • echo ‘<a href=»‘ . base_url(‘partidas/20’ . substr($rs_tor[‘cdgo_torneo’], 0, 2) . ‘/’ . $rs_tor[‘pgn_torneo’]) . ‘» class=»list-group-item»><span class=»glyphicon glyphicon-save»></span> PGN</a>’;
  • echo ‘<a href=»‘ . base_url(‘partidas/’ . substr($rs_tor[‘cdgo_torneo’], 0, 4) . ‘/’ . $rs_tor[‘pgn_torneo’]) . ‘» class=»list-group-item»><span class=»glyphicon glyphicon-save»></span> PGN</a>’;

 

  • echo ‘<a href=»‘ . base_url(‘partidas/20’ . substr($rs_tor[‘cdgo_torneo’], 0, 2) . ‘/’ . $rs_tor[‘cbv_torneo’]) . ‘» class=»list-group-item»><span class=»glyphicon glyphicon-save»></span> CBV</a>’;
  • echo ‘<a href=»‘ . base_url(‘partidas/’ . substr($rs_tor[‘cdgo_torneo’], 0, 4) . ‘/’ . $rs_tor[‘cbv_torneo’]) . ‘» class=»list-group-item»><span class=»glyphicon glyphicon-save»></span> CBV</a>’;

 


Proceso concluido

Los cambios se han realizado sin errores.

He comprobado los torneos, la navegación entre ediciones, el historial y el certamen cuando lo hay y el visor y descarga de partidas, y todo funciona aparentemente bien.

Si todo está correcto, con estos cambios ya estaría cambiado el código de torneo para la web Ajedrez en Madrid

Jul 25

Pensamiento adelantado

Ya sé que no he solucionado todavía el cambio de tamaño del código de torneo, aunque creo que voy por el buen camino.

Sin embargo se me amontonan en la cabeza los cambios que quiero hacer en el tema de generar los torneos de otra manera (con tablas de rondas y clasificaciones por separado) y que las noticias salgan automáticamente a partir de esas tablas.

Lo primero que se me ocurre es que las tablas de resultados y clasificaciones han de tener una clave común, que será el código de torneo al que pertenecen.

Además deben tener una fecha de referencia para la generación automática de noticias.

También habrá que distinguir la publicación de torneos de modo nuevo y antiguo, es decir, no creo que pueda cambiar los miles de torneos que tengo ya en la tabla al nuevo formato, ya que eso hay que hacerlo de uno en uno. Por lo tanto habrá que tener un campo que indique a la web si el visionado de ese torneo se va a hacer por el método antiguo o el nuevo.

De esta manera podré ir «modernizando» los datos de torneos tranquilamente.

Tal vez el problema surja con las noticias de torneos antiguos y la nueva forma de presentar las noticias, que se basará en la fecha del sistema y la fecha adjudicada a cada entrada de ronda y clasificación en las  correspondientes tablas.

 

Jul 25

Primeros pasos

Una vez he cambiado los códigos de torneo en los tres registros de prueba (cto.Madrid semifinal 18/19 – 2019050650, Alpedrete 2019 – 2019060200, Benasque 2019 – 2019070400) encuentro los primeros errores.

Da error en:

  • el include torneos/2020/19_benasque.txt.
  • views/muestra_torneo.php – línea 38

Sustituir la línea:

<?php include ‘torneos/20’ . substr($rs_tor[‘cdgo_torneo’], 0, 2) . ‘/’ . $rs_tor[‘info_torneo’]?>

 

 

por

<?php include ‘torneos/’ . substr($rs_tor[‘cdgo_torneo’], 0, 4) . ‘/’ . $rs_tor[‘info_torneo’]?>

 

 

Se trata de acceder al directorio torneos/2019, que en la versión actual da por hecho el 20 en la cadena de caracteres, y en la nueva versión, al venir ya el año incluido en el código, se coge el año completo. De esta manera podremos tener subdirectorios de torneos anteriores al año 2000.

Ahora la búsqueda de torneos anteriores y siguientes da errores porque esos torneos no tienen el nuevo formato. Para poder probar que la navegación es correcta voy a cambiar los torneos de Alpedrete 60+30 incluyendo en todos los dos dígitos del año delante del código, para comprobar la navegación entre torneos.

También hay que cambiar los códigos de anterior_torneo, siguiente_torneo, historial_torneo y certamen_torneo. Cambiando los campos de 8 a 10 posiciones, y luego modificando los datos incluyendo el 20 delante de cada código correspondiente.

El siguiente punto que no funciona es el enlace a Noticias publicadas. Esto se debe a que en la tabla de noticias el código de torneo con el 20 delante no existe.

Actualizo el dato de la noticia del torneo y funciona correctamente. Ahora está el tema de si hay que cambiar también el código de la noticia con el 20 delante, ya que esto puede afectar a la primera página que es donde se reflejan las noticias ???

Pensamiento

El objeto de esta reforma es poder publicar información de torneos anteriores al año 2000. Pero me pregunto si además de la información del torneo son necesarias noticias. Creo que no, así que, de momento, el código de noticia se queda en 8 posiciones.

Para modificar masivamente el campo torneo_noticia de la tabla noticias he utilizado la siguiente sentencia sql, haciendo referencia al torneo de Benasque de 2019.

UPDATE `tabla_noticias_8x8` SET `torneo_noticia`= CONCAT(’20’, torneo_noticia) WHERE torneo_noticia LIKE ‘19070400’

 

 

Esto podría servir para cambiar todos los campos en los que hay que añadir el 20 a los códigos de torneo en toda la tabla.

 

Llegados a este punto estoy pensando en volver a cargar las tablas originales y hacer un reemplazo masivo de todos los códigos de torneo, tanto en la tabla torneos como en la de noticias, incluyendo el 20 al inicio del campo.

Y a partir de ahí empezar a arreglar los problemas que puedan surgir. que supongo que harán referencia a las noticias de la primera página. Va a ser interesante este paso.

Jul 25

Preparativos previos 1

Para tener datos más actuales vuelvo al punto de origen de las tablas y realizo los primeros cambios pertinentes.

Cargo las tablas: tabla_torneos_8x8 y tabla_noticias_8x8, para actualizar la información de alguno de estos torneos.

Cambio las claves cdgo_torneo (tabla_torneos_8x8) y torneo_noticia (tabla_noticias_8x8) a 10 caracteres para empezar a realizar cambios.

Continúo trabajando con tres torneos típicos para ir solventando los problemas que van surgiendo en los cambios de código de torneo (¿y código de noticia?)

  • 19060200Alpedrete (Noticia única de clasificación final).
  • 19050650Final Madrid 2018/2019 (Noticias de rondas y clasificación de tamaño normal).
  • 19070400Benasque (Noticias de rondas y clasificación final de tamaño grande).
Jul 25

Posibilidades para incluir los dos primeros dígitos del año en la clave

Ante la situación de cambiar la clave para incluir los dos primeros dígitos del año, me surgen algunas dudas entre las posibilidades que se me ocurren. Paso a ampliar la información.

  • Opción 1 – Ampliar la clave a diez posiciones incluyendo al principio ó al final de la cadena los dos primeros dígitos del año.

Consecuencias: Todos los enlaces anteriores no funcionarán, por lo que si alguien tiene un enlace directo a un torneo desde su web éste no fuucionará.

  • Opción 2 – – Añadir un campo nuevo de dos posiciones externo a la clave para mantener la clave actual tal como está.

 


Creo que voy a optar por la primera opción, a fin de cuentas la web es mía y si alguien tiene enlaces directos a mis páginas interiores no me está contando visitas y de alguna manera se salta lo que a mi me interesa: el paso por primera página.

Y ya puestos pienso que lo más sencillo es incluir los dos dígitos al principio del código.

Jul 22

Pruebas de torneos

Voy a trabajar con tres torneos típicos para ir solventando los problemas que van surgiendo en los cambios de código de torneo (¿y código de noticia?)

  • 19060200Alpedrete (Noticia única de clasificación final).
  • 19050650Final Madrid 2018/2019 (Noticias de rondas y clasificación de tamaño normal).
  • 19070400Benasque (Noticias de rondas y clasificación final de tamaño grande).

De nuevo he cargado las tablas: tabla_torneos_8x8 y tabla_noticias_8x8, para actualizar la información de alguno de estos torneos.

Al igual que hice anteriormente cambio las claves cdgo_torneo (tabla_torneos_8x8) y torneo_noticia (tabla_noticias_8x8) a 10 caracteres para empezar a realizar cambios.

Jul 22

Probando con el cambio de tamaño de código de torneo

Empiezo por realizar unas pruebas sobre ajedrez8x8.com para cambiar la clave de torneo de 8 a 10 caracteres.

En primer lugar he cambiado la longitud del campo de 8 a 10 caracteres mediante phpMyAdmin, y aparentemente todo funciona. Supongo que al tratarse de una cadena alfanumérica le da igual el tamaño.

Otra cosa será en alguna parte de la programación donde trate el código para obtener una fecha, ya que ahí si habrá problemas.

De momento estoy  tratando de hacer pruebas con un registro en concreto, pero me he encontrado con la sorpresa de que hay registros del fichero de noticias que no tienen código de torneo. Algo que desconocía, así que otra tarea más la de asignar esos códigos a las noticias que no los tienen.

Jul 21

¿A qué mejora me enfrento primero?

Ahora que tengo todo preparado tengo que decidir por donde empiezo a trabajar.

La idea es que según vaya realizando alguna mejora consolidada la trasladaré a Ajedrez en Madrid.

¿Por donde empezar? Existen tres opciones:

  • Pasar la clave de 8 a 10 posiciones para incluir el año completo en la clave.
  • Cambiar el acceso a base de datos de mysql a mysqli.
  • Cambiar la versión de codeIgniter de 2.0 a 3.0