Foros del Web » Programando para Internet » PHP »

Paginar sí, pero ¿y despues de hacer una busqueda?

Estas en el tema de Paginar sí, pero ¿y despues de hacer una busqueda? en el foro de PHP en Foros del Web. Paginar sí, pero ¿y despues de hacer una busqueda? Es decir mirad este es mi código, no tan bueno como el de Webstudio claro pero... ...
  #1 (permalink)  
Antiguo 06/03/2002, 10:22
 
Fecha de Ingreso: enero-2002
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
Paginar sí, pero ¿y despues de hacer una busqueda?

Paginar sí, pero ¿y despues de hacer una busqueda? Es decir mirad este es mi código, no tan bueno como el de Webstudio claro pero... Me funciona. Lo que no he podido hacer es que si envio varias variables el resultado de la busqueda me quede paginado también. Bueno os pongo el código para quien le pueda servir por lo menos para paginar y me lo comentais. Un saludo a todos
Código:
 <?php
$db=mysql_connect("localhost","root",""); 
mysql_select_db("demos",$db);
IF ($num>0) { $n=$num;} ELSE { $n=0; }
$conta="SELECT orden FROM datos ";
$result2=mysql_query($conta,$db); 
$quants=mysql_num_rows($result2);
$sql="SELECT * FROM datos ORDER BY obra ASC LIMIT ".$n.", 6 "; 
$result=mysql_query($sql,$db); 
if ($myrow=mysql_fetch_array($result)){
echo "<center><table border=0 width='85%'>\n";
echo "<tr><td bgcolor='#000000' class='downestilonews'><center>ANIMACIÓN EN 3D</center></td></tr></table></center>\n";
echo "<center><table border=0 width='85%'>\n"; 
do{ 
echo "<tr><td class='ficha' width='10%' valign='top'><img src='videos/".$myrow[imagen]."' border='0'></td>\n";
echo "<td  class='ficha' width='75%' valign='top'>Obra: <font face='verdana, arial, helvetica, sans-serif' size='1' color='#FFFFFF'><b>".$myrow[obra]."</b></font><br>Autor: <font face='verdana, arial, helvetica, sans-serif' size='1' color='#FFFFFF'>".$myrow["artista"]."</font><br>Empresa: <font face='verdana, arial, helvetica, sans-serif' size='1' color='#FFFFFF'>".$myrow["empresa"]."</font><br>Descripción: <font face='verdana, arial, helvetica, sans-serif' size='1' color='#FFFFFF'>".$myrow["descripeq"]."</font><br>Web: <font face='verdana, arial, helvetica, sans-serif' size='1' color='#FFFFFF'><a href=".$myrow[web]." class='menuar'>".$myrow["web"]."</a></font>\n";  
echo "<td class='ficha' width='15%' valign='top'><font face='verdana, arial, helvetica, sans-serif' size='1' color='#FFFFFF'><a href=".$myrow[descarga]." class='menuar'>ENLACE</a><br>".$myrow[tama]."<a href=".$myrow[descarga]." class=bt><img src='img/descarga.gif' border='0' align='absmiddle'></a></font></td></tr>\n"; 
echo "<tr><td class='ficha' width='100%' valign='top' colspan='3'><img src=img/linea.gif border='0' width=100% height='1'></td></tr>\n";
}
while($myrow=mysql_fetch_array($result)); 
   echo "</table></center>\n"; 
}
echo "<center><table border='0' width='85%'>\n";
echo "<tr><td align='left'class='downestilo'>Total de enlaces y animaciones:</td><td align='center'class='total'>".$quants."<td align='left'class='downestilo'>\n";
echo "<td align='right' class='downestilo'>\n";
echo "distribuidos en estas páginas:\n";

for ($i=0; $i< $quants; $i=$i+6)
{
   $a=$a+1;
IF ($n==$i) 
   {
echo "[<A class='pagina' HREF='index.php?num=".$i."'>".$a."</A>]\n";
   }
   ELSE
  {
     echo "[<A class='pagina' HREF='index.php?num=".$i."'>".$a."</A>]\n";
   }
}
echo "</td></tr></table></center>\n";
mysql_close ($db);
?>
  #2 (permalink)  
Antiguo 06/03/2002, 10:47
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años
Puntos: 68
Re: Paginar sí, pero ¿y despues de hacer una busqueda?

En sí el código está muy bien, no hay nada que reprocharle, salvo dos cosas muy bobas, pero sin la mayor importancia :

