Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- include("funciones_php.php");
- list($u_nombre,$u_logon) = seguridad();
- // Le indica al servidor web, y específicamente al módulo PHP, que sirva los archivos .php con codificación UTF8
- //de forma tal que, entre otras cosas, las palabras acentuadas se vean correctamente.
- header('Content-Type: text/html; charset=UTF-8');
- // Indico cual es la zona horaria para nuestra ubicación geográfica.
- date_default_timezone_set('America/Argentina/Buenos_Aires');
- // Incluyo el archivo de configuración que contiene la data que permite conectarse a la base de datos en el motor de datos.
- include_once("configuracion_acceso_motor_de_datos.php");
- // Con la informacion incluída en "configuracion_acceso_motor_de_datos.php" me conecto efectivamente a la base de datos en el motor de datos.
- mysql_connect(PHPGRID_DBHOST,PHPGRID_DBUSER,PHPGRID_DBPASS);
- mysql_select_db(PHPGRID_DBNAME);
- // Le indico al motor de datos que la codificación con la que debe trabajar es UTF8. De esta forma los datos
- //se guardaran y recuperaran con esa codificación.
- mysql_query ("SET NAMES 'utf8'");
- include(PHPGRID_LIBPATH."inc/jqgrid_dist.php");
- // Creo una grilla.
- $g = new jqgrid();
- // Le asigno un título a la grilla.
- $grid["caption"] = "Destinos Turísticos";
- // Coloco la barra de opciones en la parte superior de la grilla.
- $grid["toolbar"] = "top";
- // Permito la selección de varios registros a la vez.
- $grid["multiselect"] = true;
- // Permito que la grilla se redimensione acompañando la dimensiones del navegador. Es decir si el usuario
- //achica el ancho del navegador entonces la grilla también se achicará en la misma proporsión.
- $grid["autoresize"] = true;
- // Si permito que se expanda la grilla al ancho de la pantalla.
- $grid["autowidth"] = true;
- // Permito que los registros se muestren en forma descendente. Es decir el primer registro listado será el último que se ingresó.
- $grid["sortorder"] = "DESC";
- // Indico que anchura debe tener el formulario en el modo "Nuevo Registro".
- $grid["add_options"] = array('width'=>'620');
- // Indico que anchura debe tener el formulario en el modo "Edición de un Registro".
- $grid["edit_options"] = array('width'=>'620');
- // Indico que anchura debe tener el formulario en el modo "Vista de un Registro".
- $grid["view_options"] = array('width'=>'620');
- // Indico que altura debe tener la grilla.
- $grid["height"] = "";
- // Indico cual es el mensaje que se debe mostrar cuando se están cargando los registros en la grilla.
- $grid["loadtext"] = "Cargando ...";
- // Indico con que modo voy a trabajar con la grilla; si con páginas de registros o que sólo se carguen registros a medida que el scroll
- //lo vaya pidiendo. Utilizo el último ya que es útil para manejar "records set" de gran tamaño.
- $grid["scroll"] = false;
- // Indico que para la columna "Actions" se utilicen íconos en lugar de palabras.
- $grid["actionicon"] = true;
- // Indico que no se recargue la grilla luego de haberse editado un registro.
- $grid["reloadedit"] = false;
- // Indico que no se recargue la grilla luego de haberse insertado un registro.
- $grid["reloadinsert"] = false;
- // Permite que al cerrar el formulario de "Nuevo Registro" se recargue automáticamente toda la página.
- $grid["add_options"]["afterSubmit"] = "function(){ window.location.reload(); return [true,'']; }";
- // Permite habilitar el mecanismo de subgrilla -- by default 'rowid' (PK) of parent is passed
- $grid["subGrid"] = true;
- // Relacionada con la línea anterior, permite indicar la página web que renderiza la subgrilla.
- $grid["subgridurl"] = "grilla_aperturas.php";
- // Permite pasar a la página que renderiza la subgrilla la clave del registro que el usuario selecciona.
- $grid["subgridparams"] = "d_id, d_nombre";
- // Permite enviar a la página que renderiza la subgrilla otros campos del registro que el usuario
- //selecciona, y que deben ser recuperados con $_POST.
- // $grid["subgridparams"] = "p_provincia,pciudad,p_calle";
- // Definidas las propiedades que quiero tenga la grilla le informo a ésta de ellas.
- $g->set_options($grid);
- // Le indico a al grilla que tabla de la base de datos va a estar unido a ella.
- $g->table = "destinos";
- // Indico que quiero capturar el evento on_insert y defino la función de callback llamada "insert_row".
- // Al ser el tercer parámetro "true" significa que primero se ejecuta la función de callback y luego
- //el código de actualización de la grilla.
- $e["on_insert"] = array("insert_row", null, true);
- // Indico que quiero capturar el evento on_update y defino la función de callback llamada "update_row".
- // Al ser el tercer parámetro "true" significa que primero se ejecuta la función de callback y luego
- //el código de actualización de la grilla.
- $e["on_update"] = array("update_row", null, true);
- // Indico que quiero capturar el evento on_delete y defino la función de callback llamada "delete_row".
- // Al ser el tercer parámetro "false" significa que toda la lógica para borrar el registro esta en
- //la función de callback y entonces se anula la operación de eliminación por defecto que hace la grilla.
- $e["on_delete"] = array("delete_row", null, false);
- // Esta función de callback permite actuar al capturar el evento "on_insert". Recibe como dato de entrada
- //una variable "$data" que contiene todos los datos que se indicaron en el formulario "Nuevo Registro".
- function insert_row($data)
- {
- $data["params"]["d_estampilla_tiempo"] = date("Y-m-d H:i:s");
- }
- // Esta función de callback permite actuar al capturar el evento "on_update". Recibe como dato de entrada
- //una variable "$data" que contiene todos los datos que se indicaron en el formulario de "Edición de un Registro".
- //Y lo que hace es considerar el caso en donde se intenta editar un registro que fue eliminado por otro usuario, y
- //el caso en donde se intenta editar un registro que fue editado previamente por otro usuario. En ambos cados nos
- //muestra un mensaje de que debemos refrescar la página.
- function update_row($data)
- {
- $sentencia_sql = "select * from destinos where d_id = ' {$data["d_id"]} '" ;
- $resultado = mysql_query($sentencia_sql);
- $nro_registros = mysql_num_rows($resultado);
- if ( $nro_registros == 0)
- phpgrid_error('Este registro ha sido eliminado por otro usuario y es por ello que no es posible ejecutar la tarea solicitada. Por favor refresque la página (tecla F5).');
- else
- {
- $rs = mysql_fetch_assoc($resultado);
- if ( strtotime($rs["d_estampilla_tiempo"]) > strtotime($data["params"]["d_estampilla_tiempo"]) )
- phpgrid_error('Este registro ha sido modificado por otro usuario, por favor refresque la página (tecla F5).');
- else
- {
- // No se da ninguno de los casos anteriores entonces actualizo el campo "estampilla_tiempo"
- //con una nueva estampilla de tiempo, y que luego será volcada en la tabla de la base de datos
- //por código de la grilla.
- $data["params"]["d_estampilla_tiempo"] = date("Y-m-d H:i:s");
- };
- };
- };
- // Esta función de callback permite actuar al capturar el evento "on_delete". Recibe como dato de entrada
- //una variable "$data".
- // Para el evento "on_delete" sólo es pasado el id del registro en cuestión. No es posible obtener información
- //sobre ningún otro parámetro a menos que busque ésta explicitamente antes de eliminar el registro.
- function delete_row($data)
- {
- $d_id = $data["d_id"];
- $sentencia_sql = "select a_id from aperturas where d_id = '".$d_id."'";
- $resultado = mysql_query($sentencia_sql);
- $nro_registros = mysql_num_rows($resultado);
- if ( $nro_registros > 0)
- phpgrid_error('No es posible eliminar el destino ya que existen aperturas del mismo. Elimine esa(s) apertura(s) primero y vuelva a intentarlo.');
- else
- {
- $sentencia_sql = "delete from destinos where d_id = '".$d_id."'";
- $resultado = mysql_query($sentencia_sql);
- };
- };
- // Definidos los eventos que quiero capturar en la grilla le informo a ésta de ellos.
- $g->set_events($e);
- // Indico propiedades de la columna "d_id".
- $col = array();
- $col["name"] = "d_id";
- $col["title"] = "Id";
- $col["edittype"] = "text";
- //$col["width"] = "40";
- $col["editoptions"] = array("size"=>45);
- $col["hidden"] = true;
- $col["editable"] = false;
- $cols[] = $col;
- // Indico propiedades de la columna "d_nombre".
- $col = array();
- $col["name"] = "d_nombre";
- $col["title"] = "Nombre";
- $col["edittype"] = "text";
- //$col["width"] = "0";
- $col["editoptions"] = array("size"=>45);
- $col["editoptions"]["onclick"] = "this.focus();this.select();";
- $col["editrules"] = array("required"=>true);
- $col["hidden"] = false;
- $col["editable"] = true;
- $cols[] = $col;
- // Indico propiedades de la columna "d_estampilla_tiempo".
- $col = array();
- $col["name"] = "d_estampilla_tiempo";
- $col["title"] = "Estampilla Tiempo";
- $col["edittype"] = "text";
- //$col["width"] = "0";
- $col["editoptions"] = array("size"=>45);
- $col["hidden"] = true;
- $col["editable"] = true;
- $col["export"] = false;
- $cols[] = $col;
- // Indico propiedades de la columna "act".
- $col = array();
- $col["name"] = "act";
- $col["title"] = "Acciones";
- //$col["width"] = "0";
- $col["hidden"] = true;
- $col["editable"] = false;
- $col["export"] = false;
- $cols[] = $col;
- // Definidas las propiedades que quiero tengan cada una de las columnas de la grilla le informo a ésta de ellas.
- $g->set_columns($cols,true);
- // Indico que acciones sí permito en la grilla y cuales no.
- $g->set_actions
- (
- array
- (
- "add"=>true,
- "edit"=>true,
- "clone"=>false,
- "bulkedit"=>false,
- "delete"=>true,
- "view"=>true,
- "rowactions"=>false,
- "export"=>false,
- "autofilter"=>true,
- "search"=>false,
- "inlineadd"=>false,
- "showhidecolumns"=>false
- )
- );
- // Construyo la grilla y le asigno un nombre, que será único en la pagina html.
- $out = $g->render("destinos");
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
- <html lang='es'>
- <head>
- <!-- Definición de información metadata. -->
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <!-- Título que le doy a la página. -->
- <title>BUDATRAVEL</title>
- <!-- Definición del ícono de la página. -->
- <link rel="Shortcut Icon" href="images/icono.png">
- <!-- Librerias CSS. -->
- <!-- Hoja de estilos principal. -->
- <link type="text/css" href="css/hoja_principal_estilos.css" rel="stylesheet" media="all"/><meta charset="utf-8">
- <!-- Hoja de estilos principal de la grilla. -->
- <link rel="stylesheet" href="lib/js/jqgrid/css/ui.jqgrid.css"></link>
- <!-- Hoja de estilos correspondiente al theme JQueryUI en uso, que en este caso es "Eggplant",
- y que además también es utilizada por la grilla. -->
- <link rel="stylesheet" href="lib/js/themes/hot-sneaks customizado/jquery-ui.css"></link>
- <!-- Hoja de estilos principal del menú. -->
- <link href="cssmenu/styles.css" rel="stylesheet" type="text/css" />
- <!-- Hoja de estilos que permite dar efectos a objetos html. -->
- <link type="text/css" href="css/hoja_estilos_hover.css" rel="stylesheet" media="all"/>
- <!-- Fragmentos CSS. -->
- <!-- Estilos css que aplico a la grilla. -->
- <style>
- .ui-jqgrid body, .ui-jqgrid .ui-jqgrid-pager, .ui-widget, .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button
- {
- font-size:16px; font-family:"Raleway";
- }
- .ui-jqgrid {border:0px;}
- .ui-jqgrid .ui-jqgrid-title {font-size:24px; font-family:"Raleway";padding: 3%; color:#76B837;}
- .ui-jqgrid .ui-jqgrid-titlebar {padding: 1em 1em 1em 1em;}
- .ui-jqgrid tr.jqgrow td {height: 25px; padding:5px 5px;}
- </style>
- <!-- Estilos css que aplico al div llamado "div_NOSCRIPT". -->
- <style>
- .div_NOSCRIPT
- {
- font-family: Tahoma, sans-serif;
- background-color: #FE9B40;
- padding: 5px;
- margin: 5px;
- }
- </style>
- <!-- Respond.js for IE8 support of media queries -->
- <!--[if lt IE 9]>
- <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
- <![endif]-->
- <!-- Inclusión de librerias Javascript. -->
- <!-- Librería JQuery. -->
- <script src="js/jquery-2.1.0.js" type="text/javascript"></script>
- <!-- Librería requerida por el menú. -->
- <script src="cssmenu/script.js" type="text/javascript"></script>
- <!-- Las siguiente dos librerías están asociadas con la grilla. -->
- <script src="lib/js/jqgrid/js/i18n/grid.locale-es.js" type="text/javascript"></script>
- <script src="lib/js/jqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script>
- <!-- Librería utilizada por JQueryUI. -->
- <script src="lib/js/themes/jquery-ui.custom.min.js" type="text/javascript"></script>
- <!-- Fragmentos Javascript. -->
- <!-- Script que permite cambiar al español el idioma del control "DatePicker". -->
- <script>
- $.datepicker.regional['es'] =
- {
- closeText: 'Cerrar',
- prevText: '<Ant',
- nextText: 'Sig>',
- currentText: 'Hoy',
- monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
- monthNamesShort: ['Ene','Feb','Mar','Abr', 'May','Jun','Jul','Ago','Sep', 'Oct','Nov','Dic'],
- dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
- dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],
- dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],
- weekHeader: 'Sm',
- firstDay: 1,
- isRTL: false,
- showMonthAfterYear: false,
- yearSuffix: ''
- };
- $.datepicker.setDefaults($.datepicker.regional['es']);
- $(function ()
- {
- $("#fecha").datepicker();
- });
- </script>
- </head>
- <body>
- <!-- Aviso que se muestra en caso de que Javascript no este habilitado. -->
- <noscript>
- <div class="div_NOSCRIPT">
- <p>
- Para que este web site funcione correctamente,
- es necesario habilitar javascript en tu navegador.
- </p>
- <p>
- <a href="http://www.enable-javascript.com/" target="_blank">
- En este enlace encontrarás instrucciones de
- cómo habilitar javascript en tu navegador</a>
- </p>
- </div>
- </noscript>
- <!-- Cabecera de la página. -->
- <div class="cabecera">
- <div class="contenedor_logo hvr-float-shadow">
- <a class="logo" href="index.php">BUDATRAVEL - Gestión de Reservas</a>
- <div class="version">Versión 1.0</div>
- </div>
- <div id="cssmenu" class="hvr-float-shadow">
- <ul>
- <li> <a href='clientes.php'>Clientes</a> </li>
- <li class='active'> <a href='grilla_destinos.php'>Destinos Turísticos</a> </li>
- <li> <a href='grilla_proveedores.php'>Proveedores</a> </li>
- <li> <a href='usuarios.php'>Usuarios</a> </li>
- <li> <a href='ayuda.php' target="_blank">Ayuda</a> </li>
- <li> <a href='salir.php'>Salir</a> </li>
- </ul>
- </div>
- </div>
- <!-- Cuerpo de la página. -->
- <div class = "cuerpo">
- <!-- Muestro la grilla. -->
- <div>
- <?php echo $out?>
- </div>
- </div>
- <!-- Pie de la página. -->
- <div class = "pie hvr-float-shadow">
- <div class = "nombre">
- <?php echo $u_nombre." (".$u_logon.") "; ?>
- </div>
- <div class = "fecha">
- <?php
- $dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
- $meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
- echo $dias[date('w')]." ".date('d')." de ".$meses[date('n')-1]. " del ".date('Y');
- ?>
- </div>
- </div>
- </body>
- <html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement