Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Jqgrid Guardar cambios en la base de datos

Estas en el tema de Jqgrid Guardar cambios en la base de datos en el foro de Frameworks JS en Foros del Web. Hola amigos estoy iniciando en JQgrid y me parece una excelente herramienta. Tengo instalado el demo de la version 3.8 y funciona perfectamente pero los ...
  #1 (permalink)  
Antiguo 07/12/2010, 13:09
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 16 años, 1 mes
Puntos: 0
Jqgrid Guardar cambios en la base de datos

Hola amigos estoy iniciando en JQgrid y me parece una excelente herramienta.

Tengo instalado el demo de la version 3.8 y funciona perfectamente pero los cambios no se guardan el base de datos, solo se guardan en el array y cuando actualizo la pagina se pierde la informacion.

El caso puntual es que ingreso o modifico un registro y efectivamente muestra en la grilla los cambios, pero en la base de datos no se esta guardando esos cambios.

Mi intension es utilizar esta grilla con las opciones de crear, modificar, eliminar y consultar pero que se hagan con los registros de la base de datos.

Que debo modificar para que guarde los cambios en la base de datos.
  #2 (permalink)  
Antiguo 08/12/2010, 01:00
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años, 6 meses
Puntos: 7
Respuesta: Jqgrid Guardar cambios en la base de datos

porque no colocas tu codigo y ver donde es el problema
  #3 (permalink)  
Antiguo 08/12/2010, 09:06
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Jqgrid Guardar cambios en la base de datos

El codigo de con la funcion jqgrid es este.

Código:
jQuery("#navgrid").jqGrid({
   	url:'editing.php?q=1',
	datatype: "xml",
   	colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Closed','Ship via','Notes'],
   	colModel:[
   		{name:'id',index:'id', width:55,editable:false,editoptions:{readonly:true,size:10}},
   		{name:'invdate',index:'invdate', width:80,editable:true,editoptions:{size:10}},
   		{name:'name',index:'name', width:90,editable:true,editoptions:{size:25}},
   		{name:'amount',index:'amount', width:60, align:"right",editable:true,editoptions:{size:10}},
   		{name:'tax',index:'tax', width:60, align:"right",editable:true,editoptions:{size:10}},		
   		{name:'total',index:'total', width:60,align:"right",editable:true,editoptions:{size:10}},
		{name:'closed',index:'closed',width:55,align:'center',editable:true,edittype:"checkbox",editoptions:{value:"Yes:No"}},
		{name:'ship_via',index:'ship_via',width:70, editable: true,edittype:"select",editoptions:{value:"FE:FedEx;TN:TNT"}},
   		{name:'note',index:'note', width:100, sortable:false,editable: true,edittype:"textarea", editoptions:{rows:"2",cols:"20"}}		
   	],
   	rowNum:10,
   	rowList:[10,20,30],
   	pager: '#pagernav',
   	sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    caption:"Navigator Example",
    editurl:"someurl.php",
	height:210
});
jQuery("#navgrid").jqGrid('navGrid','#pagernav',
{}, //options
{height:350,reloadAfterSubmit:true}, // edit options
{height:350,reloadAfterSubmit:true}, // add options
{reloadAfterSubmit:true}, // del options
{} // search options
);
y el codio php que hace la iteracion con la base de datos es este.

Código PHP:
<?php
include("dbconfig.php");

$examp $_REQUEST["q"]; //query number

