Foros del Web » Programando para Internet » PHP »

Problemas con Arreglo dentro de otro Arreglo

Estas en el tema de Problemas con Arreglo dentro de otro Arreglo en el foro de PHP en Foros del Web. Bunas foreros, les escribo para pedirles su ayuda, estoy intentando crear una función con php y extjs, para imprimir unos grids, pero me esta dando ...
  #1 (permalink)  
Antiguo 07/06/2010, 12:20
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Problemas con Arreglo dentro de otro Arreglo

Bunas foreros, les escribo para pedirles su ayuda, estoy intentando crear una función con php y extjs, para imprimir unos grids, pero me esta dando unos errores, les pego el codigo

Código PHP:

function grid_scroll_bar($titulo,$consulta,$div,$campos,$campos_hint,$alto,$ancho,$hostname_obras,$database_obras,$username_obras,$password_obras,$columnas) {
    
$obras mysql_pconnect($hostname_obras$username_obras$password_obras) or trigger_error(mysql_error(),E_USER_ERROR);  //Se usan rutas persistentes
    
mysql_select_db($database_obras$obras);
    
$query_gridsql sprintf($consulta);
    
$gridsql mysql_query($query_gridsql$obras) or die(mysql_error());
    
$row_gridsql mysql_fetch_assoc($gridsql);
    
$totalRows_gridsql mysql_num_rows($gridsql);
    
$campo[] = explode(",",$campos);
    
$total_campos count($campo);
    
$grid "<script type='text/javascript'>";
    
$grid .= "Ext.onReady(function(){";
    
$grid .= "var myData = [";
    if (
$campos_hint!="") {
        
$query_hintsql "WHERE ".$campo[0]." LIKE '".$row_gridsql[$id_campo]."'";
        
mysql_select_db($database_obras$obras);
        
$query_hintsql sprintf($consulta);
        
$hintsql mysql_query($query_hintsql$obras) or die(mysql_error());
        
$row_hintsql mysql_fetch_assoc($hintsql);
    }
    do {
        
$grid .= "[";
        
$arreglo = array();
        for (
$i 0$i $total_campos$i++) {
            
$id_campo $campo[$i];
            
$arreglo[] =  $row_gridsql[$id_campo]; //<-- Lina 264 en mi codigo
        
}
        if (
count($arreglo) > 0) {
            
$arreglo1 implode(",",$arreglo);
            
$grid .= $arreglo1;
        }
        
$grid .= "],";
    } while(
$row_gridsql mysql_fetch_assoc($gridsql));
    
$grid .= "];";
    
// create the data store
    
$grid .= "var store = new Ext.data.Store({";
    
$grid .= "proxy: new Ext.ux.data.PagingMemoryProxy(myData),";
    
$grid .= "remoteSort:true,";
    
$grid .= "sortInfo: {field:'".$campo[0]."', direction:'DESC'},";
    
$grid .= "reader: new Ext.data.ArrayReader({";
    
$grid .= "fields: [";
    
//Empezar ciclo
    
for ($j 0$j $total_campos$j++) {
            if (
$j<$total_campos) {
                
$grid .= "{name:'".$row_gridsql[$j]."'},";
            }
            if (
$j==$total_campos) {
                
$grid .= "{name:'".$row_gridsql[$j]."'}";
            }
    }
    
//Finalizar ciclo
      
$grid .= "]";
    
$grid .= "})";
    
$grid .= "})";
    
// create the Grid
    
$grid .= "var grid = new Ext.grid.GridPanel({";
    
$grid .= "store: store,";
    
$grid .= "    columns: [";
    
//Empezar el ciclo
    
for ($k 0$k $total_campos$k++) {
            if (
$k==0) {
                
$grid .= "  {id: '".$campo[$k]."',  sortable: true, dataIndex: '".$campo[$k]."'}, ";
            }
            if (
$k<$total_campos) {
                
$grid .= "{header: '".$campo[$k]."',  sortable: true, dataIndex: '".$campo[$k]."'},";
            }
            if (
$k==$total_campos) {
                
$grid .= "{header: '".$campo[$k]."',  sortable: true, dataIndex: '".$campo[$k]."'}";
            }
    }
    
//Finalizar ciclo
    
$grid .= "    ],";
    
$grid .= "   stripeRows: true,";
    
$grid .= "    autoExpandColumn: '".$campo[0]."',";
    
$grid .= "    height:".$alto.",";
    
$grid .= "   width:".$ancho.",";
    
$grid .= "   frame:true,";
    
$grid .= "   title:'".$titulo."',";
    
$grid .= "  plugins: new Ext.ux.PanelResizer({";
    
$grid .= "       minHeight: 100";
    
$grid .= "   }),";
    
$grid .= "bbar: new Ext.PagingToolbar({";
    
$grid .= "pageSize: 10,";
    
$grid .= "store: store,";
    
$grid .= "displayInfo: true,";
    
$grid .= "plugins: new Ext.ux.ProgressBarPager()";
    
$grid .= "   })";
    
$grid .= "});";
    
$grid .= "grid.render('".$div."');";
    
$grid .= "store.load({params:{start:0, limit:".$columnas."}})";
    
$grid .= "});";
    
$grid .= "</script>";
    return 
$grid;

Estos son los errores que me dan:

Warning: Illegal offset type in D:\wamp\www\gobernacion2\Connections\obras.php on line 264

Warning: Illegal offset type in D:\wamp\www\gobernacion2\Connections\obras.php on line 264
__________________
http://www.solucionesrios.tk/

Visita mi Web!
  #2 (permalink)  
Antiguo 07/06/2010, 12:38
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Problemas con Arreglo dentro de otro Arreglo

Creeeeeeeeeo que el error se solucionaría si donde haces:
Código PHP:
Ver original
  1. $campo[] = explode(",",$campos);
hicieras:
Código PHP:
Ver original
  1. $campo = explode(",",$campos);
De otro modo estarías agregando al array $campo el array devuelto por explode en la primera posición no definida (que según entiendo es la 0). ¡Suerte!
  #3 (permalink)  
Antiguo 07/06/2010, 15:28
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Problemas con Arreglo dentro de otro Arreglo

Ok amigo me funciono perfecta tu solucion sin ningun problema ahora tengo un detalle en mi funcion, es que cuando la ejecuto directo con php no me funciona, la copio y la pego desde el codigo fuente de la pagina directa, y me funciona, es decir asi no me funciona:

Código PHP:

<script type="text/javascript">
<?php 
print grid_scroll_bar("PRUEBA","SELECT *
FROM `personal`"
,"PRUEBA","cedula,nombre,apellido,correo,usuario","","320","600",$hostname_obras,$database_obras,$username_obras,$password_obras,$columnas); 
?>
</script>
Asi si me funciona (dandole al navegador boton derecho, ver codigo fuente, copiando el codigo y poniendolo directo), y acomodando los espacios

Código HTML:
<script type='text/javascript'>

Ext.onReady(function(){

	var myData = [
		['15727241','Ricardo','Ríos','[email protected]','ricardorios'],
		['9792332','Vitaliano','Giannangeli','[email protected]','vgr']
	];

	var store = new Ext.data.Store({
	proxy: new Ext.ux.data.PagingMemoryProxy(myData),
	remoteSort:true,
	sortInfo: {field:'cedula', direction:'DESC'},
	reader: new Ext.data.ArrayReader(
	{fields: [
		{name:'cedula'},
		{name:'nombre'},
		{name:'apellido'},
		{name:'correo'},
		{name:'usuario'}]
	})
	})

	var grid = new Ext.grid.GridPanel(
		{store: store,    columns: [
			{id: "cedula", width: 120,  sortable: true, dataIndex: 'cedula'}, 
			{header: "nombre", width: 120, sortable: true, dataIndex: 'nombre'},
			{header: "apellido", width: 120, sortable: true, dataIndex: 'apellido'},
			{header: "correo", width: 120, sortable: true, dataIndex: 'correo'},
			{header: "usuario", width: 120, sortable: true, dataIndex: 'usuario'}    
	],   

	stripeRows: true,    
	autoExpandColumn: 'cedula',    
	height:320,   
	width:600,   
	frame:true,   
	title:'PRUEBA',  

	plugins: new Ext.ux.PanelResizer({       
		minHeight: 100   
	}),

	bbar: new Ext.PagingToolbar({
		pageSize: 10,
		store: store,
		displayInfo: 
		true,plugins: new Ext.ux.ProgressBarPager()  
	})

	});

	grid.render('PRUEBA');
	store.load({params:{start:0, limit:10}});
	});

</script> 
Aca mi función en php Que aun no he logrado que me sirva bien T_T

Código PHP:

function grid_scroll_bar($titulo,$consulta,$div,$campos,$campos_hint,$alto,$ancho,$hostname_obras,$database_obras,$username_obras,$password_obras,$columnas) {
    
$obras mysql_pconnect($hostname_obras$username_obras$password_obras) or trigger_error(mysql_error(),E_USER_ERROR);  //Se usan rutas persistentes
    
mysql_select_db($database_obras$obras);
    
$query_gridsql sprintf($consulta);
    
$gridsql mysql_query($query_gridsql$obras) or die(mysql_error());
    
$row_gridsql mysql_fetch_assoc($gridsql);
    
$totalRows_gridsql mysql_num_rows($gridsql);
    
$campo explode(",",$campos);
    
$total_campos count($campo);
    
$ancho_columnas $ancho/$total_campos;
    
$grid "Ext.onReady(function(){";
    
$grid .= "var myData = [";
    if (
$campos_hint!="") {
        
$query_hintsql "WHERE ".$campo[0]." LIKE '".$row_gridsql[$id_campo]."'";
        
mysql_select_db($database_obras$obras);
        
$query_hintsql sprintf($consulta);
        
$hintsql mysql_query($query_hintsql$obras) or die(mysql_error());
        
$row_hintsql mysql_fetch_assoc($hintsql);
    }
    
$l 0;
    do {
        
$arreglo_indices = array();
        
$l++;
        
$grid .= "[";
        for (
$i 0$i $total_campos$i++) {
            
$id_campo $campo[$i];
            
$arreglo_indices[] =  "'".$row_gridsql[$id_campo]."'";
        }
        if (
count($arreglo_indices) > 0) {
            
$arreglo1 implode(",",$arreglo_indices);
            
$grid .= $arreglo1;
        }
        
        if (
$totalRows_gridsql != $l) {
            
$grid .= "],";
        } else {
            
$grid .= "]";
        }
    } while(
$row_gridsql mysql_fetch_assoc($gridsql));
    
$grid .= "];";
    
// create the data store
    
$grid .= "var store = new Ext.data.Store({";
    
$grid .= "proxy: new Ext.ux.data.PagingMemoryProxy(myData),";
    
$grid .= "remoteSort:true,";
    
$grid .= "sortInfo: {field:'".$campo[0]."', direction:'DESC'},";
    
$grid .= "reader: new Ext.data.ArrayReader({";
    
$grid .= "fields: [";
    
//Empezar ciclo
    
for ($j 0$j $total_campos$j++) {
        
$arreglo_nombres[] = "{name:'".$campo[$j]."'}";
    }
    
$grid .= implode(",",$arreglo_nombres);
    
//Finalizar ciclo
      
$grid .= "]";
    
$grid .= "})";
    
$grid .= "})";
    
// create the Grid
    
$grid .= "var grid = new Ext.grid.GridPanel({";
    
$grid .= "store: store,";
    
$grid .= "    columns: [";
    
//Empezar el ciclo
    
for ($k 1$k $total_campos$k++) {
        
$arreglo_campos[] = "{header: \"".$campo[$k]."\", width: ".$ancho_columnas.", sortable: true, dataIndex: '".$campo[$k]."'}";
    }
    
//Finalizar ciclo
    
$grid .= "{id: \"".$campo[0]."\", width: ".$ancho_columnas.",  sortable: true, dataIndex: '".$campo[0]."'}, ".implode(",",$arreglo_campos);
    
$grid .= "    ],";
    
$grid .= "   stripeRows: true,";
    
$grid .= "    autoExpandColumn: '".$campo[0]."',";
    
$grid .= "    height:".$alto.",";
    
$grid .= "   width:".$ancho.",";
    
$grid .= "   frame:true,";
    
$grid .= "   title:'".$titulo."',";
    
$grid .= "  plugins: new Ext.ux.PanelResizer({";
    
$grid .= "       minHeight: 100";
    
$grid .= "   }),";
    
$grid .= "bbar: new Ext.PagingToolbar({";
    
$grid .= "pageSize: 10,";
    
$grid .= "store: store,";
    
$grid .= "displayInfo: true,";
    
$grid .= "plugins: new Ext.ux.ProgressBarPager()";
    
$grid .= "   })";
    
$grid .= "});";
    
$grid .= "grid.render('".$div."');";
    
$grid .= "store.load({params:{start:0, limit:".$columnas."}});";
    
$grid .= "});";

    return 
$grid;

__________________
http://www.solucionesrios.tk/

Visita mi Web!
  #4 (permalink)  
Antiguo 07/06/2010, 15:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con Arreglo dentro de otro Arreglo

¿que espacio has corregido??, quizá esa sea la clave de tu problema...

además, al ser Javascript podrías valerte de alguna herramienta para su análisis, como Firebug
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 07/06/2010, 15:45
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Problemas con Arreglo dentro de otro Arreglo

Solo le coloco saltos de lineas al codigo javascript, y funciona.

Asi no funciona, que es cuando lo llamo con la funcion PHP, y quedaria en el codigo de la pagina asi:

Código HTML:
<script type="text/javascript">

Ext.onReady(function(){var myData = [['15727241','Ricardo','Ríos','[email protected]','ricardorios'],['9792332','Vitaliano','Giannangeli','[email protected]','vgr']];var store = new Ext.data.Store({proxy: new Ext.ux.data.PagingMemoryProxy(myData),remoteSort:true,sortInfo: {field:'cedula', direction:'DESC'},reader: new Ext.data.ArrayReader({fields: [{name:'cedula'},{name:'nombre'},{name:'apellido'},{name:'correo'},{name:'usuario'}]})})var grid = new Ext.grid.GridPanel({store: store,    columns: [{id: "cedula", width: 120,  sortable: true, dataIndex: 'cedula'}, {header: "nombre", width: 120, sortable: true, dataIndex: 'nombre'},{header: "apellido", width: 120, sortable: true, dataIndex: 'apellido'},{header: "correo", width: 120, sortable: true, dataIndex: 'correo'},{header: "usuario", width: 120, sortable: true, dataIndex: 'usuario'}    ],   stripeRows: true,    autoExpandColumn: 'cedula',    height:320,   width:600,   frame:true,   title:'PRUEBA',  plugins: new Ext.ux.PanelResizer({       minHeight: 100   }),bbar: new Ext.PagingToolbar({pageSize: 10,store: store,displayInfo: true,plugins: new Ext.ux.ProgressBarPager()   })});grid.render('PRUEBA');store.load({params:{start:0, limit:10}});});
</script>

Y asi si funciona

Código HTML:
<script type='text/javascript'>

Ext.onReady(function(){

	var myData = [
		['15727241','Ricardo','Ríos','[email protected]','ricardorios'],
		['9792332','Vitaliano','Giannangeli','[email protected]','vgr']
	];

	var store = new Ext.data.Store({
	proxy: new Ext.ux.data.PagingMemoryProxy(myData),
	remoteSort:true,
	sortInfo: {field:'cedula', direction:'DESC'},
	reader: new Ext.data.ArrayReader(
	{fields: [
		{name:'cedula'},
		{name:'nombre'},
		{name:'apellido'},
		{name:'correo'},
		{name:'usuario'}]
	})
	})

	var grid = new Ext.grid.GridPanel(
		{store: store,    columns: [
			{id: "cedula", width: 120,  sortable: true, dataIndex: 'cedula'}, 
			{header: "nombre", width: 120, sortable: true, dataIndex: 'nombre'},
			{header: "apellido", width: 120, sortable: true, dataIndex: 'apellido'},
			{header: "correo", width: 120, sortable: true, dataIndex: 'correo'},
			{header: "usuario", width: 120, sortable: true, dataIndex: 'usuario'}    
	],   

	stripeRows: true,    
	autoExpandColumn: 'cedula',    
	height:320,   
	width:600,   
	frame:true,   
	title:'PRUEBA',  

	plugins: new Ext.ux.PanelResizer({       
		minHeight: 100   
	}),

	bbar: new Ext.PagingToolbar({
		pageSize: 10,
		store: store,
		displayInfo: 
		true,plugins: new Ext.ux.ProgressBarPager()  
	})

	});

	grid.render('PRUEBA');
	store.load({params:{start:0, limit:10}});
	});

</script> 
__________________
http://www.solucionesrios.tk/

Visita mi Web!
  #6 (permalink)  
Antiguo 07/06/2010, 15:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con Arreglo dentro de otro Arreglo

en todo caso no crees que la solución esta en poner los saltos de linea y espacios desde tu función??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 07/06/2010, 16:12
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Problemas con Arreglo dentro de otro Arreglo

Cita:
Iniciado por pateketrueke Ver Mensaje
en todo caso no crees que la solución esta en poner los saltos de linea y espacios desde tu función??
Tienes toda la razón, hice los saltos de linea dentro de la función php y listo (es demasiado extraño y engorroso a veces mezclar javascript con php)

Y aqui la solución, una función php para generar grids con extjs :apla uso:

Código PHP:

function grid_scroll_bar($titulo,$consulta,$div,$campos,$campos_hint,$alto,$ancho,$hostname_obras,$database_obras,$username_obras,$password_obras,$columnas) {
    
$obras mysql_pconnect($hostname_obras$username_obras$password_obras) or trigger_error(mysql_error(),E_USER_ERROR);  //Se usan rutas persistentes
    
mysql_select_db($database_obras$obras);
    
$query_gridsql sprintf($consulta);
    
$gridsql mysql_query($query_gridsql$obras) or die(mysql_error());
    
$row_gridsql mysql_fetch_assoc($gridsql);
    
$totalRows_gridsql mysql_num_rows($gridsql);
    
$campo explode(",",$campos);
    
$total_campos count($campo);
    
$ancho_columnas $ancho/$total_campos;
    
$grid "<script type='text/javascript'>
    "
;
    
$grid .= "Ext.onReady(function(){
        "
;
    
$grid .= "var myData = [
    "
;
    
$l 0;
    do {
        
$arreglo_indices = array();
        
$l++;
        
$grid .= "[";
        for (
$i 0$i $total_campos$i++) {
            
$id_campo $campo[$i];
            
$arreglo_indices[] =  "'".$row_gridsql[$id_campo]."'";
        }
        if (
count($arreglo_indices) > 0) {
            
$arreglo1 implode(",",$arreglo_indices);
            
$grid .= $arreglo1;
        }
        
        if (
$totalRows_gridsql != $l) {
            
$grid .= "],";
        } else {
            
$grid .= "]";
        }
    } while(
$row_gridsql mysql_fetch_assoc($gridsql));
    
$grid .= "];";
    
// create the data store
    
$grid .= "var store = new Ext.data.Store({
        "
;
    
$grid .= "proxy: new Ext.ux.data.PagingMemoryProxy(myData),
    "
;
    
$grid .= "remoteSort:true,
    "
;
    
$grid .= "sortInfo: {field:'".$campo[0]."', direction:'DESC'},
    "
;
    
$grid .= "reader: new Ext.data.ArrayReader({
        "
;
    
$grid .= "fields: [
    "
;
    
//Empezar ciclo
    
for ($j 0$j $total_campos$j++) {
        
$arreglo_nombres[] = "{name:'".$campo[$j]."'}
        "
;
    }
    
$grid .= implode(",",$arreglo_nombres);
    
//Finalizar ciclo
      
$grid .= "]
    "
;
    
$grid .= "})
    "
;
    
$grid .= "})
    "
;
    
// create the Grid
    
$grid .= "var grid = new Ext.grid.GridPanel({
        "
;
    
$grid .= "store: store,
    "
;
    
$grid .= "    columns: [
    "
;
    
//Empezar el ciclo
    
for ($k 1$k $total_campos$k++) {
        
$arreglo_campos[] = "{header: \"".$campo[$k]."\", width: ".$ancho_columnas.", sortable: true, dataIndex: '".$campo[$k]."'}
        "
;
    }
    
//Finalizar ciclo
    
$grid .= "{id: \"".$campo[0]."\", width: ".$ancho_columnas.",  sortable: true, dataIndex: '".$campo[0]."'}, 
    "
.implode(",",$arreglo_campos);
    
$grid .= "    ],
    "
;
    
$grid .= "   stripeRows: true,
    "
;
    
$grid .= "    autoExpandColumn: '".$campo[0]."',
    "
;
    
$grid .= "    height:".$alto.",
    "
;
    
$grid .= "   width:".$ancho.",
    "
;
    
$grid .= "   frame:true,
    "
;
    
$grid .= "   title:'".$titulo."',
    "
;
    
$grid .= "  plugins: new Ext.ux.PanelResizer({
        "
;
    
$grid .= "       minHeight: 100
    "
;
    
$grid .= "   }),
    "
;
    
$grid .= "bbar: new Ext.PagingToolbar({
        "
;
    
$grid .= "pageSize: 10,
    "
;
    
$grid .= "store: store,
    "
;
    
$grid .= "displayInfo: true,
    "
;
    
$grid .= "plugins: new Ext.ux.ProgressBarPager()
    "
;
    
$grid .= "   })
    "
;
    
$grid .= "});
    "
;
    
$grid .= "grid.render('".$div."');
    "
;
    
$grid .= "store.load({params:{start:0, limit:".$columnas."}});
    "
;
    
$grid .= "});
    "
;
    
$grid .= "</script>";

    return 
$grid;

__________________
http://www.solucionesrios.tk/

Visita mi Web!

Etiquetas: offset, warning, arreglos
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 15:16.