コード例 #1
0
ファイル: calendario.php プロジェクト: udistrital/higia
 function miForm()
 {
     // Rescatar los datos de este bloque
     $esteBloque = $this->miConfigurador->getVariableConfiguracion("esteBloque");
     $miPaginaActual = $this->miConfigurador->getVariableConfiguracion('pagina');
     $directorio = $this->miConfigurador->getVariableConfiguracion("host");
     $directorio .= $this->miConfigurador->getVariableConfiguracion("site") . "/index.php?";
     $directorio .= $this->miConfigurador->getVariableConfiguracion("enlace");
     $rutaBloque = $this->miConfigurador->getVariableConfiguracion("host");
     $rutaBloque .= $this->miConfigurador->getVariableConfiguracion("site") . "/blocks/";
     $rutaBloque .= $esteBloque['grupo'] . '/' . $esteBloque['nombre'];
     // ---------------- SECCION: Parámetros Globales del Formulario ----------------------------------
     /**
      * Atributos que deben ser aplicados a todos los controles de este formulario.
      * Se utiliza un arreglo
      * independiente debido a que los atributos individuales se reinician cada vez que se declara un campo.
      *
      * Si se utiliza esta técnica es necesario realizar un mezcla entre este arreglo y el específico en cada control:
      * $atributos= array_merge($atributos,$atributosGlobales);
      */
     $atributosGlobales['campoSeguro'] = 'true';
     $_REQUEST['tiempo'] = time();
     // ---------------- SECCION: Parámetros Generales del Formulario ----------------------------------
     $esteCampo = $esteBloque['nombre'];
     $atributos['id'] = $esteCampo;
     $atributos['nombre'] = $esteCampo;
     // Si no se coloca, entonces toma el valor predeterminado 'application/x-www-form-urlencoded'
     $atributos['tipoFormulario'] = 'multipart/form-data';
     // Si no se coloca, entonces toma el valor predeterminado 'POST'
     $atributos['metodo'] = 'POST';
     // Si no se coloca, entonces toma el valor predeterminado 'index.php' (Recomendado)
     $atributos['action'] = 'index.php';
     // $atributos ['titulo'] = $this->lenguaje->getCadena ( $esteCampo );
     // Si no se coloca, entonces toma el valor predeterminado.
     $atributos['estilo'] = '';
     $atributos['marco'] = true;
     $tab = 1;
     // ---------------- FIN SECCION: de Parámetros Generales del Formulario ----------------------------
     // ----------------INICIAR EL FORMULARIO ------------------------------------------------------------
     $atributos['tipoEtiqueta'] = 'inicio';
     echo $this->miFormulario->formulario($atributos);
     unset($atributos);
     // ---------------- SECCION: Controles del Formulario -----------------------------------------------
     // ----------------INICIAR EL CALENDARIO -----------------------------------------------------------
     $esteCampo = "Calendario1";
     $atributos['id'] = $esteCampo;
     // Enlace que lleva a la funcion de PHP invocada por AJAX
     $cadenaACodificar = "pagina=" . $miPaginaActual;
     $cadenaACodificar .= "&procesarAjax=true";
     $cadenaACodificar .= "&action=index.php";
     $cadenaACodificar .= "&bloqueNombre=" . $esteBloque["nombre"];
     $cadenaACodificar .= "&bloqueGrupo=" . $esteBloque["grupo"];
     $cadenaACodificar .= "&funcion=consultarAgenda";
     $cadenaACodificar .= "&tiempo=" . $_REQUEST['tiempo'];
     // Codificar las variables
     $cadena = $this->miConfigurador->fabricaConexiones->crypto->codificar_url($cadenaACodificar);
     // URL definitiva
     $urlPeticion = $directorio . $cadena;
     $atributos["enlace"] = $urlPeticion;
     $contenidoCalendario = $this->miFormulario->getCalendario($atributos);
     unset($atributos);
     // ----------------FIN EL CALENDARIO ---------------------------------------------------------------
     // ----------------INICIO OBTENER DATOS ACCORDIONCONTAINER -----------------------------------------------------------
     $conexion = 'bienestar';
     $esteRecursoDB = $this->miConfigurador->fabricaConexiones->getRecursoDB($conexion);
     $cadenaSql = $this->miSql->getCadenaSql('buscarModalidades', '');
     $resultado = $esteRecursoDB->ejecutarAcceso($cadenaSql, 'busqueda');
     /**
      * La estructura de árbol se ha basado en el proyecto:
      * https://github.com/JorgeUlises/treePHP
      * Rediríjase allí para consultar el concepto.
      */
     /**
      * Se crea un arbol a partir de las filas resultantes de una consulta SQL y los Id's de las Filas.
      */
     function crearArbol($resultado, $ids)
     {
         foreach ($ids as $index => $id) {
             $valores[$index] = array_values(array_column($resultado, $id));
         }
         function agregar(&$obj, $niveles, $valores, $inicial = 0)
         {
             if ($inicial == $niveles) {
                 return true;
             } else {
                 if (!isset($obj[$valores[$inicial]])) {
                     $obj[$valores[$inicial]] = array();
                 }
                 $objen =& $obj[$valores[$inicial]];
                 $inicial++;
                 agregar($objen, $niveles, $valores, $inicial);
             }
         }
         $arreglo = array();
         $niveles = count($valores);
         foreach ($valores[0] as $index => $valor) {
             for ($i = 0; $i < $niveles; $i++) {
                 $valoresNivel[$i] = $valores[$i][$index];
             }
             agregar($arreglo, $niveles, $valoresNivel);
         }
         return $arreglo;
     }
     /**
      * Con esta funcion se puede buscar en un arreglo y retorna la primera coincidencia que se encuentre.
      * El $callback sirve para evaluar las filas individualmente en busca de una condicion.
      * Funciona similar a la funcion array_filter.
      */
     function array_findUnique($a, $callback)
     {
         foreach ($a as $k) {
             $cond = $callback($k);
             if ($cond) {
                 return $k;
             }
         }
         return false;
     }
     /*
      * Esta función construye los atributos de la jerarquía JSON haciendo foreach a los niveles del árbol.
      * Esta función no es dinámica, por tanto hay que saber el número de niveles y los campos que trae la consulta SQL.
      */
     function crearArregloPorNiveles($arbol, $filas, $idNiveles)
     {
         $response = array();
         foreach ($arbol as $nivel1 => $valnivel1) {
             $fila = array_findUnique($filas, function ($k) use($idNiveles, $nivel1) {
                 return $k[$idNiveles[0]] == $nivel1;
             });
             array_push($response, array('id_modalidad' => $fila['id_modalidad'], 'descripcion' => $fila['descripcion_modalidad'], 'sede' => array()));
             foreach ($valnivel1 as $nivel2 => $valnivel2) {
                 $fila = array_findUnique($filas, function ($k) use($idNiveles, $nivel1, $nivel2) {
                     return $k[$idNiveles[0]] == $nivel1 && $k[$idNiveles[1]] == $nivel2;
                 });
                 array_push($response[count($response) - 1]['sede'], array('id_sede' => $fila['id_sede'], 'abreviatura' => $fila['abreviatura_sede'], 'consultorio' => array(), 'profesional' => array()));
                 foreach ($valnivel2 as $nivel3 => $valnivel3) {
                     $fila = array_findUnique($filas, function ($k) use($idNiveles, $nivel1, $nivel2, $nivel3) {
                         return $k[$idNiveles[0]] == $nivel1 && $k[$idNiveles[1]] == $nivel2 && $k[$idNiveles[2]] == $nivel3;
                     });
                     array_push($response[count($response) - 1]['sede'][count($response[count($response) - 1]['sede']) - 1]['consultorio'], array('id_consultorio' => $fila['id_consultorio'], 'nombre' => $fila['nombre_consultorio']));
                     array_push($response[count($response) - 1]['sede'][count($response[count($response) - 1]['sede']) - 1]['profesional'], array('id_profesional' => $fila['id_profesional'], 'nombre_persona' => $fila['nombre_persona']));
                 }
             }
         }
         return $response;
     }
     /*
      * Con esta funcion se obtiene como respuesta un Objeto en PHP para ser exportado a JSON.
      */
     function unificarResultadosPorNiveles($resultado, $idNiveles)
     {
         $arbol = crearArbol($resultado, $idNiveles);
         $response = crearArregloPorNiveles($arbol, $resultado, $idNiveles);
         return $response;
     }
     $resultado = unificarResultadosPorNiveles($resultado, ['id_modalidad', 'id_sede', 'id_profesional']);
     // ----------------FIN OBTENER DATOS ACCORDIONCONTAINER -----------------------------------------------------------
     // ----------------INICIAR EL ACCORDIONCONTAINER -----------------------------------------------------------
     $esteCampo = "Contenedor1";
     $atributos['id'] = $esteCampo;
     // 		$atributos ['modalidad'] = array(
     // 				[
     // 						'id_modalidad' => 12,
     // 						'descripcion' => 'Medicina',
     // 						'sede' => array(
     // 								[
     // 										'id_sede' => 001,
     // 										'abreviatura' => 'FSSK',
     // 										'consultorio' => array(
     // 												[
     // 														'id_consultorio' => 001,
     // 														'nombre' => 'Consultorio 1',
     // 												],
     // 												[
     // 														'id_consultorio' => 002,
     // 														'nombre' => 'Consultorio 2',
     // 												]
     // 										),
     // 										'profesional' => array(
     // 												[
     // 														'id_profesional' => 001,
     // 														'nombre_persona' => 'Juan Aparicio',
     // 												],
     // 												[
     // 														'id_profesional' => 002,
     // 														'nombre_persona' => 'Juana de Arco',
     // 												]
     // 										)
     // 								],
     // 								[
     // 										'id_sede' => 002,
     // 										'abreviatura' => 'MMYYYY',
     // 										'consultorio' => array (
     // 												[
     // 														'id_consultorio' => 001,
     // 														'nombre' => 'Consultorio 1'
     // 												],
     // 												[
     // 														'id_consultorio' => 002,
     // 														'nombre' => 'Consultorio 2'
     // 												]
     // 										),
     // 										'profesional' => array (
     // 												[
     // 														'id_profesional' => 001,
     // 														'nombre_persona' => 'El nombre más creativo'
     // 												],
     // 												[
     // 														'id_profesional' => 002,
     // 														'nombre_persona' => 'El nombre más creativo 2'
     // 												]
     // 										)
     // 								]
     // 						)
     // 				],
     // 				[
     // 						'id_modalidad' => 13,
     // 						'descripcion' => 'Odontología',
     // 						'sede' => array(
     // 								[
     // 										'id_sede' => 002,
     // 										'abreviatura' => 'MMYYY',
     // 										'consultorio' => array(
     // 												[
     // 														'id_consultorio' => 1001,
     // 														'nombre' => 'Consultorio 10',
     // 												],
     // 												[
     // 														'id_consultorio' => 100,
     // 														'nombre' => 'Consultorio 2',
     // 												]
     // 										),
     // 										'profesional' => array(
     // 												[
     // 														'id_profesional' => 015,
     // 														'nombre_persona' => 'Pedro Paulo',
     // 												],
     // 												[
     // 														'id_profesional' => 010,
     // 														'nombre_persona' => 'Elma Frodita',
     // 												]
     // 										)
     // 								]
     // 						)
     // 				]
     // 		);
     $atributos['modalidad'] = $resultado;
     $contenidoAccordion = $this->miFormulario->getAccordionContainer($atributos);
     unset($atributos);
     // ----------------FIN EL ACCORDIONCONTAINER ---------------------------------------------------------------
     // ----------------INICIAR EL BOTON DE SUBMIT -----------------------------------------------------------
     $atributos["id"] = "botonSubmit1";
     $atributos['idCalendario'] = 'Calendario1';
     $atributos["texto"] = "Guardar Agenda";
     $atributos["clase"] = "btn-default btn-lg";
     // Enlace que lleva a la funcion de PHP invocada por AJAX
     $cadenaACodificar = "pagina=" . $miPaginaActual;
     $cadenaACodificar .= "&procesarAjax=true";
     $cadenaACodificar .= "&action=index.php";
     $cadenaACodificar .= "&bloqueNombre=" . $esteBloque["nombre"];
     $cadenaACodificar .= "&bloqueGrupo=" . $esteBloque["grupo"];
     $cadenaACodificar .= "&funcion=registrarAgenda";
     $cadenaACodificar .= "&tiempo=" . $_REQUEST['tiempo'];
     // Codificar las variables
     $cadena = $this->miConfigurador->fabricaConexiones->crypto->codificar_url($cadenaACodificar);
     // URL definitiva
     $urlPeticion = $directorio . $cadena;
     $atributos["enlace"] = $urlPeticion;
     $contenidoBoton = $this->miFormulario->getBoton($atributos);
     unset($atributos);
     // ----------------FIN EL BOTON DE SUBMIT -----------------------------------------------------------
     // ----------------INICIAR EL CONTENEDOR -----------------------------------------------------------
     $esteCampo = "Contenedor2";
     $atributos['id'] = $esteCampo;
     $atributos['nodos'] = array($contenidoAccordion, $contenidoCalendario . $contenidoBoton);
     $atributos['clases'] = array('col-md-2', 'col-md-10');
     echo $this->miFormulario->getContainer($atributos);
     unset($atributos);
     // ----------------FIN EL CONTENEDOR ---------------------------------------------------------------
     // ---------------- FIN SECCION: Controles del Formulario -----------------------------------------------
     // ----------------FINALIZAR EL FORMULARIO ------------------------------------------------------------
     $atributos['marco'] = true;
     $atributos['tipoEtiqueta'] = 'fin';
     echo $this->miFormulario->formulario($atributos);
 }