$page $_REQUEST['page']; // get the requested page
$limit $_REQUEST['rows']; // get how many rows we want to have into the grid
$sidx $_REQUEST['sidx']; // get index row - i.e. user click to sort
$sord $_REQUEST['sord']; // get the direction
if(!$sidx$sidx =1;

// search options
// IMPORTANT NOTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// this type of constructing is not recommendet
// it is only for demonstration
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$wh "";
$searchOn Strip($_REQUEST['_search']);
if(
$searchOn=='true') {
    
$fld Strip($_REQUEST['searchField']);
    if( 
$fld=='id' || $fld =='invdate' || $fld=='name' || $fld=='amount' || $fld=='tax' || $fld=='total' || $fld=='note' || $fld=='closed' || $fld=='ship_via') {
        
$fldata Strip($_REQUEST['searchString']);
        
$foper Strip($_REQUEST['searchOper']);
        
// costruct where
        
$wh .= " AND ".$fld;
        switch (
$foper) {
            case 
"bw":
                
$fldata .= "%";
                
$wh .= " LIKE '".$fldata."'";
                break;
            case 
"eq":
                if(
is_numeric($fldata)) {
                    
$wh .= " = ".$fldata;
                } else {
                    
$wh .= " = '".$fldata."'";
                }
                break;
            case 
"ne":
                if(
is_numeric($fldata)) {
                    
$wh .= " <> ".$fldata;
                } else {
                    
$wh .= " <> '".$fldata."'";
                }
                break;
            case 
"lt":
                if(
is_numeric($fldata)) {
                    
$wh .= " < ".$fldata;
                } else {
                    
$wh .= " < '".$fldata."'";
                }
                break;
            case 
"le":
                if(
is_numeric($fldata)) {
                    
$wh .= " <= ".$fldata;
                } else {
                    
$wh .= " <= '".$fldata."'";
                }
                break;
            case 
"gt":
                if(
is_numeric($fldata)) {
                    
$wh .= " > ".$fldata;
                } else {
                    
$wh .= " > '".$fldata."'";
                }
                break;
            case 
"ge":
                if(
is_numeric($fldata)) {
                    
$wh .= " >= ".$fldata;
                } else {
                    
$wh .= " >= '".$fldata."'";
                }
                break;
            case 
"ew":
                
$wh .= " LIKE '%".$fldata."'";
                break;
            case 
"ew":
                
$wh .= " LIKE '%".$fldata."%'";
                break;
            default :
                
$wh "";
        }
    }
}

// connect to the database
$db mysql_connect($dbhost$dbuser$dbpassword)
or die(
"Connection Error: " mysql_error());

mysql_select_db($database) or die("Error conecting to db.");

switch (
$examp) {
    case 
1:
        
$result mysql_query("SELECT COUNT(*) AS count FROM invheader a, clients b WHERE a.client_id=b.client_id ".$wh);
        
$row mysql_fetch_array($result,MYSQL_ASSOC);
        
$count $row['count'];

        if( 
$count >) {
            
$total_pages ceil($count/$limit);
        } else {
            
$total_pages 0;
        }
        if (
$page $total_pages$page=$total_pages;
        
$start $limit*$page $limit//do not put $limit*($page - 1)
        
if ($start<0$start 0;
        
$SQL "SELECT a.id, a.invdate, b.name, a.amount,a.tax,a.total,a.note,a.closed,a.ship_via FROM invheader a, clients b WHERE a.client_id=b.client_id".$wh." ORDER BY ".$sidx." "$sord." LIMIT ".$start." , ".$limit;
        
$result mysql_query$SQL ) or die("Couldn t execute query.".mysql_error());

        if ( 
stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
          
header("Content-type: application/xhtml+xml;charset=utf-8"); } else {
          
header("Content-type: text/xml;charset=utf-8");
        }
          
$et ">";
          
$s "<?xml version='1.0' encoding='utf-8'?$et\n";
        
$s .= "<rows>";
        
$s .= "<page>".$page."</page>";
        
$s .= "<total>".$total_pages."</total>";
        
$s .= "<records>".$count."</records>";
        
// be sure to put text data in CDATA
        
while($row mysql_fetch_array($result,MYSQL_ASSOC)) {
            
$s .= "<row id='"$row[id]."'>";            
            
$s .= "<cell>"$row[id]."</cell>";
            
$s .= "<cell>"$row[invdate]."</cell>";
            
$s .= "<cell><![CDATA["$row[name]."]]></cell>";
            
$s .= "<cell>"$row[amount]."</cell>";
            
$s .= "<cell>"$row[tax]."</cell>";
            
$s .= "<cell>"$row[total]."</cell>";
            
$s .= "<cell>"$row[closed]."</cell>";
            if( 
$row[ship_via] == 'TN'$s .= "<cell>TNT</cell>";
            else if( 
$row[ship_via] == 'FE'$s .= "<cell>FedEx</cell>";
            else 
$s .= "<cell></cell>";
            
$s .= "<cell><![CDATA["$row[note]."]]></cell>";            
            
$s .= "</row>";
        }
        
$s .= "</rows>";
        echo 
$s;
        break;
}
mysql_close($db);

function 
Strip($value)
{
    if(
get_magic_quotes_gpc() != 0)
      {
        if(
is_array($value))  
            if ( 
array_is_associative($value) )
            {
                foreach( 
$value as $k=>$v)
                    
$tmp_val[$k] = stripslashes($v);
                
$value $tmp_val
            }                
            else  
                for(
$j 0$j sizeof($value); $j++)
                    
$value[$j] = stripslashes($value[$j]);
        else
            
$value stripslashes($value);
    }
    return 
$value;
}
function 
array_is_associative ($array)
{
    if ( 
is_array($array) && ! empty($array) )
    {
        for ( 
$iterator count($array) - 1$iterator$iterator-- )
        {
            if ( ! 
array_key_exists($iterator$array) ) { return true; }
        }
        return ! 
array_key_exists(0$array);
    }
    return 
false;
}


?>
Importante: este codigo es el que viene con los ejemplos del jqgrid.
  #4 (permalink)  
Antiguo 15/11/2011, 08:23
 
Fecha de Ingreso: noviembre-2011
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Jqgrid Guardar cambios en la base de datos

Hola,
mira el problema que tienes es que cuando envias la informacion para editar, no la estas recibiendo en ninguna parte.
la pagina que recibe los datos de editar, se define en - editurl:"someurl.php", -
esa someurl.php es la que recibe los datos por GET o POST segun lo tengas definido en el colModel con mtype.

en tu ejemplo defines los siguientes campos como editables

{name:'invdate',index:'invdate', width:80,editable:true,editoptions:{size:10}},
{name:'name',index:'name', width:90,editable:true,editoptions:{size:25}},
{name:'amount',index:'amount', width:60, align:"right",editable:true,editoptions:{size:10}},
{name:'tax',index:'tax', width:60, align:"right",editable:true,editoptions:{size:10}},
{name:'total',index:'total', width:60,align:"right",editable:true,editoptions:{size:10}},
{name:'closed',index:'closed',width:55,align:'cent er',editable:true,edittype:"checkbox",editoptions:{value:"Yes:No"}} ,
{name:'ship_via',index:'ship_via',width:70, editable: true,edittype:"select",editoptions:{value:"FE:FedEx;TN :TNT"}},
{name:'note',index:'note', width:100, sortable:false,editable: true,edittype:"textarea", editoptions:{rows:"2",cols:"20"}}


Entonces, al abrir el formulario para editar la fila seleccionada en la grilla, y apretar el boton aceptar, te envia los campos que tienen editable:true a la pagina editurl:"someurl.php"

en el ejemplo se enviarian estos datos de la siguiente forma

invdate = "dato que hallas ingresado en el formulario, o el que tenia si no lo cambiaste",
name = "dato que hallas ingresado en el formulario, o el que tenia si no lo cambiaste",
amount = "dato que hallas ingresado en el formulario, o el que tenia si no lo cambiaste",
tax ="dato que hallas ingresado en el formulario, o el que tenia si no lo cambiaste",
total = "dato que hallas ingresado en el formulario, o el que tenia si no lo cambiaste",
closed = "dato que hallas ingresado en el formulario, o el que tenia si no lo cambiaste",
ship_via = "dato que hallas ingresado en el formulario, o el que tenia si no lo cambiaste",
note = "dato que hallas ingresado en el formulario, o el que tenia si no lo cambiaste",



Entonces en "someurl.php" debes configurarla para recibir estos datos que señalé, por metodos $_POST o $_GET que como dije segun hallas definido en el colModel, con el parametro mtype.

ademas de los datos que son editables, tambien se envia un parametro
oper = edit,

para saber que datos se envian mediante ajax. como lo hace jqgrid te recomiendo instales un complemento de firefox que se llama FIREBUG, tambien hay una version para chrome.







(ejemplo definir mtype)
[
{name:.......index:......,editable:'true'.....},
{name:.......index:......,editable:'true'.....},
{name:.......index:......,editable:'false'.....},
],
mtype: 'POST',
......
.....
]
  #5 (permalink)  
Antiguo 15/11/2011, 08:44
 
Fecha de Ingreso: noviembre-2011
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Jqgrid Guardar cambios en la base de datos

ah, me faltaba, entonces al recibir los datos wn someurl.php
debes conectarte a la BD, crear una consulta UPDATE con los datos a actualizar
y ejecutarla
  #6 (permalink)  
Antiguo 13/03/2012, 10:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 155
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Jqgrid Guardar cambios en la base de datos

hola partusano yo tengo el mismo problema que vic258 yo ya he puesto una direccion donde editar el documento y me envia bien a la pagina php pero no se me quita el formulario que el crea, y si me adiciona al grid el elemento adicionado, mira este es el codigo que tengo para crear el grid

Código:
jQuery(document).ready(function(){

    jQuery("#crud").jqGrid({ 
        url:load.php, 
        editurl: edit.php,
        datatype: "json", 
        colNames:['Identificador','Texto'], 
        colModel:[ 
            {name:'idmsg',index:'idmsg', width:200, editable:true, sorttype:'string'}, 
            {name:'textomsg',index:'textomsg', width:300,editable:true}, 
        ], 
        rowNum:10, 
        rowTotal: 50, 
        rowList:[10,20,30], 
        pager: '#pcrud', 
        sortname: 'id', 
        loadonce: true,
        viewrecords: true, 
        sortorder: "desc", 
    }); 

    //jQuery("#crud").jqGrid('navGrid','#pcrud',{}); 
    
    jQuery("#crud").jqGrid('navGrid','#pcrud',
        {}, //options
        {height:350,reloadAfterSubmit:true}, // edit options
        {height:350,reloadAfterSubmit:true}, // add options
        {reloadAfterSubmit:true}, // del options
        {} // search options
        );
});
cuando presiono el boton adicionar me levanta un formulario con los campos editables, cuando lleno todo y presiono guardar, me envia a la pagina edit.php, con el firebug veo los parametros que me manda el problema esta en la respuesta que envio yo le mando una respuesta cualquiera todo bien pero no me quita el formulario donde inserte el elemento, realmente me hace falta saber si hay que mandarle una respuesta especifica, tambien quisiera saber como mandarle mensajes de error porque necesito validar del lado del servidor algunas cosas, agradecere tu ayuda

saludos manuelle
  #7 (permalink)  
Antiguo 14/08/2012, 03:20
 
Fecha de Ingreso: noviembre-2011
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Jqgrid Guardar cambios en la base de datos

Hola manuelle, disculpa la demora, pero recien veo el mensaje, espero hallas encontrado la solucion, pero dejo mi respuesta por si a alguien le sirve

para cerrar la ventana del formulario despues de retornar de la pagina del servidor, es muy sencillo debes configurar la opcion closeAfterAdd o closeAfterEdit dependiendo del caso, en tu ejemplo seria:


Código:
jQuery(document).ready(function(){

    jQuery("#crud").jqGrid({ 
        url:load.php, 
        editurl: edit.php,
        datatype: "json", 
        colNames:['Identificador','Texto'], 
        colModel:[ 
            {name:'idmsg',index:'idmsg', width:200, editable:true, sorttype:'string'}, 
            {name:'textomsg',index:'textomsg', width:300,editable:true}, 
        ], 
        rowNum:10, 
        rowTotal: 50, 
        rowList:[10,20,30], 
        pager: '#pcrud', 
        sortname: 'id', 
        loadonce: true,
        viewrecords: true, 
        sortorder: "desc", 
    }); 

    //jQuery("#crud").jqGrid('navGrid','#pcrud',{}); 
    
    jQuery("#crud").jqGrid('navGrid','#pcrud',
        {}, //options
        {height:350,reloadAfterSubmit:true,closeAfterEdit:true}, // edit options
        {height:350,reloadAfterSubmit:true,closeAfterAdd:true}, // add options
        {reloadAfterSubmit:true}, // del options
        {} // search options
        );
});



por tu otra pregunta, si necesitas validaciones clasicas, jqgrid te provee de unos metodos para poder hacerlas en el lado del cliente antes de enviarla al servidor, definiendo unas reglas en tu colmodel

en tu caso podrias poner

Código:
colModel:[ 
            {name:'idmsg',index:'idmsg', width:200, editable:true,sorttype:"int",editable:true,editrules :{required:true,number:true}}, //aqui indicamos que es un parametro que debe ingresar obligatoriamente (required:true) y que debe ser de tipo numerico (number:true)
            {name:'textomsg',index:'textomsg', width:300,editable:true}, 
        ],

tienes muchas opciones, por ejemplo puedes poner

email:true, url:true, minValue:50, maxValue:100, date, etc...

incluso puedes hacer una validacion con una funcion javascript tuya, con esta opcion del editrule
custom:true, custom_func:mifuncion,

algo asi
Código:


<script>
function mifuncion(value, colname) {
if (value < 0 || value >20) 
   return [false,"Please enter value between 0 and 20"];
else 
   return [true,""];
}
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'idmsg',index:'idmsg', width:200, editrules:{custom:true, custom_func:mifuncion}, editable:true },
      ...
   ]
...
});
</script>