1) El método que utilizas para obtener la cantidad total de resultados, si bien es válida, no es muy óptima, porque le obligas a la base a hacer un gran resultset que no utilizas luego, solo para hacer un mysql_num_rows(). Puedes modificar el Query para hacer un "SELECT COUNT(*)" y mySQL te devolverá el número de filas directamente.

2) La manera de recorrer los resultados, con un if y luego un do..while, podría haber sido reemplazada solo un while ($myrow=mysql_fetch_array($result)).

3) En el for, incrementas $i de 6 en 6 utilizando $i=$i+6. Lo mismo sería haber puesto $i+=6.

Bueno, como ves, eran solo boberías y detalles mínimos, pero el código está bien. Tan solo le faltan los enlaces de Siguiente y Anterior y listo.

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #3 (permalink)  
Antiguo 06/03/2002, 11:03
 
Fecha de Ingreso: enero-2002
Mensajes: 45
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: Paginar sí, pero ¿y despues de hacer una busqueda?

Hola webstudio, como es ess de count, es que tengo un programa en el que miro un monton de veces el numero de filas y si puedo quitar consultas pues mejor.

Gracias.
  #4 (permalink)  
Antiguo 06/03/2002, 11:37
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años
Puntos: 68
Re: Paginar sí, pero ¿y despues de hacer una busqueda?

Markken, lo del COUNT(*) es muy sencillo.

Digamos que tienes una Tabla con 1782 registros. Bueno, si lo que ahora haces para saber la cantidad de registros en la tabla es :

SELECT campo FROM tabla;

Y luego haces un mysql_num_rows(); te comento que no está mal, pero es poco eficiente, ya que le has hecho hacer a mySQL un query completo, prepararte los resultados en un ResultSet y cargarlos en memoria.

En cambio, puedes hacer un :

SELECT COUNT(*) as cantidad FROM tabla;

Y lo que mySQL te devolverá es un 1782. Solo ese número y nada más que ese número.

Luego, tan solo haces un

$total = mysql_result($link, 0, &quot;cantidad&quot;);

Y en $total tendrás la cantidad de registros, consumiendo mucha menos memoria y tiempo.

saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #5 (permalink)  
Antiguo 06/03/2002, 12:01
 
Fecha de Ingreso: enero-2002
Mensajes: 45
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: Paginar sí, pero ¿y despues de hacer una busqueda?

Ok, gracias. Acabo de adaptarlo en los sitios donde hacia el my_sql_result y luego no usaba los campos.
  #6 (permalink)  
Antiguo 07/03/2002, 04:15
 
Fecha de Ingreso: enero-2002
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Paginar sí, pero ¿y despues de hacer una busqueda?

Gracias Webstudio, se agradecen tus comentarios, se que deben haber maneras de ahorrar memoria y no las conozco, acabo de empezar con lo que es la programación en C y estoy cogiendo experiencia poco a poco con los operadores y las estructuras de control son complicados los jodios. ¿Me recomiendas algun sitio web donde pueda ver muchos casos prácticos explicados? Es decir del tipo: Como funcionan estos operadores y estructuras de control para este caso y para cualquiera similar.
Ah, tengo una deficiencia a la hora de plantearme las bases de datos de la ostia como has podido comprovar cada vez que me contestabas algo que preguntaba sobre estas me hacias referencia a su mal planteamiento desde el principio ¿conoces algun sitio web donde haya algun estudio hecho sobre la correcta estructuracion de una base de datos?

Gracias por tu tiempo Webstudio.
Si no puedes contestarme por tiempo y me vas a decir mirate mysql.org y php.net no te preocupes q no pasa nada.
  #7 (permalink)  
Antiguo 07/03/2002, 08:38
 
Fecha de Ingreso: enero-2002
Mensajes: 110
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Paginar sí, pero ¿y despues de hacer una busqueda?

Mirad (Webstudio y demás ;) ) en diferentes ordenadores(usandolos como servidore se entiende) me da resultado diferente es decir en uno no me aparece ningun error y en otro lo siguiente:

Warning: Undefined variable: num in c:\inetpub\wwwroot\hospitales\material\datos.php

Es un aviso que me da y no solo con eso cuando intenté enviar una variable desde un &lt;select&gt; me da el mismo error.
  #8 (permalink)  
Antiguo 07/03/2002, 09:08
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años
Puntos: 68
Re: Paginar sí, pero ¿y despues de hacer una busqueda?

Respondido en <a href='ir.asp?http://www.forosdelweb.com/mensaje.asp?id=66947' target='_blank'>http://www.forosdelweb.com/mensaje.asp?i...</a>

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
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 14:08.