コード例 #2
0
ファイル: ejemplo2.php プロジェクト: JorgeUlises/treePHP
 * Esta es una variable que carga el resultado de la lectura de un JSON.
 */
$resultadoJSON = file_get_contents('resultado_consulta.json');
/*
 * Se codifica el JSON como una variable PHP.
 */
$resultadoJSON = json_decode($resultadoJSON, true);
/*
 * Se imprime en pantalla las filas para comodidad del usuario.
 */
printRows($resultadoJSON);
/*
 * Las llaves de la consulta jerárquica se guardan en orden en un arreglo.
 */
$idsLlaves = array('id_modalidad', 'id_sede', 'id_profesional');
/*
 * Se ingresan los parámetros de Filas del SQL y las respectivas llaves que se establecieron en la consulta.
 */
$resultadoArray = unificarResultadosPorNiveles($resultadoJSON, $idsLlaves);
/*
 * Se imprime en pantalla en código en JSON.
 */
echo "<h3>Resultado en JSON:</h3>";
echo '<pre>';
echo json_encode($resultadoArray, JSON_PRETTY_PRINT);
echo '</pre>';
?>
    </body>
</html>

コード例 #3
0
ファイル: ejemplo1.php プロジェクト: JorgeUlises/treePHP
        }
    }
    return $response;
}
/*
 * Con esta funcion se obtiene como respuesta un Objeto en PHP para ser exportado a JSON.
 */
