Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/07/2010, 14:08
warbandit69
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Busqueda Problemas con consulta a la hora de mostrar un hint (mezcla php mas javascript)

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>&nbsp;</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;

__________________
http://www.solucionesrios.tk/

Visita mi Web!