Foros del Web » Programando para Internet » PHP »

Modificar código...

Estas en el tema de Modificar código... en el foro de PHP en Foros del Web. Hola, antés que nada gracias desde ya!!! Pues bien mi problema es el siguiente, estoy intentando adaptar un código de páginación de webexperto.com para que ...
  #1 (permalink)  
Antiguo 17/07/2003, 15:42
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Modificar código...

Hola, antés que nada gracias desde ya!!!


Pues bien mi problema es el siguiente, estoy intentando adaptar un código de páginación de webexperto.com para que págine desde el indice 1 no desde el 0 y para que cuando aparezca el indice 1 de paginación sea el primero de la lista y ya este seleccionado, el problema es que que cuando subo 1 punto el valor de la variable inicial del for y modifico el primer if de los indices de páginación para que inserte el link <<anterior a partir de >= 1 solo se empieza a resaltar el indice de paginación a partir del 1 de la lista de paginación que en verdad es el 2, no se si me toy explicando muy bien..., mejor pego el código a continuación.


# definimos las variables iniciales de la paginación
if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=4; // cantidad de resultados por página
$inicial = $pg * $cantidad;


// se concatena la secuencias de campo LIKE '%palabra%' AND .. con el SQL
// si hace falta mas parámetros o condiciones .. añadir al final ...
$sql = "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo LIMIT $inicial,$cantidad";



# establecemos el criterio de seleccion
$resultado = mysql_query($sql, $conexion) or die ("Error en la consulta:\n<br><b>$sql</b><br>\nMySQL dice: ".mysql_error());


# contamos todos los registros de la tabla
$contar = "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo";
$contarok= mysql_query($contar, $conexion);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);


# CREAMOS UNA CABEZERA DE UNA TABLA (codigo HTML)

echo "<table width='90%'cellpadding='0' cellspacing='0' align=center bgcolor='#EFEFEF' border=0>";

# establecemos un bucle que recoge en un array
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
# utilizamos en esta ocasión <<myslq_fetch_array>>
# recuerda que esta ultima función devuelve un array escalar
# y otro asociativo con los resultados

while ($encontrados = mysql_fetch_array($resultado)){
echo "<tr><td height='20'>&nbsp;</td></tr>";
echo "<tr><td height='20' valign='middle' bgcolor='#003366'>&nbsp;<font face='arial' size='1'><strong><a href='".$encontrados['Url']."'>".$encontrados['Titulo']."</a></strong></font></td></tr>";
echo "<tr><td></td></tr>";
echo "<tr><td><font face='arial' size='1'><strong>".$encontrados['Descripcion'].".</strong></font></td></tr>";
echo "<tr><td><br></td></tr>";
}
echo "</table>";


# creando los enlaces de paginación
echo "<div align='center'>";
if ($pg >= 1)
{
$url = $pg - 1;
echo "<a href='paginacionresultados3.php?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>&laquo;Anterior</strong></font></a>&nbsp;";
}
else {
echo "";
}
for ($i = 1; $i<($pages + 1); $i++) {
if ($i == $pg) {
echo "<font face='Tahoma' size=1 color='#003366'><strong>".$i."&nbsp;</strong></font>";
}
else {
echo "<a href='paginacionresultados3.php?pg=".$i."'><font face='Arial' size='1' color='#FF0000'><strong>".$i."</strong></font></a>&nbsp;";
}
}

if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='paginacionresultados3.php?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>Siguiente&raquo;</strong></font></a>";
}
else {
echo " ";
}
echo "</div>";


Un saludo.




# definimos las variables iniciales de la paginación
if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=4; // cantidad de resultados por página
$inicial = $pg * $cantidad;


// se concatena la secuencias de campo LIKE '%palabra%' AND .. con el SQL
// si hace falta mas parámetros o condiciones .. añadir al final ...
$sql = "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo LIMIT $inicial,$cantidad";



# establecemos el criterio de seleccion
$resultado = mysql_query($sql, $conexion) or die ("Error en la consulta:\n<br><b>$sql</b><br>\nMySQL dice: ".mysql_error());


# contamos todos los registros de la tabla
$contar = "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo";
$contarok= mysql_query($contar, $conexion);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);


# CREAMOS UNA CABEZERA DE UNA TABLA (codigo HTML)

echo "<table width='90%'cellpadding='0' cellspacing='0' align=center bgcolor='#EFEFEF' border=0>";

# establecemos un bucle que recoge en un array
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
# utilizamos en esta ocasión <<myslq_fetch_array>>
# recuerda que esta ultima función devuelve un array escalar
# y otro asociativo con los resultados