puedes ver la documentacion completa en esta pagina

[URL="http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules&s[]=editrules"]http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules&s[]=editrules[/URL]

busca por las opciones de editrules


si ya no hay caso y necesitas hacer la validacion en el servidor


busca en la misma pagina por el evento afterSubmit



esta pagina tambien es muy buena te la recomiendo
[URL="http://trirand.com/blog/jqgrid/jqgrid.html"]http://trirand.com/blog/jqgrid/jqgrid.html[/URL]

espero sea de utilidad.
  #8 (permalink)  
Antiguo 14/08/2012, 03:24
 
Fecha de Ingreso: noviembre-2011
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Jqgrid Guardar cambios en la base de datos

estas paginas....

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing&s[]=closeafteradd

http://trirand.com/blog/jqgrid/jqgrid.html
  #9 (permalink)  
Antiguo 07/01/2013, 10:42
Avatar de david_blanco_2000  
Fecha de Ingreso: enero-2013
Ubicación: Caracas
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Jqgrid Guardar cambios en la base de datos

Codigo:
--------
<link rel="stylesheet" type="text/css" media="screen" href="css/ui-lightness/jquery-ui-1.8.16.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />

<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$("#grps").jqGrid({
url:'Carga_Datos.php',
datatype: 'json',
mtype: 'GET',
colNames: ['Id_Registro','Codigo_Cuenta','Centro_Costo', 'Doc_Asoc','Tipo', 'Descripcion', 'Monto'],
colModel: [
{ name: 'Id_Registro', index: 'Id_Registro', width: 100, align: 'left',editable: true},
{ name: 'Codigo_Cuenta', index: 'Codigo_Cuenta', width: 100, align: 'left',editable: true},
{ name: 'Centro_Costo', index: 'Centro_Costo', width: 100, align: 'left',editable: true },
{ name: 'Doc_Asoc', index: 'Doc_Asoc', width: 100, align: 'left',editable: true },
{ name: 'Tipo', index: 'Tipo', width: 100, align: 'left',editable: true},
{ name: 'Descripcion', index: 'Descripcion', width: 200, align: 'left',editable: true},
{ name: 'Monto', index: 'Monto', width: 200, align: 'left',editable: true},
],
pager: '#pgrps',
rowNum:15,
rowList:[10,25,50,100],
autowidth: true,
sortname: 'Id_Registro',
sortorder: 'desc',
viewrecords: true,
width: "98%",
height: "100%",
editurl: "inlineEdit.php",
caption: 'Action Plan List'
});


