PROYECTO CON EXTJS, PHP Y MYSQL
HOLA AMIGOS HABER SI ALGUIEN PUEDE AYUDARME?????
ESTOY DESARROLLANDO UN PROYECTO CON EXTJS, PHP Y MYSQL, COMO APENAS ESTOY INCURSIONANDO EN ESTA TECNOLOGIA DE AJAX NECESITO MUCHA AYUDA POR FAVOR????
COMO PUEDE LISTAR LOS DATOS DE UNA TABLA EN MYSQL EN UN GRID COMO LO HACEN EN EJEMPLO UTILIZANDO ARREGLOS, PERO YO LO QUIERO HACER CON INFORMACION QUE TENGO EN MI TABLA.... GRACIAS TODOS POR SU AYUDA Y POR ALGUNOS EJEMPLOS QUE PUEDAN FACILITARME PARA HACER ESTO...
Hola duvan, bienvenido al foro.
Mira, lo que pides es muy sencillo, y para ayudarte me voy a basar en el siguiente tutorial:
<!-- m -->http://www.quizzpot.com/2009/07/paginad ... n-un-grid/<!-- m -->
Si te das cuenta allí se explica lo que necesitas, se crea una tabla y se llena mediante una llamada con Ajax al servidor, ademas se puede paginar la tabla.
Ok, en el ejemplo se utilizan arreglos para almacenar la información:
<?php header("Content-Type: text/plain"); $start = isset($_POST['start'])?$_POST['start']:0; //posición a iniciar $limit = isset($_POST['limit'])?$_POST['limit']:5; //número de registros a mostrar $data = array( array('city'=>'Mexico city','visits'=>684,'pageVisits'=>4.11,'averageTime'=>'00:06:53'), array('city'=>'La Victoria','visits'=>443,'pageVisits'=>4.39,'averageTime'=>'00:07:28'), array('city'=>'Madrid','visits'=>380,'pageVisits'=>3.11,'averageTime'=>'00:05:22'), array('city'=>'Providencia','visits'=>204,'pageVisits'=>3.83,'averageTime'=>'00:08:20'), array('city'=>'Bogota','visits'=>204,'pageVisits'=>3.26,'averageTime'=>'00:04:57'), array('city'=>'Puerto Madero','visits'=>192,'pageVisits'=>3.56,'averageTime'=>'00:05:07'), array('city'=>'Monterrey','visits'=>174,'pageVisits'=>3.90,'averageTime'=>'00:06:06'), array('city'=>'Barcelona','visits'=>145,'pageVisits'=>3.28,'averageTime'=>'00:05:39'), array('city'=>'Caracas','visits'=>132,'pageVisits'=>4.55,'averageTime'=>'00:06:27'), array('city'=>'Rosario','visits'=>116,'pageVisits'=>2.44,'averageTime'=>'00:04:30'), array('city'=>'Oaxaca','visits'=>108,'pageVisits'=>1.73,'averageTime'=>'00:02:37'), array('city'=>'Buenos Aires','visits'=>100,'pageVisits'=>5.43,'averageTime'=>'00:07:37'), array('city'=>'Galicia','visits'=>96,'pageVisits'=>1.92,'averageTime'=>'00:04:37'), array('city'=>'Guadalajara','visits'=>90,'pageVisits'=>5.92,'averageTime'=>'00:03:37') ); $paging = array( 'success'=>true, 'total'=>count($data), //<--- total de registros a paginar 'data'=> array_splice($data,$start,$limit) ); echo json_encode($paging); ?>Lo que tienes que ahcer es leer la información desde la tabla
<?php header("Content-Type: text/plain"); $start = isset($_POST['start'])?$_POST['start']:0; $limit = isset($_POST['limit'])?$_POST['limit']:5; include('conexion.php'); $resultado = mysql_db_query("colegio","select * from estudiante"); $data = array(); while($row = mysql_fetch_array($resultado)) { //vas agregando los resultados al array "data" array_push($data, array('city'=>$row["cod_est"],'visits'=>$row["nom_est"],'pageVisits'=>$row["ape_est"],'averageTime'=>'$row["dir_est"]')); } $paging = array( 'success'=>true, 'total'=>count($data), 'data'=> array_splice($data,$start,$limit) ); echo json_encode($paging); ?>Bueno, en el query se estan sacando TODOS los registros y luego solo se regresan los que se indican en la paginación, esto no es lo mejor ya que estamos desperdiciando el resto de los registros que no enviamos, lo que te recomiendo es modificar el query para que únicamente traiga los registros solicitados. saludos PD: Tmbien te recomiendo usar el patrón MVC para tu proeycto.
Hola stock....
muchisisisisissismassssssssssss graciassss me ha funcionado correctamente el codigo, ahora tengo un problemilla tengo un registro con la sentencia administración con tilde, he comprobado y el grid no me toma registros con tildes porque sera????
gracias por tu respuesta tan rapida...
[b]Siempre[/b] que suceden esas cosas es por el [b]encoding[/b]!! en todos los proyectos que he trabajado siempre aparece ese problema <!-- s:( --><!-- s:( -->
La solución es cambiar [b]TODO[/b], absolutamente todo a UTF-8, cuando digo todo me refiero desde la base de datos, la configuración del servidor (normalmente solo con servidores con soporte JAVA), el encodign del código fuente (el que te pone tu editor de texto) y el encoding de tu HTML (utilizando las etiquetas META).
Con eso te debería funcionar bien.
saludos
Gracias amigo por tu respuesta tan pronta....
ahora tengo otro problemita y pido disculpas por tanta molestia.... pero de la misma forma como listo los registros de una tabla ahora necesito insertar un nuevo registro en la base de datos, como podria hacerlo que codigo necesito????
Gracias de antemano..
aqui se explica como hacerlo:
<!-- m -->http://www.quizzpot.com/2009/08/guardar ... -servidor/<!-- m -->
claro esta que la implementación del servidor va por tu cuenta <!-- s;) --><!-- s;) --> pero es solo hacer un "insert".
saludos
Bueno amigos siguiendo con mi proyecto y gracias a stock, la pregunta es la siguiente como puedo cargar datos desde los registros de una base de datos en un combobox para desplegar las opciones.
Gracias de antemano
[b]manduks[/b] escribió un tutorial que habla exactamente de esto:
<!-- m -->http://www.quizzpot.com/2009/06/combo-b ... ente-ajax/<!-- m -->
saludos
Hola amigos....
Como podria eliminar un registro de la base de datos cuando todos los registros estan contenidos en un grid, y la idea es que al seleccionar un registro que se lista en el grid pueda eliminarlo....
gracias por sus aportes y ayuda
Stock como seria usar el patron MVC para EXTJS como lo hariamos mira yo lo ando acomodando en carpetas Como JS PHP CSS IMAGES LIB e index principalmente dentro de las carpetas estan obviamente los archivos con esa terminacion, ahora eso seria XP o pensandolo bien seria MVC Modelo =Conexion a base de datos Vista= JS Controlador=PHP
[b]@duvan1124[/b]
Puedes hacerlo mediante una llamada ajax al servidor, le envias el ID del registro que quieres borrar, luego en el servidor haces un "delete" y actualizas el grid con los cambios.
[b]@gustavo[/b]
El MVC tiene que estar definido en las tres capaz que mencionas, te recomiendo utilziar un framework que implemente el patrón, de esta manera se facilitan las cosas, mi recomendación esn Code Igniter para PHP.
saludos
bueno me parece que este no es el post indicado para este pero bueno en realidad que te interesaría saber de code igniter
Hola amigos estoy enviando informacion al servidor con el fin de insertar registros en la base de datos, pero lastimosamente no me funciona el codigo que estoy realizando, porque lo que busco hacer es llamar la funcion desde un vinculo que tengo en la pagina html y de esta forma ejecutar la siguiente funcion:
function formusu() { //llamo a esta funcion desde un vinculo en otra pagina
this.form = new Ext.form.FormPanel({
//standardSubmit: true, // traditional submit
url: 'submitform.php',
border:false,
labelWidth: 80,
defaults: {
xtype:'textfield',
width: 150
},
items:[
{fieldLabel:'Usuario',name:'nomusu', allowBlank:false},
{fieldLabel:'Contraseña',name:'clave', allowBlank:false},
{xtype:'combo',fieldLabel:'Rol',name:'rol',triggerAction:'all',store:[2009,2008,2007,2006]}
//{xtype:'numberfield',fieldLabel:'Revenues',name:'revenues'},
//{xtype:'textarea',fieldLabel:'Comment',name:'comment'},
//{xtype:'checkbox',fieldLabel:'',labelSeparator:'',boxLabel:'Available',name:'available'}
]
});
this.win = new Ext.Window({
id:'mywin',
title: '.: Adicionar Usuario :.',
bodyStyle: 'padding:10px;background-color:#fff;',
width:300,
height:270,
items:[this.form],
buttons:[{text:'Guardar',handler:this.sendData,scope:this},{text:'Limpiar'}]
});
this.win.show();
}
limpiar: function(){
this.form.getForm().reset()
}
sendData: function(){
//submit the form
var mask = new Ext.LoadMask(Ext.get('mywin'), {msg:'Saving. Please wait...'});
mask.show();
this.form.getForm().submit({
method: 'put',
params: {
extraParam: 'Extra params!',
param2: 'Param 2'
},
success: function(form,action){
mask.hide();
Ext.Msg.alert('Success',action.result.msg);
},
failure: function(form,action){
mask.hide();
switch (action.failureType) {
case Ext.form.Action.CLIENT_INVALID:
Ext.Msg.alert('Failure', 'Formulario contiene valores invalidos a enviar');
break;
case Ext.form.Action.CONNECT_FAILURE:
Ext.Msg.alert('Failure', 'Ajax communication failed');
break;
case Ext.form.Action.SERVER_INVALID:
Ext.Msg.alert('Failure', action.result.msg);
break;
default:
Ext.Msg.alert('Failure',action.result.msg);
}//sw
}//fail
});//submit
} //function send
bueno aqui hasta la ventana logra aparecer pero no envia la informacion, agradezco a todos los que puedan ayudarme con este codigo... gracias de antemano
hola amigos buen dia..
necesito de su gran ayuda, como puedo actualizar los registros mediante AJAX en mi base de datos?????... necesitaria que me colaboraran con el codigo respectivo que se necesita muchisisisimas gracias......
revisa en el sitio principal, ahi puse un tutorial al respecto de como enviar la información de un formulario mediante Ajax al servidor, es muy sencillo.
saludos
hola amigos.... necesito de su ayuda para esto....
necesito enviar un respectivo valor al seleccionar un item en un combo pero lastimosamente lo he intentado de mil formas y siempre me envia el nombre del intem mas no el valor aqui les dejo mi codigo para que porfavor puedan sacarme de esta duda.....
{xtype:'combo',
fieldLabel:'Rol',
name:'com',
forceSelection: true,
store: store, //add the store llamamos al store
emptyText:'Seleccione uno...',
triggerAction: 'all',
editable:false,
displayField:'name',
valueField: 'cod',
}
de antemano muchas gracias
hola.. mira debes agregar
hiddenName : 'nombreDelComboBox',Te recomiendo que antes de postear tus dudas, hagas una pequeña búsqueda por el foro ya que la mayoría de las dudas que tienes ya han sido resueltas en otros hilos. Salu2 Crespo
Hola amigos.... nuevamente yo con algunas dudas.... necesito saber como puedo controlar la forma como se abren las ventanas flotantes por ejemplo para que el usuario no abra la misma ventana varias veces en mi caso cuando tengo un menu desplegable el cual me abre una ventana determinada..... y nose como controlar para que me abra una ves la ventana y no se vuelva abrir a no ser que esta a su ves alla sido cerrada...
Gracias por sus aportes
A lo mejor te puedo servir este ejemplo,
http://www.extjs.com/deploy/dev/examples/window/hello.htmluna vez que se pulsa el boton [b]Hello World[/b] se abre la ventana y si vuelves a pulsar el boton la ventana ya no se vuelve a abrir. Espero que te pueda servir.
Hola amigos, tengo un problema cuando muestro un grid quiero aplicar un estilo a la columna mensaje que tengo en mi grid pero lastimosamente no me funciona con las indicaciones que hay en el foro... gracias a quien pueda ayudarme con mi codigo:
function listarpla(){
var store = new Ext.data.JsonStore({
url: 'pagplantillas.php',
root: 'data',
totalProperty: 'total',
fields: ['Codigo','Mensaje','Rol'],
baseParams: {x:10,y:20}
});
store.load({params:{z:30,start:0,limit:5}}); //limit:6 limita la cantidad de registros a mostrar
var pager = new Ext.PagingToolbar({
store: store, // <--grid and PagingToolbar using same store
displayInfo: true,
displayMsg: '{0} - {1} of {2} Rows',
emptyMsg: 'No cities to display',
pageSize: 5 //con limit:6 limita la cantidad de registros a mostrar
});
pager.on('beforechange',function(bar,params){
params.z = 30;
});
var grid = new Ext.grid.GridPanel({
store: store, // <--grid and PagingToolbar using same store
columns: [
new Ext.grid.RowNumberer(),
{header:'Codigo', dataIndex:'Codigo',width:60,sortable: true},
{header:'Mensaje', dataIndex:'Mensaje', width:200, renderer: this.showDescription},
{header:'Rol', dataIndex:'Rol', width:130,sortable: true}
],
bbar: pager, // <--adding the pagingtoolbar to the grid
border: false,
stripeRows: true
});
this.eliData= function(){
var rec = grid.getSelectionModel().getSelected();
if (!rec) { //si variable rec esta vacia
return false;
}
else {
Ext.MessageBox.confirm('Confirmar acción','¿Realmente deseas eliminar esta plantilla?', function(btn){
if(btn=='yes'){
grid.store.remove(rec);
Ext.Ajax.request(
{
waitMsg: 'Guardando cambios...',
url: 'eliplantilla.php',
params:{codigo:rec.get('Codigo')},
scope:this
});
}
}); //mensaje
} //else
}//eliData
this.showDescription= function(value,metaData){
metaData.attr = 'style="white-space:normal"';
return value;
}
var win = new Ext.Window({
title: '.: Plantillas :.',
tbar:{
defaults:{scope:this},
items:[
{text:'Adicionar',iconCls:'plan-add',handler:this.formpla},
{text:'Eliminar',iconCls:'del-icon',handler:this.eliData}
]
},
layout: 'fit',
width: 530,
height:505,
items: grid,
//buttons: [{text:'Eliminar',handler:this.eliData,scope:this}]
});
win.show(this);
}
De antemano muchas gracias por su ayuda...
Hola amigos....
quisiera saber como realizar una busqueda en un grid que cargo desde mi base de datos, o si no es posible quisiera que me dieran una idea de como realizar un buscador, puede ser por cedula, nombre, apellido etc.... en mi casooo
de antemano muchas gracias....
si lo quieres hacer desde javascript recuerda que se hace sobre el store del grid, ahi tiene algunos metodos para filtrar la información muy fácil, checa el tutorial que escribi al respecto en la página principal.
saludos
HOla amigos...
como puedo deshabilitar la caja de texto en un formulario para que sea inmodificable (no se pueda modificar), ya que estoy realizando un modificar en un formulario y esta es la llave primaria de la tabla por tanto necesito que el formulario envie todos los datos que se modifican y tambien su respectiva llave primaria.
gracias por su ayuda y colaboracion
algo que puedes hacer es utilizar un tipo de campo [url=http://www.extjs.com/deploy/dev/docs/?class=Ext.form.Hidden]Hidden[/url] con el que podrás guardar el valor pero el campo nunca será mostrado al usuario.
la otra es en la propiedades del textfield colocar
readOnly : trueasí el usuario no podrá modificar el contenido del campo. salu2
Hola amigos estuve buscandooo pero lastimosamente no encuentro como hacer un buscador en un grid para filtrar mas facil mi informacion cuando tengo muchos registros...
cualquier ayudita bienvenida seaa y muchas gracias..
[quote="stock"]<span style="font-weight: bold;">Siempre</span> que suceden esas cosas es por el <span style="font-weight: bold;">encoding</span>!! en todos los proyectos que he trabajado siempre aparece ese problema <img src="./images/smilies/icon_e_sad.gif" alt=":(" title="Sad">
La solución es cambiar <span style="font-weight: bold;">TODO</span>, absolutamente todo a UTF-8, cuando digo todo me refiero desde la base de datos, la configuración del servidor (normalmente solo con servidores con soporte JAVA), el encodign del código fuente (el que te pone tu editor de texto) y el encoding de tu HTML (utilizando las etiquetas META).
Con eso te debería funcionar bien.
saludos[/quote]
hola,
yo pongo el endoding del html en ISO-8859 - 1 porque el mensaje que sale en Ext.MessageBox.confirm no reconoce ni la tilde ni el primer signo de interrogacion.
Ademas no entendi mucho lo de encodign del código fuente
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.