• Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)
  • Cuixer, una forma de administrar páginas web que nunca viste!

Grilla con Paginación usando PHP-MySQL-JSON

Comparte tus proyectos y aplicaciones desarrolladas con Ext.
Avatar de Usuario
Ext.foro.Administrador
Mensajes: 1932
Registrado: 07 Mar 2008, 20:45
Ubicación: Argentina
NotaPublicado: 27 Ene 2009, 11:16
No sabría decirte cual debe ser el problema. Proba instalando el Apache y las Bases de Datos de nuevo. Te recomiendo instalarte el "wamp".
Aprender haciendo...
Desarrollo de aplicaciones en ExtJS [CONSULTAR].
Buscar en el foro antes de preguntar y Leer la Documentación.
Imagen
Para no ver esta publicidad, debes ser usuario del Foro.
Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)


Cuixer, una forma de administrar páginas web que nunca viste!


Ext.foro.Nuevo
Mensajes: 5
Registrado: 04 Dic 2008, 06:10
NotaPublicado: 05 Feb 2009, 05:58
Garras gracias por el interes, con wamp es el mismo resulado. La verdad es que un poco deprimente, porque lo mas facil, no sale, y ademas es un ejemplo, que se supone que con solo ejecutarlo debe ir.

Estoy utilizando el firebug, pero no se como ver que le llega al js desde php, por cierto me salen dos errores:

missing ; before statement
[Break on this error] <project path="" name="Ext Examples" aut...icense" output="C:\apps\www\deploy\ext-2

createCodePanel is not defined
[Break on this error] createCodePanel('grid_js.js', 'Ver código para crear este ejemplo');
Avatar de Usuario
Ext.foro.Administrador
Mensajes: 1932
Registrado: 07 Mar 2008, 20:45
Ubicación: Argentina
NotaPublicado: 05 Feb 2009, 13:54
Los datos de acceso a la BD están bien? Tu servidor está bien configurado?
Aprender haciendo...
Desarrollo de aplicaciones en ExtJS [CONSULTAR].
Buscar en el foro antes de preguntar y Leer la Documentación.
Imagen

Ext.foro.Nuevo
Mensajes: 2
Registrado: 20 Sep 2010, 19:21
NotaPublicado: 20 Sep 2010, 19:42
A mi me pasó exactamente lo mismo, el Grid muestra los registros pero ningún campo muestra datos, es decir, muestra los registros mas no el contenido de cada columna.

El problema está en que el autor del ejemplo puso un script SQL (paises.txt) donde los nombres de los campos y de la base de datos difieren de los del ejemplo:

Yo he solucionado el problema haciendo el siguiente cambio en el código:

Solución en grilla.js:
Código: Seleccionar todo
/*
* Ext JS Library 2.0.2
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*
* Ejemplo por: garraS (garraS@extjs.es)
* Fixed by: ironhandlord[
*/

Ext.onReady(function(){
   
   Ext.QuickTips.init();
   
   var bd = Ext.getBody();
   
   //bd.createChild({tag: 'h2', html: 'Grid con Paginaci&oacute;n usando PHP, MySQL y JSON'});

   var store = new Ext.data.JsonStore({
      url: 'script.php',    
      root: 'paises',
      sortInfo: {
         field: 'PAI_NOMBRE',
         direction: 'ASC'
      },
      totalProperty: 'total',
      fields: [
         {name:'PAI_PK'},
         {name:'PAI_ISONUM', type: 'string'},
         {name:'PAI_ISO2', type: 'string'},
         {name:'PAI_ISO3', type: 'string'},
         {name:'PAI_NOMBRE', type: 'string'}
      ]
   });
   
   var grid = new Ext.grid.GridPanel({
      store: store,
      columns: [
         {
            header: "id",
            width: 100,
            align: 'right',
            sortable: true,
            dataIndex: 'PAI_PK'
         }, {
            header: "ISONUM",
            width: 200,
            sortable: true,
            dataIndex: 'PAI_ISONUM'
         }, {
            header: "ISO2",
            width: 200,
            sortable: true,
            dataIndex: 'PAI_ISO2'
         }, {
            header: "ISO3",
            width: 200,
            sortable: true,
            dataIndex: 'PAI_ISO3'
         }, {
            header: "Nombre",
            width: 200,
            sortable: true,
            dataIndex: 'PAI_NOMBRE'
         }       
      ],
      viewConfig: {
         forceFit: true
      },
      sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
      bbar: new Ext.PagingToolbar({
         pageSize: 10,
         store: store,
         displayInfo: true
      }),
      width:500,
      height:270,
   });
   
   grid.render(bd);
   
   store.load({
      params: {
         start: 0,
         limit: 10
      }         
   });
   
   //createCodePanel('grid_js.js', 'Ver c&oacute;digo para crear este ejemplo');
   
});


Solución en script.php:
Código: Seleccionar todo
<?php   
$dbHost = 'localhost';
$dbUsuario = 'root';
$dbPw = '****';
$db = '****';

$link = mysql_connect($dbHost, $dbUsuario, $dbPw) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());   