$("#Editar").click(function()
{
var gr = jQuery("#grps").jqGrid('getGridParam','selrow');
if( gr != null )
{
jQuery("#grps").jqGrid('editGridRow',gr,{height:28 0,reloadAfterSubmit:false,closeAfterEdit:true});
}else{
alert("Seleccione el Registro a editar");
}
});


$("#Agregar").click(function()
{
jQuery("#grps").jqGrid('editGridRow',"new",{height :280,reloadAfterSubmit:false,closeAfterAdd:true});
});


$("#Eliminar").click(function(){
var gr = jQuery("#grps").jqGrid('getGridParam','selrow');
if( gr != null ) jQuery("#grps").jqGrid('delGridRow',gr,{reloadAfte rSubmit:false});
else alert("Seleccione el Registro a borrar!"); });
});


</script>
</head>
<body>
<h1>Title-Time</h1>

<table id="grps"></table>
<div id="pgrps"></div>
<input type="BUTTON" id="Editar" name="Editar" value="Editar" />
<input type="BUTTON" id="Agregar" value="Agregar" />
<input type="BUTTON" id="Eliminar" value="Eliminar" />

</body>


--------
Explicación:
------------------

Hojas de estilo:
-------------------------

<link rel="stylesheet" type="text/css" media="screen" href="css/ui-lightness/jquery-ui-1.8.16.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />


Librerías a ser invocadas para poder trabajar con el grid:
----------------------------------------------------------------------------------

<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
<script type="text/javascript">


url:'Carga_Datos.php':
-------------------------------
Es la ruta y nombre del archivo PHP que será el que nos permite leer y cargar datos desde la base de datos (el código del mismo lo pondré un poco más abajo).

datatype: 'json':
----------------------
Indica el tipo de información que regresara el servidor puede ser XML también.

mtype: 'GET'
-------------------
Indica como se hará la petición ajax, “POST” o “GET”

colNames: ['Id_Registro','Codigo_Cuenta','Centro_Costo', 'Doc_Asoc','Tipo', 'Descripcion', 'Monto']:
---------------------------------------------------------------------------------------------------------
Estos son los nombres de los campos de la base de datos o del arreglo que estés trabajando.




colModel: [
{ name: 'Id_Registro', index: 'Id_Registro', width: 100, align: 'left',editable: true},
{ name: 'Codigo_Cuenta', index: 'Codigo_Cuenta', width: 100, align: 'left',editable: true},
{ name: 'Centro_Costo', index: 'Centro_Costo', width: 100, align: 'left',editable: true },
{ name: 'Doc_Asoc', index: 'Doc_Asoc', width: 100, align: 'left',editable: true },
{ name: 'Tipo', index: 'Tipo', width: 100, align: 'left',editable: true},
{ name: 'Descripcion', index: 'Descripcion', width: 200, align: 'left',editable: true},
{ name: 'Monto', index: 'Monto', width: 200, align: 'left',editable: true},
]:
----------------------------------------------------------------------------------------

