Buenas Tardes Foreros, muchas gracias por leer mi post.
Hice una función mezclando php con javascript al mismo tiempo, ayudado con la clase llamada extjs o sencha (como se llama ahora), la cual es la siguiente:
Código PHP:
function grid_scroll_bar3(
$enlace, #El enlace a donde queremos dirigir al usuario en el caso que haga clic el en enlace
$titulo, #Titulo que va a tener el grid
$consulta, #Consulta SQL donde quiero mostrar los datos (puede ser una vista)
$div, #Nombre del div donde queremos poner el grid (no se puede repetir en una misma página
$titulos_campos, #Titulo de los campos que vamos a mostrar (debe tener la misma cantidad que la variable $campos)
$campos, #Nombre de los campos de la tabla (debe tener la misma cantidad que la variable $titulos_campos)
$campos_hint, #Nombre de los campos de la tabla que queremos mostrar como hint
$titulos_hint, #Titulo de los campos que queremos mostrar como hint
$alto, #Alto del grid
$ancho, #ancho del grid
$hostname_obras, #Servidor BD (se toma del script de conexión)
$database_obras, #Nombre de la Base de Datos (se toma del script de conexión)
$username_obras, #Usuario de la Base de Datos (se toma del script de conexión)
$password_obras, #Clave del usuario de la base de datos (se toma del script de conexión)
$columnas #Número de columnas que deseamos mostrar en el grid, por defecto son 10
)
{
$hint__1 = "";
$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 = $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);
$titulos_campos1 = explode(",",$titulos_campos);
$total_titulos_campos = count($titulos_campos1);
if ($total_titulos_campos!=$total_campos) {
echo "La cantidad de titulos no corresponde a la cantidad de campos de la consulta, por favor verifique los datos ingresados a la función";
exit();
}
$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];
if($campos_hint!="") {
$consulta_hint0 = explode("WHERE",$consulta);
$total_consulta_hint0 = count($consulta_hint0);
$consulta_campo_hint = explode(".",$campo[0]);
if(empty($consulta_campo_hint[1])) {
$campo_consulta_hint = $consulta_campo_hint[0];
} else {
$campo_consulta_hint = $consulta_campo_hint[1];
}
if ($total_consulta_hint0>1) {
$consulta_hint3 = explode("ORDER",$consulta_hint0[1]);
$total_consulta_hint3 = count($consulta_hint3);
if ($total_consulta_hint3>1) {
$consultahint = $consulta_hint0[0]." WHERE ".$consulta_hint3[0]." AND ".$campo[0]." LIKE '".$row_gridsql[$campo_consulta_hint]."' ORDER ".$consulta_hint3[1];
} else {
$consultahint = $consulta_hint0[0]." WHERE ".$consulta_hint0[1]." AND ".$campo[0]." LIKE '".$row_gridsql[$campo_consulta_hint]."'";
}
} else {
$consulta_hint1 = explode("ORDER",$consulta);
$total_consulta_hint1 = count($consulta_hint1);
if ($total_consulta_hint1>1) {
$consultahint = $consulta_hint1[0]." WHERE ".$campo[0]." LIKE '".$row_gridsql[$campo_consulta_hint]."' ORDER ".$consulta_hint1[1];
} else {
$consultahint = $consulta." WHERE ".$campo[0]." LIKE '".$row_gridsql[$campo_consulta_hint]."'";
}
}
mysql_select_db($database_obras, $obras);
#echo $consultahint;
#echo "<p> </p>";
#echo $query_gridsql;
#exit();
$query_hintsql = $consultahint."LIMIT 1";
$hintsql = mysql_query($query_hintsql, $obras) or die(mysql_error());
$row_hintsql = mysql_fetch_assoc($hintsql);
$totalRows_hintsql = mysql_num_rows($hintsql);
$camp_hints = explode(",",$campos_hint);
$total_camp_hints = count($camp_hints);
$titulos__hint = explode(",",$titulos_hint);
$total_titulos_hints = count($titulos__hint);
if ($total_titulos_hints!=$total_camp_hints) {
echo "La cantidad de titulos no corresponde a la cantidad de campos del hints, por favor verifique los datos ingresados a la función";
exit();
}
$arreglo_campos_hints = array();
for ($p = 0; $p < $total_camp_hints; $p++) {
$ide2_campos_hints = explode(".",$camp_hints[$p]);
if(empty($ide2_campos_hints[1])) {
$ide2_campos_hints2 = $ide2_campos_hints[0];
} else {
$ide2_campos_hints2 = $ide2_campos_hints[1];
}
$muestra_variable1 = $row_hintsql[$ide2_campos_hints2];
if ($p!=0) {
$muestra_variable1 = $row_hintsql[$ide2_campos_hints2];
if(is_numeric($row_hintsql[$ide2_campos_hints2])) {
$muestra_variable1 = marcarmonto($row_hintsql[$ide2_campos_hints2]);
}
$siesfecha1 = explode("-",$row_hintsql[$ide2_campos_hints2]);
if((!empty($siesfecha1[2])) && (!empty($siesfecha1[1])) && (!empty($siesfecha1[0]))) {
$ano1 = $siesfecha1[0];
$mes1 = $siesfecha1[1];
$dia1 = $siesfecha1[2];
if (checkdate ($mes1, $dia1, $ano1))
{
$muestra_variable1 = $dia1."/".$mes1."/".$ano1;
}
}
}
$arreglo_campos_hints[$p] = "<li><u>".$titulos__hint[$p]."</u> : ".$muestra_variable1."</li>"; #Linea con problemas
}
$mezcla = implode("",$arreglo_campos_hints);
$hint__1 = "<ul>".$mezcla."</ul>";
}
$principal_campo = explode(".",$campo[0]);
if(empty($principal_campo[1])) {
$campo_principal = $principal_campo[0];
} else {
$campo_principal = $principal_campo[1];
}
if($i == 0){
$ide_campo = explode(".",$campo[$i]);
if(empty($ide_campo[1])) {
$id_campo2 = $ide_campo[0];
} else {
$id_campo2 = $ide_campo[1];
}
//javascript:Abrir_ventana('popup.html')
$arreglo_indices[] = "<span class='tip' onmouseover='tooltip(\"".$hint__1."\")' onmouseout='exit();'><a href=\"javascript:popUp('".$enlace."?recordID=".$row_gridsql[$campo_principal]."')\" >".$row_gridsql[$campo_principal]."</a></span>";
} else {
$campo_punto = explode(".",$id_campo);
if(count($campo_punto)>1) {
$consulta_punto = $campo_punto[1];
} else {
$consulta_punto = $campo_punto[0];
}
$muestra_variable = $row_gridsql[$consulta_punto];
if(is_numeric($row_gridsql[$consulta_punto])) {
$muestra_variable = marcarmonto($row_gridsql[$consulta_punto]);
}
$siesfecha = explode("-",$row_gridsql[$consulta_punto]);
if((!empty($siesfecha[2])) && (!empty($siesfecha[1])) && (!empty($siesfecha[0]))) {
$ano = $siesfecha[0];
$mes = $siesfecha[1];
$dia = $siesfecha[2];
if (checkdate ($mes, $dia, $ano))
{
$muestra_variable = $dia."/".$mes."/".$ano;
}
}
$arreglo_indices[] = "<span class='tip' onmouseover='tooltip(\"".$hint__1."\")' onmouseout='exit();'><a href=\"javascript:popUp('".$enlace."?recordID=".$row_gridsql[$campo_principal]."')\" id='grid_css_gobernacion'>".$muestra_variable."</a></span>";
}
}
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: \"".$titulos_campos1[$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>
";
$grid .= "<div id='".$div."'></div>
";
return $grid;
}