Foros del Web » Programando para Internet » PHP »

Ayuda con la clase paginar de Webstudio

Estas en el tema de Ayuda con la clase paginar de Webstudio en el foro de PHP en Foros del Web. He tratado de implementar la classe paginado de Webstudio y si hago una consulta sin condiciones a la base de datos funciona perfectamente, el problema ...
  #1 (permalink)  
Antiguo 18/11/2003, 08:34
 
Fecha de Ingreso: abril-2002
Ubicación: Argentina
Mensajes: 96
Antigüedad: 22 años
Puntos: 0
Ayuda con la clase paginar de Webstudio

He tratado de implementar la classe paginado de Webstudio y si hago una consulta sin condiciones a la base de datos funciona perfectamente, el problema lo tengo cuando le incluyo una condición
Código PHP:
SELECT FROM players_datos WHERE ".$s_tipo." AND ".$s_puesto." AND DATE_FORMAT(fecha_nacimiento,'%Y')<='$principio' AND DATE_FORMAT(fecha_nacimiento,'%Y')>='$fin' ORDER BY nombre_completo ASC 
Esto me muestra los resultado de la primer pagina , en la variable porPagina le puse 2 y me dice:
Mostrando 1 - 2 de un total de 4
Pero cuando le doy a link de la página siguiente me dice:
No exite la página 2 de resutados. Hay solo un total de 0
Cual es el error?
Gracias por sus respuestas.
Saludos
__________________
Sergio
  #2 (permalink)  
Antiguo 18/11/2003, 08:39
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿Has propagado los valores de las variables que usas para crear las condiciones? Ademas de propagarlas, las debes recoger.

De todas formas, si no pones el codigo que usas, es un poco dificil saber que esta mal.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 18/11/2003, 08:44
 
Fecha de Ingreso: abril-2002
Ubicación: Argentina
Mensajes: 96
Antigüedad: 22 años
Puntos: 0
Me supuse que el error estaria por ese lado, pero no logro entenderlo. este es el código:
Código PHP:
if (!empty($_POST)) {
  
extract($_POST);
} else if (!empty(
$HTTP_POST_VARS)) {
  
extract($HTTP_POST_VARS);
}
//include("../../mainfile.php");
//include("../../header.php");
//include("header.php");
include("funciones.php");

function 
Edad($dob){
// El formato es dd/mm/yy
list($d,$m,$Y)=explode("/",$dob);
$hoy=mktime(0,0,0,date("d"),date("m"),date("Y"));
$cumple=mktime(0,0,0,"$d","$m","$Y");
$age=intval(($hoy-$cumple)/(60*60*24*365));
return 
$age;
}

//OpenTable();
print ("<p align='center'><a href='index.php'><img src='images/titulo_search.gif' width='367' height='70' border='0'></a></p>");

// Recibo variables
$v1=$bbtipo;
$v2=$bbpuesto;
$v3=$bbdesde;
$v4=$bbhasta;

//Compruebo variables
if ($v1 == 0) {
  
$s_tipo "Id_tipo>0";
} else {
  
$s_tipo "Id_tipo=$v1";
}

if (
$v2 == 0) {
  
$s_puesto "Id_puesto>0";
} else {
  
$s_puesto "Id_puesto=$v2";
}

//Compruebo fechas
$edad_min=$v3;
$edad_max=$v4;
$principio=date("Y")-$edad_min;
$fin=date("Y")-$edad_max;

// Datos de conexión a la base
// Conectamos a la Base de Datos
$Conn mysql_connect("localhost","****","*****");
mysql_select_db("*******");
// Obtenemos la página actual, por el método que más nos guste
// Por defecto, la página se propaga por la variable $pagina
$pagina $HTTP_GET_VARS["pagina"];