Es un arreglo que describe las opciones de cada columna, algunas opciones son las siguientes

name: Nombre de la columna

index: Es el nombre que se envía al servidor cuando se ordenan los datos

width: Indica el ancho de la columna

editurl: "inlineEdit.php":
-------------------------------
Contiene el código que grabara los datos en la tabla de la base de datos (Pondré el código más adelante también).


resizable: Indica si el ancho de la columna se puede redimensionar, los posible valores son true o false

align: Alineación del texto, los posible valores son: left, center, right

pager: Indica que elemento HTML que sera la barra de paginacion, se utiliza su atributo id

rowNum: Indica cuantas filas se mostraran por pagina

sortname: Indica el campo por el cual se ordenaran los datos

sortorder: Indica si se ordenaran de forma ascendente “asc” o descendente “desc”

viewrecords: Indica se se mostrara el numero de registros que tiene la tabla, puede ser true o false

captio: Indica el titulo del grid

************************** CODIGO DEL ARCHIVO CARGA DATOS******

Importante: yo uso la librería adodb para conectarme al postgresql y trabajarlo puedes documentarte en esta dirección:

http://www.lacorona.com.mx/fortiz/adodb/docs-adodb-es.htm#ex11

<?php
require('funciones/Conectar.php');
$page = $_GET['page']; // get the requested page
$limit = $_GET['rows']; // get how many rows we want to have into the grid
$sidx = $_GET['sidx']; // get index row - i.e. user click to sort
$sord = $_GET['sord']; // get the direction
if(!$sidx) $sidx =1; // connect to the database

$SQL_Funciones ='SELECT "Asientos"."Id_Registro","Asientos"."Numero_Compro bante", "Asientos"."Codigo_Cuenta", "Asientos"."Numero_Documento", "Asientos"."Descripcion_Asiento", "Asientos"."Monto_Asiento" FROM "Asientos" INNER JOIN "Comprobante" ON ("Comprobante"."Numero_Comprobante" = "Asientos"."Numero_Comprobante") INNER JOIN "Centros_Costo" ON ("Centros_Costo"."Codigo_Centro" = "Asientos"."Codigo_Centro_Costo") INNER JOIN "Plan_Cuentas" ON ("Plan_Cuentas"."Codigo_Cuenta" = "Asientos"."Codigo_Cuenta") where "Asientos"."Numero_Comprobante"'."='"."b1040068"." '";



$Data_Funciones_N = $conn->Execute("$SQL_Funciones");
$count=$Data_Funciones_N->RecordCount();