function unificarResultadosPorNiveles($rows, $idNiveles)
{
    $arbol = crearArbol($rows, $idNiveles);
    $response = crearArregloPorNiveles($arbol, $rows, $idNiveles);
    return $response;
}
/*
 * Esta es una variable que simula el resultado de la respuesta de una consulta.
 */
$resultadoSQL = array(0 => array(0 => '1', 'id_modalidad' => '1', 1 => 'MEDICINA', 'descripcion_modalidad' => 'MEDICINA', 2 => '1', 'id_sede' => '1', 3 => 'FCMA', 'abreviatura_sede' => 'FCMA', 4 => '1', 'id_consultorio' => '1', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '1', 'id_profesional' => '1', 7 => '1000000000', 'documento_persona' => '1000000000', 8 => 'NEIFY NATHALYA USECHE CUELLAR', 'nombre_persona' => 'NEIFY NATHALYA USECHE CUELLAR'), 1 => array(0 => '1', 'id_modalidad' => '1', 1 => 'MEDICINA', 'descripcion_modalidad' => 'MEDICINA', 2 => '4', 'id_sede' => '4', 3 => 'FCMB', 'abreviatura_sede' => 'FCMB', 4 => '3', 'id_consultorio' => '3', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '1', 'id_profesional' => '1', 7 => '1000000000', 'documento_persona' => '1000000000', 8 => 'NEIFY NATHALYA USECHE CUELLAR', 'nombre_persona' => 'NEIFY NATHALYA USECHE CUELLAR'), 2 => array(0 => '2', 'id_modalidad' => '2', 1 => 'ODONTOLOGÍA', 'descripcion_modalidad' => 'ODONTOLOGÍA', 2 => '1', 'id_sede' => '1', 3 => 'FCMA', 'abreviatura_sede' => 'FCMA', 4 => '1', 'id_consultorio' => '1', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '1', 'id_profesional' => '1', 7 => '1000000000', 'documento_persona' => '1000000000', 8 => 'NEIFY NATHALYA USECHE CUELLAR', 'nombre_persona' => 'NEIFY NATHALYA USECHE CUELLAR'), 3 => array(0 => '2', 'id_modalidad' => '2', 1 => 'ODONTOLOGÍA', 'descripcion_modalidad' => 'ODONTOLOGÍA', 2 => '2', 'id_sede' => '2', 3 => 'FMVI', 'abreviatura_sede' => 'FMVI', 4 => '2', 'id_consultorio' => '2', 5 => 'consultorio 2', 'nombre_consultorio' => 'consultorio 2', 6 => '2', 'id_profesional' => '2', 7 => 'E01010101', 'documento_persona' => 'E01010101', 8 => 'NEIFY CUELLAR', 'nombre_persona' => 'NEIFY CUELLAR'), 4 => array(0 => '2', 'id_modalidad' => '2', 1 => 'ODONTOLOGÍA', 'descripcion_modalidad' => 'ODONTOLOGÍA', 2 => '4', 'id_sede' => '4', 3 => 'FCMB', 'abreviatura_sede' => 'FCMB', 4 => '3', 'id_consultorio' => '3', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '1', 'id_profesional' => '1', 7 => '1000000000', 'documento_persona' => '1000000000', 8 => 'NEIFY NATHALYA USECHE CUELLAR', 'nombre_persona' => 'NEIFY NATHALYA USECHE CUELLAR'), 5 => array(0 => '2', 'id_modalidad' => '2', 1 => 'ODONTOLOGÍA', 'descripcion_modalidad' => 'ODONTOLOGÍA', 2 => '4', 'id_sede' => '4', 3 => 'FCMB', 'abreviatura_sede' => 'FCMB', 4 => '3', 'id_consultorio' => '3', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '2', 'id_profesional' => '2', 7 => 'E01010101', 'documento_persona' => 'E01010101', 8 => 'NEIFY CUELLAR', 'nombre_persona' => 'NEIFY CUELLAR'), 6 => array(0 => '3', 'id_modalidad' => '3', 1 => 'PSICOLOGÍA', 'descripcion_modalidad' => 'PSICOLOGÍA', 2 => '1', 'id_sede' => '1', 3 => 'FCMA', 'abreviatura_sede' => 'FCMA', 4 => '1', 'id_consultorio' => '1', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '1', 'id_profesional' => '1', 7 => '1000000000', 'documento_persona' => '1000000000', 8 => 'NEIFY NATHALYA USECHE CUELLAR', 'nombre_persona' => 'NEIFY NATHALYA USECHE CUELLAR'), 7 => array(0 => '3', 'id_modalidad' => '3', 1 => 'PSICOLOGÍA', 'descripcion_modalidad' => 'PSICOLOGÍA', 2 => '1', 'id_sede' => '1', 3 => 'FCMA', 'abreviatura_sede' => 'FCMA', 4 => '1', 'id_consultorio' => '1', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '3', 'id_profesional' => '3', 7 => '10101010', 'documento_persona' => '10101010', 8 => 'ULISES USECHE DELGADO', 'nombre_persona' => 'ULISES USECHE DELGADO'), 8 => array(0 => '3', 'id_modalidad' => '3', 1 => 'PSICOLOGÍA', 'descripcion_modalidad' => 'PSICOLOGÍA', 2 => '4', 'id_sede' => '4', 3 => 'FCMB', 'abreviatura_sede' => 'FCMB', 4 => '3', 'id_consultorio' => '3', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '1', 'id_profesional' => '1', 7 => '1000000000', 'documento_persona' => '1000000000', 8 => 'NEIFY NATHALYA USECHE CUELLAR', 'nombre_persona' => 'NEIFY NATHALYA USECHE CUELLAR'), 9 => array(0 => '3', 'id_modalidad' => '3', 1 => 'PSICOLOGÍA', 'descripcion_modalidad' => 'PSICOLOGÍA', 2 => '4', 'id_sede' => '4', 3 => 'FCMB', 'abreviatura_sede' => 'FCMB', 4 => '3', 'id_consultorio' => '3', 5 => 'consultorio 1', 'nombre_consultorio' => 'consultorio 1', 6 => '3', 'id_profesional' => '3', 7 => '10101010', 'documento_persona' => '10101010', 8 => 'ULISES USECHE DELGADO', 'nombre_persona' => 'ULISES USECHE DELGADO'), 10 => array(0 => '4', 'id_modalidad' => '4', 1 => 'FISIOTERAPIA', 'descripcion_modalidad' => 'FISIOTERAPIA', 2 => '100', 'id_sede' => '100', 3 => 'FCPO', 'abreviatura_sede' => 'FCPO', 4 => '4', 'id_consultorio' => '4', 5 => 'consultorio 1 postgrados', 'nombre_consultorio' => 'consultorio 1 postgrados', 6 => '4', 'id_profesional' => '4', 7 => '92100950407', 'documento_persona' => '92100950407', 8 => 'KAREN MARIANA USECHE CUELLAR', 'nombre_persona' => 'KAREN MARIANA USECHE CUELLAR'), 11 => array(0 => '4', 'id_modalidad' => '4', 1 => 'FISIOTERAPIA', 'descripcion_modalidad' => 'FISIOTERAPIA', 2 => '100', 'id_sede' => '100', 3 => 'FCPO', 'abreviatura_sede' => 'FCPO', 4 => '5', 'id_consultorio' => '5', 5 => 'consultorio 4', 'nombre_consultorio' => 'consultorio 4', 6 => '4', 'id_profesional' => '4', 7 => '92100950407', 'documento_persona' => '92100950407', 8 => 'KAREN MARIANA USECHE CUELLAR', 'nombre_persona' => 'KAREN MARIANA USECHE CUELLAR'));
/*
 * Las llaves de la consulta jerárquica se guardan en orden en un arreglo.
 */
$idsKeysSQL = array('id_modalidad', 'id_sede', 'id_profesional');
/*
 * Se ingresan los parámetros de Filas del SQL y las respectivas llaves que se establecieron en la consulta.
 */
$resultadoArray = unificarResultadosPorNiveles($resultadoSQL, $idsKeysSQL);
/*
 * Se imprime en pantalla en código en JSON.
 */
echo '<pre>';
echo json_encode($resultadoArray, JSON_PRETTY_PRINT);
echo '</pre>';