// Incluimos la Clase Paginado
include("class.paginado.php");
$rs = new paginado($Conn); // instanciamos un objeto
$rs->pagina($pagina); // Le indicamos en que página estamos - 1 por defecto
$rs->porPagina(2); // Le decimos cuantos registros por página queremos - 20 por defecto
$rs->propagar("s_tipo","s_puesto","principio","fin"); // Le decimos las variables que queremos propagar en los links
if(!$rs->query("SELECT * FROM players_datos WHERE ".$s_tipo." AND ".$s_puesto." AND DATE_FORMAT(fecha_nacimiento,'%Y')<='$principio' AND DATE_FORMAT(fecha_nacimiento,'%Y')>='$fin' ORDER BY nombre_completo ASC")) // Y ejecutamos nuestra consulta.
{
  die( 
$rs->error() ); // Si Query devolvió falso, hubo un error y lo mostramos.
}
echo 
"Mostrando ".$rs->desde()." - ".$rs->hasta()." de un total de ".$rs->total()."<br>";
// Recorremos todos los resultados y los mostramos.
while($row $rs->obtenerArray())
{
$el_jugador $row["Id_jugador"];
$el_nombre $row["nombre_completo"];
$la_categoria $row["Id_categoria"];
$el_puesto $row["Id_puesto"];
$la_foto $row["foto"];
$el_nacimiento $row["fecha_nacimiento"];
$el_nacimiento cambiaf_a_normal($el_nacimiento);
$la_edad Edad("$el_nacimiento");
$el_pais $row["Id_pais"];
$la_provincia $row["provincia"];
$la_ciudad $row["ciudad"];
$la_altura $row["estatura"];
$la_altura $la_altura 100;
$la_altura2 $la_altura 3.28084;
$el_peso $row["peso"];
$el_peso2 $el_peso 2.20462;
$las_caracteristicas $row["caracteristicas"];
$los_partidos $row["partidos_jugados"];
$los_goles $row["goles"];
$los_otros $row["otros"];

print (
"<table width='100%' border='0' cellspacing='1' cellpadding='0' bgcolor='#000000'>
  <tr>
    <td class='head' colspan='2'>:: $el_nombre</td>
  </tr>
  <tr>
    <td width='200' valign='top' class='odd'>
      <div align='center'>
        <table width='100%' border='0' cellspacing='1' cellpadding='0'>
          <tr>
            <td>
              <div align='center'><img src='../../../fotos/thumb_$la_foto'></div>
            </td>
          </tr>
          <tr>
            <td>
              <div align='center'></div>
            </td>
          </tr>
          <tr>
            <td>
              <div align='center'></div>
            </td>
          </tr>
          <tr>
            <td>
              <div align='center'><img src='images/$el_puesto.gif'></div>
            </td>
          </tr>
          <tr>
            <td>
              <div align='center'><font color='#006600'><b>$el_puesto</b></font></div>
            </td>
          </tr>
          <tr>
            <td>
              <div align='center'></div>
            </td>
          </tr>
          <tr>
            <td>
              <div align='center'><b>PROFESIONAL</b></div>
            </td>
          </tr>
        </table>
      </div>
    </td>
    <td class='odd'>
      <p><b>Fecha de nacimiento <i><font face='Georgia, Times New Roman, Times, serif'>(Date
        of Birth)</font></i>:</b> $el_nacimiento<br>
        <b>Edad <i><font face='Georgia, Times New Roman, Times, serif'>(Age)</font></i>:</b>
        $la_edad<br>
        <b>Nacionalidad <i><font face='Georgia, Times New Roman, Times, serif'>(Nacionality)</font></i>:</b>
        $el_pais<br>
        <b>Lugar de Nacimiento <i><font face='Georgia, Times New Roman, Times, serif'>(Birthplace)</font></i>:</b>
        $la_provincia, $la_ciudad</p>
      <b>Altura <i><font face='Georgia, Times New Roman, Times, serif'>(Height)</font></i>:</b>
      $la_altura m. / $la_altura2 feet<br>
      <b>Peso <i><font face='Georgia, Times New Roman, Times, serif'>(Weight)</font></i>:</b>
      $el_peso kg. / $el_peso2 pounds (lb.)
      <p><b>Caracter&iacute;sticas <i><font face='Georgia, Times New Roman, Times, serif'>(Characteristics)</font></i>:</b><br>
        $las_caracteristicas</p>
      <p><b>Partidos jugados <i><font face='Georgia, Times New Roman, Times, serif'>(Played
        Games)</font></i>:</b> $los_partidos<br>
        <b>Goles convertidos <i><font face='Georgia, Times New Roman, Times, serif'>(Turned
        Goals)</font></i>:</b> $los_goles</p>
      <p><b>Comentarios <i><font face='Georgia, Times New Roman, Times, serif'>(Comments)</font></i>:</b><br>
        $los_otros </p>
    </td>
  </tr>
</table>
<br>"
);
}
// Finalmente mostramos los medios para la navegación entre los resultados.
echo $rs->anterior()." - ".$rs->nroPaginas()." - ".$rs->siguiente(); 
__________________
Sergio

Última edición por Yiyo; 18/11/2003 a las 09:52
  #4 (permalink)  
Antiguo 18/11/2003, 08:55
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bien, propagar las propagas. Ahora no recuerdo si era asi la sintaxis para varias variables, pero supongo que vendra en el manual.

El problema es que no lees las variables que propagas. Las variables propagadas llegan por URL, es decir, por GET. Y tu de GET solo recoges:
Código PHP:
$pagina $HTTP_GET_VARS["pagina"]; 
Tendrias que hacer lo mismo para cada variable que propagas. O usar el extract() como con los POST que recibes originalmente.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 18/11/2003, 09:06
 
Fecha de Ingreso: abril-2002
Ubicación: Argentina
Mensajes: 96
Antigüedad: 22 años
Puntos: 0
Ok, lo que no entiendo que aparentemente por la URL estan pasando bien o no se si estan pasando bien... este es el resultado:

resultado.php?pagina=2&s_tipo=Id_tipo>0&s_puesto=I d_puesto>0&principio=2002&fin=1963

Gracias por las respuestas
__________________
Sergio
  #6 (permalink)  
Antiguo 18/11/2003, 09:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Si esos son los valores, pues deberia ser.

Pero ahora que me doy cuenta estas propagando el valor de variables cuyos valores calculas en el script. Y normalmente las que propagas son las que usas para hacer esos calculos, es de cir, las mismas que recibes de POST. Y por lo que deduzco de tu codigo saon las variables $bb*. Esas son las que deberias propagar y recibir.

Lo que te esta pasando ahora es que propagas los valores calculados, pero como los vuelves a calcular en tu script en base a variables que no existen ($bb*), pues pisas los valores.

Asi que yo te recomendaria propagar las cuatro variables $bb.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 18/11/2003, 09:26
 
Fecha de Ingreso: abril-2002
Ubicación: Argentina
Mensajes: 96
Antigüedad: 22 años
Puntos: 0
Justo cuando me contestabas estaba probando este cambio y me parece que si funciona, dime que te parece por favor.
Gracias
Saludos
Código PHP:
if (!isset($_GET['s_tipo'])){
    
$s_tipo $s_tipo;
    
$s_puesto $s_puesto;
    
$principio $principio;
    
$fin $fin;
}else{
    
$s_tipo $HTTP_GET_VARS["s_tipo"];
    
$s_puesto $HTTP_GET_VARS["s_puesto"];
    
$principio $HTTP_GET_VARS["principio"];
    
$fin $HTTP_GET_VARS["fin"];

__________________
Sergio
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 06:50.