From 307bc9bc88bec68637485ee4343c6383ec5ee625 Mon Sep 17 00:00:00 2001 From: humano Date: Wed, 22 Apr 2020 08:33:21 -0500 Subject: [PATCH] optimizacion consultas basadas en vistas --- funciones/funciones.php | 81 ++++++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 26 deletions(-) diff --git a/funciones/funciones.php b/funciones/funciones.php index 1e88790..ef735f4 100644 --- a/funciones/funciones.php +++ b/funciones/funciones.php @@ -7368,12 +7368,18 @@ return "$echo"; } function buscar_imagen($form,$control,$tipo,$empresa) { + + + $vista = "form_".$form; + $vista = existe_tabla("$vista") ; + if($vista =='1'){$tabla="form_$form";}else{$tabla="form_datos";} + $imagen=""; - if($control !="") { $w_control = "AND form_datos.control ='$control'";}else{$w_control ="";} + if($control !="") { $w_control = "AND $tabla.control ='$control'";}else{$w_control ="";} if ($form ==""){ - $consulta = "SELECT form_datos.id_empresa, contenido , campo_nombre , id_campo FROM form_id, form_datos, form_campos - WHERE form_datos.id_campo = form_campos.id AND form_id.id = form_datos.form_id - AND form_datos.id_empresa = '$empresa' + $consulta = "SELECT $tabla.id_empresa, contenido , campo_nombre , id_campo FROM form_id, $tabla, form_campos + WHERE $tabla.id_campo = form_campos.id AND form_id.id = $tabla.form_id + AND $tabla.id_empresa = '$empresa' AND publico ='1' AND form_campos.campo_tipo='15' ORDER BY rand() limit 1 "; $link=Conectarse(); mysqli_set_charset($link, "utf8"); @@ -7388,7 +7394,7 @@ if($tipo == "consulta") { return $consulta; } $publico = remplacetas('form_id','id',"$form",'publico',"") ; if($publico[0] !="0" ){ $campo_imagen = buscar_campo_tipo("$form","15"); -$imagen = remplacetas('form_datos','form_id',$form,'contenido'," id_campo = '$campo_imagen[0]' $w_control") ; +$imagen = remplacetas("$tabla",'form_id',$form,'contenido'," id_campo = '$campo_imagen[0]' $w_control") ; //$imagen = "$imagen[0]"; return $imagen[0]; } @@ -11859,10 +11865,14 @@ $claves = $claves[0]; $key = @explode(':',$claves[1]) ; $key = @$key[1]; $descripcion = @explode(':',$claves[2]) ; + $vista = "form_".$formulario; + $vista = existe_tabla("$vista") ; + if($vista =='1'){$tabla="form_$formulario";}else{$tabla="form_datos";} + if(isset($descripcion[1])){$descripcion = $descripcion[1]; - $campo2 = remplacetas("form_datos","control","$valor","contenido","form_id = '$formulario' AND id_campo = '$descripcion' "); + $campo2 = remplacetas("$tabla","control","$valor","contenido","form_id = '$formulario' AND id_campo = '$descripcion' "); }else{$campo2[0] ="";} - $campo1 = remplacetas("form_datos","control","$valor","contenido","form_id = '$formulario' AND id_campo = '$key' "); + $campo1 = remplacetas("$tabla","control","$valor","contenido","form_id = '$formulario' AND id_campo = '$key' "); $imprimir = @"$campo1[0] $campo2[0]"; @@ -12898,6 +12908,7 @@ function imprime_geojson($id,$id2,$plantilla,$busqueda,$item){ $campo2 = buscar_campo_tipo($id_form2,"14"); $id_campo = $campo[0]; $id_campo2 = $campo2[0]; + $campo_titulo = remplacetas('form_parametrizacion','campo',$id_form,'descripcion'," tabla='form_id' and opcion = 'titulo'") ; $geometria =""; $or_2 =""; $w_id2=""; @@ -12959,7 +12970,7 @@ while( $row = mysqli_fetch_array( $sql ) ) { $propiedades = array(); $propiedades['icon']['iconUrl']=""; $identificador = explode(',',$row['data']); - $localizacion = remplacetas('form_datos','control',$row['control'],'contenido',"id_campo = '$id_campo'") ; + $localizacion = remplacetas($tabla,'control',$row['control'],'contenido',"id_campo = '$id_campo'") ; $identificador = $identificador[0]; //$campos = explode(" ",$identificador); @@ -12981,9 +12992,9 @@ while( $row = mysqli_fetch_array( $sql ) ) { } else { - $campo_titulo = remplacetas('form_parametrizacion','campo',$id_form,'descripcion'," tabla='form_id' and opcion = 'titulo'") ; - $titulo = remplacetas('form_datos','id_campo',$campo_titulo[0],'contenido'," control = '$row[control]' ") ; + + $titulo = remplacetas("$tabla",'id_campo',$campo_titulo[0],'contenido'," control = '$row[control]' ") ; $propiedades['description'] ="$titulo[0]"; } $propiedades['control'] = "$row[control]"; @@ -13002,7 +13013,7 @@ while( $row = mysqli_fetch_array( $sql ) ) { if($propiedades['icon']['iconUrl'] =="") { $icono_imagen = buscar_imagen("$id_form",$row['control'],"",""); //$propiedades[icon][iconUrl] = "$_SESSION[site]/milfs/images/iconos/negro.png"; - $propiedades['icon']['iconUrl'] = "$_SESSION[url]images/secure/?file=150/$icono_imagen"; + $propiedades['icon']['iconUrl'] = "$_SESSION[url]images/secure/?file=150/$icono_imagen&$id_form"; } //$propiedades[sounds] =""; @@ -13611,7 +13622,11 @@ return $contenido.$control; function contenido_mostrar($id,$control,$div,$plantilla){ if($id=="") { - $value = remplacetas('form_datos','control',$control,'form_id',"") ; + $vista = "form_".$id; + $vista = existe_tabla("$vista") ; + if($vista =='1'){$tabla="form_$id";}else{$tabla="form_datos";} + + $value = remplacetas("$tabla",'control',$control,'form_id',"") ; $id= $value[0]; } $respuesta = new xajaxResponse('utf-8'); @@ -13651,7 +13666,8 @@ function aplicacion_datos($id) { } function buscar_campo_tipo($id,$tipo) { //// esta funciĆ³n retorna el id para un campo de un tipo especifico dentro de un formulario. -$consulta ="SELECT form_campos.id, form_campos.campo_nombre FROM form_tipo_campo,form_campos,form_contenido_campos +$consulta ="SELECT form_campos.id, form_campos.campo_nombre +FROM form_tipo_campo,form_campos,form_contenido_campos WHERE form_tipo_campo.id_tipo_campo = form_campos.campo_tipo AND form_contenido_campos.id_campo = form_campos.id AND form_tipo_campo.id_tipo_campo = '$tipo' @@ -14316,12 +14332,19 @@ $xajax->registerFunction("editar_campo"); //@$impresion = formulario_imprimir("$id_form","$control","$plantilla",$timestamp).""; function formulario_imprimir($id,$control,$tipo,$timestamp) { +// if($tabla =='form_datos' ){ + $vista = "form_".$id; + $vista = existe_tabla("$vista") ; + if($vista =='1'){$tabla="form_$id";}else{$tabla="form_datos";} + +//return $tabla; +// } $tiene_plantilla = remplacetas('form_parametrizacion','campo',$id,'descripcion'," tabla='form_id' and opcion = 'plantilla:$tipo'") ; $tiene_plantilla_original = $tiene_plantilla; $tiene_plantilla = $tiene_plantilla[0]; - $control_existe = remplacetas('form_datos','control',"$control",'id',"") ; + $control_existe = remplacetas("$tabla",'control',"$control",'id',"") ; $contenido_full=""; if(strlen($control) > 32) { $identificador_original= $control; @@ -14331,13 +14354,13 @@ $tiene_plantilla = $tiene_plantilla[0]; $resultado =""; $limit =""; -if (@$timestamp != ""){$where_timestamp = "AND form_datos.timestamp = '$timestamp' ";}ELSE { $where_timestamp = ""; } +if (@$timestamp != ""){$where_timestamp = "AND $tabla.timestamp = '$timestamp' ";}ELSE { $where_timestamp = ""; } if(is_numeric($tipo)) { $limit = "limit $tipo "; $class= "alert alert-info";} //if($control != "") { $w_control = "AND control = '$control' ";} $id = mysql_seguridad($id); //$control = mysql_seguridad($control); if($id =="") { - $id_seguridad = remplacetas('form_datos','control',$control,'form_id','') ; + $id_seguridad = remplacetas("$tabla",'control',$control,'form_id','') ; $publico = remplacetas('form_id','id',$id_seguridad[0],'publico','') ; $id_seguridad = $id_seguridad[0]; @@ -14366,18 +14389,19 @@ if(is_numeric($tipo)) { $limit = "limit $tipo "; $class= "alert alert-info";} //if($id !='') {$w_id = "AND form_id = '$id'";}else {$w_id='';} if($id !='') { $consulta = "SELECT * - FROM form_contenido_campos , form_datos - WHERE form_contenido_campos.id_campo = form_datos.id_campo - AND form_datos.control = '$control' + FROM form_contenido_campos , $tabla + WHERE form_contenido_campos.id_campo = $tabla.id_campo + AND $tabla.control = '$control' AND form_contenido_campos.id_form = '$id' $where_timestamp - GROUP BY form_contenido_campos.id_campo,form_datos.orden + GROUP BY form_contenido_campos.id_campo,$tabla.orden ORDER BY form_contenido_campos.orden ASC $limit "; }else { - $consulta = "SELECT *FROM form_contenido_campos , form_datos WHERE form_datos.control = '$control' AND form_contenido_campos.id_campo = form_datos.id_campo $where_timestamp GROUP BY form_contenido_campos.id_campo,form_datos.orden" ; + $consulta = "SELECT *FROM form_contenido_campos , $tabla WHERE $tabla.control = '$control' AND form_contenido_campos.id_campo = $tabla.id_campo $where_timestamp GROUP BY form_contenido_campos.id_campo,$tabla.orden" ; } + //return $consulta; $control = mysql_seguridad($control); $link=Conectarse(); @@ -14640,6 +14664,7 @@ $array_contenido[$campo_nombre[0]][] = $contenido; } $array=$array_contenido; + //$resultado .=" "; //}else {$resultado ="

No se encontraron resultados

"; return $resultado;} //if($id=="6" OR $id=="10") { @@ -15697,7 +15722,7 @@ if(@$and !=''){$AND = "AND $and";}else{$AND ="";} $consulta = "SELECT * , md5(binary $por ) as md5_".$por." FROM $tabla WHERE $campo = '$valor' $AND order by id DESC limit 1"; $sql=mysqli_query($link,$consulta); if (@mysqli_num_rows($sql)!=0){ - if($por =='contenido' AND $tabla=='form_datos'){ + if($por =='contenido' AND $tabla=="$tabla"){ //$resultado[0] = mysqli_result($sql,0,$por); $resultado[0]=str_replace('\n','
',mysqli_result($sql,0,$por)); }else{ @@ -18026,8 +18051,12 @@ AND `control` = '$id_control' $campo_orden GROUP BY orden ORDER BY timestamp $limite "; */ +$vista = "form_".$perfil; +$vista = existe_tabla("$vista") ; +if($vista =='1'){$tabla="form_$perfil";}else{$tabla="form_datos";} + $consulta = "SELECT *,GROUP_CONCAT(id ORDER by timestamp desc ) as identificador - FROM `form_datos` + FROM `$tabla` WHERE form_id = '$perfil' AND id_campo ='$id_campo' $valor AND control ='$id_control' $campo_orden @@ -18054,7 +18083,7 @@ if($cant === 1) { $identificador=mysqli_result($sql,0,"identificador"); $identificador = explode(',',$identificador); $identificador = $identificador[0]; - $contenido_campo = remplacetas('form_datos','id',$identificador,'contenido',"") ; + $contenido_campo = remplacetas("$tabla",'id',$identificador,'contenido',"") ; $md5_contenido = $contenido_campo[3]; //$md5_contenido = remplacetas('form_datos','id',$identificador,' md5(binary contenido) as md5_contenido ',"") ; //md5(binary contenido) as md5_contenido, //$md5_contenido = $md5_contenido[0]; @@ -18064,11 +18093,11 @@ if($cant === 1) { while( $row = mysqli_fetch_array( $sql ) ) { $identificador = explode(',',$row['identificador']); $identificador = $identificador[0]; - $contenido_campo = remplacetas('form_datos','id',$identificador,'contenido',"") ; + $contenido_campo = remplacetas("$tabla",'id',$identificador,'contenido',"") ; $contenido .= "$contenido_campo[0]\n"; $contenido_li .= "
  • $contenido_campo[0]
  • "; $contenido_array[]=$contenido_campo[0]; - $editable .= "
  • ".editar_campo("form_datos","$identificador","contenido","","","","")."
  • "; + $editable .= "
  • ".editar_campo("$tabla","$identificador","contenido","","","","")."
  • "; } }