function filtro_grid($contenido){
   $contenido = str_replace("�","¡",$contenido);
   $contenido = str_replace("�","á",$contenido);
   $contenido = str_replace("�","é",$contenido);
   $contenido = str_replace("�","�-",$contenido);
   $contenido = str_replace("�","ó",$contenido);
   $contenido = str_replace("�","ú",$contenido);
   $contenido = str_replace("�","ñ",$contenido);
   $contenido = str_replace("�","Á",$contenido);
   $contenido = str_replace("�","É",$contenido);
   $contenido = str_replace("�","Í",$contenido);
   $contenido = str_replace("�","Ó",$contenido);
   $contenido = str_replace("�","Ú",$contenido);
   $contenido = str_replace("�","Ñ",$contenido);
   return $contenido;
}

$tabla = 'pai_pais';

$start = (integer) (isset($_POST['start']) ? $_POST['start'] : $_GET['start']);
$end = (integer) (isset($_POST['limit']) ? $_POST['limit'] : $_GET['limit']);

$start = ($start >0 )? $start: 0;
$end = ($end>0)? $end : 10;

$sql_count = 'SELECT * FROM ' . $tabla;
$sql = $sql_count . ' LIMIT ' . $start . ', '. $end;


$result_count = mysql_query($sql_count);

$rows = mysql_num_rows($result_count);

//echo $sql;
$result = mysql_query($sql);

while($rec = mysql_fetch_array($result, MYSQL_ASSOC)){
   $arr[] = filtro_grid($rec);
};

if (version_compare(PHP_VERSION,"5.2","<")){
   require_once("JSON.php");
   $json = new Services_JSON();
   $data=$json->encode($arr);
}else{
   $data = json_encode($arr);
}   
echo '({"total":"' . $rows . '","paises":' . $data . '})';
?>


Se le pide por favor a los autores que pongan más atención a la hora de publicar sus ejemplos, ya que es bastante incómodo para el lector encontrar y solucionar los problemas...

Aún así, muchas gracias está muy bueno el ejemplo.
Avatar de Usuario
Ext.foro.Administrador
Mensajes: 1932
Registrado: 07 Mar 2008, 20:45
Ubicación: Argentina
NotaPublicado: 30 Sep 2010, 01:58
Gracias por postear tu solución ironhandlord.

Ext.foro.Moderador
Mensajes: 240
Registrado: 11 Feb 2011, 00:19
Ubicación: Venezuela
NotaPublicado: 26 Ene 2012, 16:12
Tengo un problema que siempre me llega 10 en limit aunque cambie el parametro en el store. No consigo como hacer para que me envie la primera un valor diferente de 10. Si coloco otro valor en el store solo me funcione cuando le doy a recargar en la paginación del grid.

Código: Seleccionar todo
baseParams: {limit:20}


Probe imprimir el arreglo $_POST y $_REQUEST en php y llega en ambos arreglos limit = 10.

Alguna idea de que puedo estar haciendo mal?
Busca en el Foro antes de preguntar o lee la Documentación
Desarrollo Web y Aplicaciones Consultar
Avatar de Usuario
Ext.foro.Nuevo
Mensajes: 1
Registrado: 04 Abr 2012, 18:53
NotaPublicado: 11 Abr 2012, 19:46
mbravo escribió:hOla muy bueno tu ejemplo!..Pero tengo una duda, no se como hacerlo, quiero poner esta grilla dentro de un Tab Panel, y hacer que cuando uno le de click a un registro, abra un nuevo Tab con el detalle de ese registro, seria posible hacer esto? eh visto los ejemplos de grillas(grids) y de panels por separado pero eh intentado hacer lo que les comento sin exito.. . alguien tiene alguna sugerencia?

saludos!!


Hola yo realice un proyecto en el cual tengo en una grilla mis registros y al hacer clin en uno me habre un panel con su descripcion es cosa facil

Ext.foro.Nuevo
Mensajes: 1
Registrado: Ayer, 15:10
NotaPublicado: Ayer, 16:44
Amigos recien el dia de hoy empiezo a ver este mundo de EXTJS pero me parece super bueno... La duda que tengo es respecto a este ejemplo...
Yo tengo mi servidor Apache trabajando y la carpeta donde pongo mis scripts es
d:\servidor\WEB, a en ese lugar tal cual dice el instructivo de ese ejemplo descomprimi todo el EXTJS que me descargue, luego puse este ejemplo tal cual dicen en la carpeta examples, bajo el nombre paginacion y ahi esta ubicado los archivos de eset ejemplo, en otras palabras quedo asi
d:\servidor\WEB\EXTJS\examples\paginacion\(archivos del ejemplo)
Aclaro que ya hice bien la conexion a mi BD de MySQL y todo lo cenesario, pero sin embargo no me muestra nada, solo sale "Grid con Paginación usando PHP, MySQL y JSON" y mas abajo nada.
Aclararles tambien que ya hice la prueba con otros ejemplos de EXTJS Grids y tambien con formularios y todo eso, pero es solo este caso el que no quiere correr...
Incluso corregi mi codigo como dice en el ejemplo de arriba y nada...
Ayudenme por favor...
Anterior

Volver a Ejemplos y proyectos





  • Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)
  • Cuixer, una forma de administrar páginas web que nunca viste!