while ($encontrados = mysql_fetch_array($resultado)){
echo "<tr><td height='20'>&nbsp;</td></tr>";
echo "<tr><td height='20' valign='middle' bgcolor='#003366'>&nbsp;<font face='arial' size='1'><strong><a href='".$encontrados['Url']."'>".$encontrados['Titulo']."</a></strong></font></td></tr>";
echo "<tr><td></td></tr>";
echo "<tr><td><font face='arial' size='1'><strong>".$encontrados['Descripcion'].".</strong></font></td></tr>";
echo "<tr><td><br></td></tr>";
}
echo "</table>";


# creando los enlaces de paginación
echo "<div align='center'>";
if ($pg >= 1)
{
$url = $pg - 1;
echo "<a href='paginacionresultados3.php?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>&laquo;Anterior</strong></font></a>&nbsp;";
}
else {
echo "";
}
for ($i = 0; $i<($pages + 1); $i++) {
if ($i == $pg) {
echo "<font face='Tahoma' size=1 color='#003366'><strong>".$i."&nbsp;</strong></font>";
}
else {
echo "<a href='paginacionresultados3.php?pg=".$i."'><font face='Arial' size='1' color='#FF0000'><strong>".$i."</strong></font></a>&nbsp;";
}
}

if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='paginacionresultados3.php?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>Siguiente&raquo;</strong></font></a>";
}
else {
echo " ";
}
echo "</div>";



Un saludo.
  #2 (permalink)  
Antiguo 17/07/2003, 15:55
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Zertiko, acostubrate a colorear el código usando el boton PHP del formulario... es mas sencillo de leer.



Código PHP:
# definimos las variables iniciales de la paginación
if (!isset($pg))
$pg 0// $pg es la pagina actual
$cantidad=4// cantidad de resultados por página
$inicial $pg $cantidad;


// se concatena la secuencias de campo LIKE '%palabra%' AND .. con el SQL
// si hace falta mas parámetros o condiciones .. añadir al final ...
$sql "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo LIMIT $inicial,$cantidad";



# establecemos el criterio de seleccion
$resultado mysql_query($sql$conexion) or die ("Error en la consulta:\n<br><b>$sql</b><br>\nMySQL dice: ".mysql_error());


# contamos todos los registros de la tabla
$contar "SELECT * FROM $tabla WHERE ".$secuencia_total." ORDER BY Titulo"
$contarokmysql_query($contar$conexion);
$total_records mysql_num_rows($contarok);
$pages intval($total_records $cantidad);


# CREAMOS UNA CABEZERA DE UNA TABLA (codigo HTML)

echo "<table width='90%'cellpadding='0' cellspacing='0' align=center bgcolor='#EFEFEF' border=0>";

# establecemos un bucle que recoge en un array
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
# utilizamos en esta ocasión <<myslq_fetch_array>>
# recuerda que esta ultima función devuelve un array escalar
# y otro asociativo con los resultados

while ($encontrados mysql_fetch_array($resultado)){
echo 
"<tr><td height='20'> </td></tr>";
echo 
"<tr><td height='20' valign='middle' bgcolor='#003366'> <font face='arial' size='1'><strong><a href='".$encontrados['Url']."'>".$encontrados['Titulo']."</a></strong></font></td></tr>";
echo 
"<tr><td></td></tr>";
echo 
"<tr><td><font face='arial' size='1'><strong>".$encontrados['Descripcion'].".</strong></font></td></tr>";
echo 
"<tr><td><br></td></tr>";
}
echo 
"</table>";


# creando los enlaces de paginación
echo "<div align='center'>";
if (
$pg >= 1)
{
$url $pg 1;
echo 
"<a href='paginacionresultados3.php?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>«Anterior</strong></font></a> ";
}
else {
echo 
"";
}
for (
$i 1$i<($pages 1); $i++) {
if (
$i == $pg) {
echo 
"<font face='Tahoma' size=1 color='#003366'><strong>".$i." </strong></font>";
}
else {
echo 
"<a href='paginacionresultados3.php?pg=".$i."'><font face='Arial' size='1' color='#FF0000'><strong>".$i."</strong></font></a> ";
}
}

if (
$pg $pages) {
$url $pg 1;
echo 
"<a href='paginacionresultados3.php?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>Siguiente»</strong></font></a>";
}
else {
echo 
" ";
}
echo 
"</div>"
__________________
Manoloweb
  #3 (permalink)  
Antiguo 17/07/2003, 16:01
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Hola Manoloweb, llevas toda la razón tomo nota.


Un saludo.
  #4 (permalink)  
