Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/03/2017, 09:00
Triby2
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Tablas dinamicas con php y mysql

Vamos empezar por el principio, la base de datos.

Cuando trabajas con una BBDD, has de saber que la aplicación se construirá en base a BBDD, si la BBDD esta mal estructurada, el código estará mal construido, muy posiblemente feo y tendrás bugs que seguramente al repararlos aparecerán otros. Con lo cual la lógica y su estructura es lo más importante (para mi) cuando vas a construir una app con esa BBDD.

Así que reestructura la BBDD pues está bastante mal y eso que son pocos campos.

Esa tabla debería de ser:
-idDocumento
-TituloDocumento (tipo varchar, no números, no hay lógica de guardar un número para guardar el titulo en otro lado).
-Ruta
-Fecha (tipo datetime que guarda la fecha y la hora
- Titulo (no entiendo este campo pq no lo explicaste bien pero quizás sobre dependiendo de tu planteamiento)
- idArea

Para que te hagas una idea, de lo que solamente ganarías así, es que al tener un campo tipo datetime para almacenar la fecha de creación del documento, todos tus documentos podrán aparecer en orden ya que datetime = fecha y hora, con lo cual los documentos de un mismo día los podrás ordenar no solo por la fecha, por hora con un simple "ORDER BY Fecha ASC/DESC"

Explicanos el porque poner un numero en titulo documento y para qué sirve el campo titulo para ver si podemos mejorar tu BBDD y después nos podremos meter con el código.

En cuanto a lo que tomarás en cuenta nuestros consejos para mejorar el código... por mi experiéncia con otros compañeros, permiteme dudarlo así que te doy una idea de cómo debe de ser un código más o menos bonito.

Esto es tu mismo código, lo único que hize es identarlo con SublimeText menú Edit>Line>Reindent

Código PHP:
Ver original
  1. <?php
  2.  
  3. $añotrabajando=0;
  4. $fecha=0;
  5.  
  6.  
  7. while ($recorre = mysql_fetch_array($total)) {
  8.     $indicador=0;
  9.     $añotrabajando=$recorre[0];
  10.  
  11.     echo'<table class="fancyTable  año" id="'.$recorre[0].'" cellpadding="0" cellspacing="0">
  12.     <thead>
  13.         <tr>
  14.             <th style="text-align:center">Descripción</th>
  15.             <th style="text-align:center">Fecha</th>
  16.         </tr>
  17.     </thead>
  18.     <tbody>';
  19.  
  20.     $tabla = $objMetro->query("SELECT * from documentos where idArea= ".$_REQUEST['area']." order by año desc , mes desc ,dia desc, titulo asc");
  21.  
  22.     while ($recorremos = mysql_fetch_array($tabla)) {
  23.         if($recorre[0]==$recorremos[5]) {
  24.             if($recorremos[6]!=0) {
  25.                 if($indicador==0) {
  26.                     $indicador=1;
  27.  
  28.                     echo '<tr><td colspan="2"  style="text-align:center; background:#B5E1A7"><b>';
  29.  
  30.                     $titulo = $objMetro->query("SELECT * from titulos where idTitulo = ".$recorremos[6]);
  31.                     $titulo=mysql_fetch_array($titulo);
  32.  
  33.                     echo $titulo[2];
  34.                     echo'</b></td></tr>';
  35.  
  36.                     $filas = $objMetro->query("SELECT * from documentos where titulo= ".$recorremos[6]." and año= ".$recorremos[5]." and dia= ".$recorremos[3]." and mes= ".$recorremos[4]." order by año desc , mes desc ,dia desc, titulo asc");
  37.  
  38.                     echo '<tr><td> <ul>';
  39.  
  40.                     while ($filast = mysql_fetch_array($filas)) {
  41.                         echo'<li><a href="'.$filast[2].'" target="_blank">'.$filast[1].'</a></li><br>';
  42.                     }
  43.  
  44.                     echo'</ul></td><td>'.$recorremos[3].'/'.$recorremos[4].'/'.$recorremos[5].'</td></tr>';
  45.                 }
  46.             } else {
  47.                 echo '<tr><td>';
  48.                 echo'<a href="'.$recorremos[2].'" target="_blank">'.$recorremos[1].'</a>s<br>';
  49.                 echo'</td><td>'.$recorremos[3].'/'.$recorremos[4].'/'.$recorremos[5].'</td> </tr>';
  50.             }
  51.              
  52.             $indicador=0;
  53.         }
  54.     }
  55.     echo ' </tbody></table>';
  56. }

Última edición por Triby2; 29/03/2017 a las 09:09