if( $count >0 ) { $total_pages = ceil($count/$limit); } else { $total_pages = 0; }
if ($page > $total_pages) $page=$total_pages; $start = $limit*$page - $limit; // do not put $limit*($page - 1)
$responce->page = $page;
$responce->total = $total_pages;
$responce->records = $count;
$i=0;
while (!$Data_Funciones_N->EOF)
{

//$responce->rows[$i]['Codigo_Cuenta']=$Data_Funciones_N->fields[1];
$responce->rows[$i]['cell']=array($Data_Funciones_N->fields[0],$Data_Funciones_N->fields[1],$Data_Funciones_N->fields[2],$Data_Funciones_N->fields[3],$Data_Funciones_N->fields[4],$Data_Funciones_N->fields[5]);
$i++;
$Data_Funciones_N->MoveNext();
}
echo json_encode($responce);
?>


Explicación:
---------------
Este código simplemente se conecta a la base de datos lee los registros mediante un ciclo y devuelve los registros solicitados puedes cambiarlo por tu propio método de conexión y recorrida de registros.



*************CODIGO DEL ARCHIVO inlineEdit.php************

<?php
extract($_POST);
extract($_GET);
require('funciones/Conectar.php');

if (($_POST['oper']) == "add") {// agregar registros

$Sql_Inyecta="INSERT INTO ".'"Prueba"("campo") VALUES ';
$Sql_Valores="('".$_POST['Centro_Costo']."')";
$Sql_Inyecta=($Sql_Inyecta.$Sql_Valores);
if ($conn->Execute($Sql_Inyecta)== false) {print 'Error Insertando Registros';}



}

if (($_POST['oper']) == "del") {// eliminar registros


// query para borrar


}


if (($_POST['oper']) == "edit") {// editar registros


// query para editar


}

?>


Explicación:
---------------------
Al hacer clic en los botones Editar, Agregar o Eliminar mediante el método post son pasados a este archivo (inlineEdit.php) cada uno de los campos descritos en el colNames:

['Id_Registro','Codigo_Cuenta','Centro_Costo', 'Doc_Asoc','Tipo', 'Descripcion', 'Monto'],

Junto a un parámetro llamado oper el cual identifica el tipo de operación ejecutada si deseas ver internamente como trabaja este proceso instala el complemento de Firefox firebug selecciona la opción red, dentro de la opción red selecciona todo y luego selecciona la pestaña post y veras como son enviados los valores al archivo inlineEdit.php


Documentación de Firebug:

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=firebugAvanzado
  #10 (permalink)  
Antiguo 09/02/2014, 21:00
 
Fecha de Ingreso: febrero-2014
Mensajes: 1
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Jqgrid Guardar cambios en la base de datos

Hola, tengo un inconveniente con jqgrid por favor si me pueden ayudar.....

cuando presiono el boton adicionar me levanta un formulario con los campos editables, cuando lleno todo y presiono guardar, NO me envia a la pagina edit.php, porque puede ser?

en mi codigo la estoy invocando asi:

$(document).ready(function(){
jQuery("#navgrid").jqGrid({
url:'clientes.php',
editurl: 'someurl.php',
datatype: 'json',
mtype: 'POST',
colNames:['ID','NOMBRE', 'DIRECCION','TELEFONO','EMAIL'],
colModel:[
{name:'idCliente', index:'idCliente', width:50, resizable:false, align:"center", editable:false, editoptions:{readonly:true,size:10}},
{name:'nombre', index:'nombre', width:160,resizable:true, sortable:true, editable:true, editoptions:{size:40}},
{name:'direccion', index:'direccion', width:150, editable:true, editoptions:{size:25}},
{name:'telefono', index:'telefono', width:70, editable:true, editoptions:{size:15}},
{name:'email', index:'email', width:120, editable:true, editoptions:{size:60}}
],
pager: '#pagernav',
rowNum:10,
rowList:[15,30,60],
sortname: 'idCliente',
loadonce: true,
sortorder: 'asc',
viewrecords: true,
caption: 'CLIENTES',
height:210
});
jQuery("#navgrid").jqGrid('navGrid','#pagernav',
{}, //options
{height:280,reloadAfterSubmit:true,closeAfterEdit: true}, // edit options
{height:280,reloadAfterSubmit:true,closeAfterEdit: true}, // add options
{reloadAfterSubmit:true}, // del options
{} // search options
);
});

desde ya, muchas gracias!!!

Etiquetas: cambios, jqgrid
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:02.