Antiguo 17/07/2003, 17:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿Solo uieres modificar el texto de los links o tambien el link? Porque si quieres modificar solo el texto que se ve en la pagina, pero dejando que los parametros de los links sean desde 0, solo tendrias que hacer:
Código PHP:
echo "<font face='Tahoma' size=1 color='#003366'><strong>".($i+1)." </strong></font>"
y
Código PHP:
echo "<a href='paginacionresultados3.php?pg=".$i."'><font face='Arial' size='1' color='#FF0000'><strong>".($i+1)."</strong></font></a> "
y dejando todos los bucles desde 0, como estaba originalmente. De esta forma el texto del link pondra 3, pero el parametro del link sera 2.

Pero si de todas formas quieres cambiar todos los bucles, lo que debes cambiar tambien es al principio. Es el codigo que da el valor por defecto de la pagina si no esta definido y el que calcula el offset del primer regiotro a mostrar. Date cuenta que ahora el parametro vale uno mas que antes, asi que para realizar el mismo calculo debes restar uno:
Código PHP:
# definimos las variables iniciales de la paginación

if (!isset($pg))

$pg 1// $pg es la pagina actual

$cantidad=4// cantidad de resultados por página

$inicial = ($pg-1) * $cantidad
Lo que antes era 0 ahora es uno, y debes restar 1 para obtener el mismo resultado de registro inicial.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 17/07/2003, 17:57
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Ok gracias tio, voy a probar a ver si consigo que rule.

Un saludo.
  #6 (permalink)  
Antiguo 17/07/2003, 18:27
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Hola Josemi,

modifique el código sumando uno a la variable inicial $i y dejando la $i en el bucle for a 0 exactamente asi:


for ($i = 0; $i<($pages + 1); $i++) {
if ($i == $pg) {
echo "<font face='Tahoma' size=1 color='#003366'><strong>".($i+1)."&nbsp;</strong></font>";
}
else {
echo "<a href='paginacionresultados3.php?pg=".$i."'><font face='Arial' size='1' color='#FF0000'><strong>".($i+1)."</strong></font></a>&nbsp;";
}
}


Funciona bien pero cuando solo me encuentra 4 registros o menos es decir que no hace falta paginación me devuelve de todas formas un 1 como indice de paginación al indice 0 del bucle...

¿Alguna sugerencia de como evitar eso cuando encuentre menos de 5 registros y no haga falta la paginacion?

Un saludo.
  #7 (permalink)  
Antiguo 17/07/2003, 18:33
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Josemi te repito el post coloreado, xdd

modifique el código sumando uno a la variable inicial $i y dejando la $i en el bucle for a 0 exactamente asi:

Código PHP:
for ($i 0$i<($pages 1); $i++) {
if (
$i == $pg) {
echo 
"<font face='Tahoma' size=1 color='#003366'><strong>".($i+1)." </strong></font>";
}
else {
echo 
"<a href='paginacionresultados3.php?pg=".$i."'><font face='Arial' size='1' color='#FF0000'><strong>".($i+1)."</strong></font></a> ";
}


Funciona bien pero cuando solo me encuentra 4 registros o menos es decir que no hace falta paginación me devuelve de todas formas un 1 como indice de paginación al indice 0 del bucle...

¿Alguna sugerencia de como evitar eso cuando encuentre menos de 5 registros y no haga falta la paginacion?

Un saludo.
  #8 (permalink)  
Antiguo 17/07/2003, 18:43
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
if ($pg > 1)
__________________
Manoloweb
  #9 (permalink)  
Antiguo 17/07/2003, 19:05
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Manoloweb, eso donde lo pongo???

lo he cambiado en:

Código PHP:
 if ($pg >= 1)
                  {
                  
$url $pg 1;
                  echo 
"<a href='paginacionresultados3.php?pg=".$url."'><font face='Arial' size='1' color='#FF0000'><strong>&laquo;Anterior</strong></font></a>&nbsp;";
                  }
                  else {
                  echo 
"";
                  } 

y sigue igual...

Un saludo.
  #10 (permalink)  
Antiguo 17/07/2003, 19:12
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
NO, creo que me equivoqué...

Creo que debes poner un IF ($pages<1){

antes de que empieces a tirar el código de la paginación...
__________________
Manoloweb
  #11 (permalink)  
Antiguo 17/07/2003, 19:49
 
Fecha de Ingreso: noviembre-2002
Mensajes: 571
Antigüedad: 21 años, 5 meses
Puntos: 2
Ok gracias Manoloweb, ya ha quedao perfecto!!!


Un saludo.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 05:34.