public function autolistar($condicion = 'id<>0', $editar = '', $eliminar = '', $recuperar = '', $tabla = '') { include_once 'diseno.php'; $pg = new Diseno(); $vista = '<center><table class="tablalista">'; $syntax = 'SELECT COLUMN_NAME, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA="' . $this->db->database() . '" AND TABLE_NAME="' . $this->estatabla . '" AND COLUMN_COMMENT LIKE "%listar:SI%"'; // Consulta sql para obtener los comentarios de los campos de esta tabla //echo '['.$syntax.']<br><br><br>'; $this->db->query($syntax); // Registros del sql $lineas = $this->db->rows(); // cantidad de lineas de la consulta sql if (empty($lineas)) { $vista .= '<tr><td>No se ha definido ningun registro para mostrarse...!</td></tr>'; } else { $campos = array(); $comentaux = array(); $datas = $this->db->getrecordstoarray(); // trae una matriz con cada uno de los registros de comentarios... $lostitulos = $this->db->rows(); // cantidad de lineas de la consulta sql que representan los campos a listar foreach ($datas as $dex => $columna) { $campos[$dex] = $columna['COLUMN_NAME']; $comentario = $columna['COLUMN_COMMENT']; $comentaux[$dex] = $comentario; $cols++; //--------------------------------------------------------------------------------------------------------------------------------- // PARA DEFINIR EL TIPO DE EDICION O DISPLAY DE CADA COLUMNA // $mostrar[$dex] = ''; // recuerda aqui definir el tipo de display que va a tener este campo (si es radio o check o FK o dropdown) //--------------------------------------------------------------------------------------------------------------------------------- // PARA DEFINIR EL TITULO DE CADA COLUMNA // if ($campos[$dex] !== 'id') { // De ser el campo distinto de id $ps1 = strpos($comentario, 'nombre:'); if ($ps1 === false) { $titulos[$dex] = $campos[$dex]; // cuando no encuentra nombre entonces el titulo es el campo... } else { $ps2 = strpos($comentario, ";", $ps1 + 7); if ($ps2 === false) { $titulos[$dex] = substr($comentario, $ps1 + 7); // cuando no encuentre el ; del nombre: ... } else { $titulos[$dex] = substr($comentario, $ps1 + 7, $ps2 - ($ps1 + 7)); // cuando encuentre nombre: y el ; } } } //--------------------------------------------------------------------------------------------------------------------------------- } $vista .= '<tr> <th style="width:50px;">' . $pg->enlace('./?accion=' . $editar . '&opc=0', 'Agregar', $pg->imagen('./imagenes/add.png" style="margin-top:1px;"')) . ' </th>'; foreach ($titulos as $dex => $titulo) { $vista .= '<th>' . $titulo . '</th>'; //linea de titulos } $vista .= '</tr>'; $pnt = $this->buscardonde($condicion, 0); if (!$pnt) { $vista .= '<tr><td>No se ha encontrado ningun registro para mostrarse...!</td></tr>'; //En caso de que la tabla se ecuentre vacia } else { $areg = $this->db->getrecordstoarray(); //En caso de que existan registros en la tabla foreach ($areg as $idx => $reg) { $vista .= '<tr> <td style="width:70px">' . $pg->enlace('./?accion=' . $eliminar . '&id=' . $reg['id'], 'eliminar', $pg->imagen('./imagenes/delete.png" " style="margin-top:1px;"')) . $pg->enlace('./?accion=' . $editar . '&opc=' . $reg['id'], 'editar', $pg->imagen('./imagenes/edit.png" " style="margin-top:1px;"')) . '</td>'; //Iconos de Eliminaci\F3n y de Edici\F3n respectivamente $c = 1; foreach ($reg as $campo => $valor) { // Obtensi\F3n de los valores de los campos de la tabla $dex = 0; foreach ($campos as $campot) { $dex++; $comentario = $comentaux[$dex]; if ($campo !== 'id') { if ($campot === $campo) { $ps1 = !(strpos($comentario, 'edicion:dropdown') === false); $ps2 = !(strpos($comentario, 'referencia:') === false); if ($ps1 and $ps2) { $ps1 = strpos($comentario, 'referencia:'); // Se obtiene la referencia $ps2 = strpos($comentario, ";", $ps1 + 11); $tablareferencia = substr($comentario, $ps1 + 11, $ps2 - ($ps1 + 11)); $syntax = 'SELECT COLUMN_NAME, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA="' . $this->db->database() . '" AND TABLE_NAME="' . $tablareferencia . '" AND COLUMN_COMMENT LIKE "%desplegar:SI%"'; //Sql para tomar tabla referenciada $this->db->query($syntax); $camporef = ''; while ($rows = $this->db->fetch()) { $camporef .= $rows[0] . ','; } $syntax = 'SELECT ' . $camporef . ' FROM ' . $tablareferencia . ' WHERE id=' . $valor; //Sentencia SQL para recuperar valor de los campos para listarlos $syntax = str_replace(', FROM', ' FROM', $syntax); $valor = ''; $this->db->query($syntax); while ($rows1 = $this->db->fetch()) { $valor = $rows1[0] . ' ' . $rows1[1]; //============trampa de bruja //=========================== } } $ps1 = !(strpos($comentario, 'edicion:radio') === false); $ps2 = strpos($comentario, 'valores:') === false; if ($ps1 and $ps2) { if ($valor == 0) { $valor = null; } else { $valor = $pg->imagen('./imagenes/close.png" style="margin-top:1px;"'); } } $vista .= '<td class="mant">' . $valor . '</td>'; // Se muestran los registros en pantalla } } } } $vista .= '</tr>'; } } } $vista .= '<tr><td colspan="3">' . $pg->enlace('./?accion=' . $editar . '&opc=0', 'Agregar', $pg->imagen('./imagenes/add.png " style="margin-top:1px;"')) . ' </td></tr> </table></center>'; $vista = $pg->mensaje('Listado de ' . $tabla, $vista, '', '.', $pg->colorweb2('azul'), $pg->colorweb2('amarillo')); return $vista; }