Foros del Web » Programando para Internet » PHP »

problema con una consulta para la clase paginado

Estas en el tema de problema con una consulta para la clase paginado en el foro de PHP en Foros del Web. hola amigos del foro desde hace un par de horas trato de resolver este problema: resulta que estoy tratando de realizar esta consulta con la ...
  #1 (permalink)  
Antiguo 02/02/2004, 15:58
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 14 años
Puntos: 1
Pregunta problema con una consulta para la clase paginado

hola amigos del foro desde hace un par de horas trato de resolver este problema:
resulta que estoy tratando de realizar esta consulta con la clase paginado:
Código PHP:
$consulta="select ruc as nro, nombre, SUM(importe) as importe from ventas where luventa='$Lugarventa' and fchregistro between '$fecha1' and '$fecha2' group by ruc order by importe desc"
el problema esta es la sentencia group by ya que la clase paginado hace select count(*) con los parametros de mi consulta para saber el nro de registro que dara mi consulta,
pero al estar la sentencia group by me saca varios registros en vez de uno.
no se si me explicado correctamente, espero gracias por su ayuda
__________________
saludos :adios:
  #2 (permalink)  
Antiguo 02/02/2004, 19:35
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 14 años
Puntos: 1
Hola nuevamanente ,dada mi necesidad me vi obligado a modificar la clase paginado de esta manera:
en la parte donde decia:
Código PHP:
        $query_count eregi_replace("select (.*) from""SELECT COUNT(*) FROM",$query); 
        if(!
$this->rs( @mysql_query($query_count$this->conn()) )) 
        { 
            
$this->error("Ocurrió un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>."); 
            return 
false
        }
// Fin If 
        
$this->totalmysql_result($this->rs(), 0) ); 
lo cambie por esto:
Código PHP:
// $query_count = eregi_replace("select (.*) from", "SELECT COUNT(*) FROM",$query); 
 
if(!$this->rs( @mysql_query($query$this->conn()) )) 
        { 
            
$this->error("Ocurrió un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>."); 
            return 
false
        }
// Fin If 
        
$this->total(  mysql_num_rows($this->rs()) ); 
Aparentemente esta funcionando bien, pero si alguien sabe que he echo una tonteria avisenme ya que como soy nuevo en php puedo estar comentiendo un error inconsientemente
__________________
saludos :adios:
  #3 (permalink)  
Antiguo 03/02/2004, 02:47
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Una tonteria no es. Parece que has dado con una limitacion de la clase de webstudio (logico por otra parte). Lo que pasa es que tal como lo haces ejecutas 2 veces la misma consulta, una para contar el total, y otra para mostrar los registros (esta ultima con el LIMIT), lo que puede ser mas "costoso" (en recursos) que el COUNT(*).

Quizas cambiando el codigo de webstudio por algo como:
Código PHP:
$query_count eregi_replace("select (.*) from""SELECT COUNT(*) FROM",$query); 
        if(!
$this->rs( @mysql_query($query_count$this->conn()) )) 
        { 
            
$this->error("Ocurrió un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>."); 
            return 
false
        }
// Fin If 
        
$num_reg=0;
        while(
$row=mysql_fetch_row($this->rs())) {
           
$num_reg+=$row[0];
        }
        
$this->total$num_reg ); 
quizas funciona para todos los casos. No estoy seguro, lo he hecho de cabeza. Y me parece mas sencillo que cambiar la expresion regular para transformar una GROUP BY.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 03/02/2004, 10:21
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 14 años
Puntos: 1
Sonrisa

gracias josemi por aclarar mis dudas,
pensaba que estaba comientiendo un error.
un saludo
__________________
saludos :adios:
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 10:49.