Foros del Web » Programando para Internet » PHP »

Order by en pagina web tras mostrar unos registros...

Estas en el tema de Order by en pagina web tras mostrar unos registros... en el foro de PHP en Foros del Web. Buenas, tengo un problemilla y no se como plantearlo, se lo comento a ver si se les ocurre como... Veamos, estoy en una pagina.php en ...
  #1 (permalink)  
Antiguo 28/05/2008, 02:35
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Order by en pagina web tras mostrar unos registros...

Buenas, tengo un problemilla y no se como plantearlo, se lo comento a ver si se les ocurre como...
Veamos, estoy en una pagina.php en la que hago una búsqueda y la muestro. en la nueva pagina que se muestra hay una opcion de ordenar por.... aquí viene el tema, tengo que añadir a la consulta que me ha mostrado los resultados un order by y mostrar la nueva consulta... alguna sugerencia...??

Gracias anticipadas... Saludos...!
  #2 (permalink)  
Antiguo 28/05/2008, 07:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 6
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Order by en pagina web tras mostrar unos registros...

lo que puedes hacer es :

1- antes de realizar la consulta, preguntar al usuario por medio de checkbox o botones, de que forma quiere que se ordenen los datos, y luego realizar la consulta a la base de datos de acuerdo a lo que el usuario requiere.

2- otra forma es repetir la consulta cambiando los order by, dependiendo de lo que el usuario requiera , pero manteniendo los datos en la misma variable, para que no ocupes mucha memoria en caso de que los datos sean muy numerosos.
  #3 (permalink)  
Antiguo 28/05/2008, 08:49
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Order by en pagina web tras mostrar unos registros...

otra maneras con ajax... puedes ingresar esos datos por tablas... y cada header se transforma en boton y ellos t lo ordenan...
dame un seg y t l publico
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #4 (permalink)  
Antiguo 28/05/2008, 08:54
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Order by en pagina web tras mostrar unos registros...

ok fijate..
haces tu consulta ordenando pola llave primaria... me imagino q es un id o un campo int auto_increment..
luego en donde hces la consulta haces eso
esto s un ejemplo d como lo hice con mi archivo

Código PHP:
<?php require_once('Connections/pintor.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$maxRows_Recordset1 10;
$pageNum_Recordset1 0;
if (isset(
$_GET['pageNum_Recordset1'])) {
  
$pageNum_Recordset1 $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1;

mysql_select_db($database_pintor$pintor);
$query_Recordset1 "SELECT * FROM rrhh ORDER BY id DESC";
$query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Recordset1$startRow_Recordset1$maxRows_Recordset1);
$Recordset1 mysql_query($query_limit_Recordset1$pintor) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);

if (isset(
$_GET['totalRows_Recordset1'])) {
  
$totalRows_Recordset1 $_GET['totalRows_Recordset1'];
} else {
  
$all_Recordset1 mysql_query($query_Recordset1);
  
$totalRows_Recordset1 mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

</head>

<body>
<table width="100%" border="0" cellpadding="0" cellspacing="3" class="sortable-onload-3-reverse rowstyle-alt no-arrow" id="test1">  
<caption>&nbsp;
</caption>  <thead>    <tr>      <th width="146" class="fd-column-1 sortable-text" style="-moz-user-select: none;"><a title="Sort on â€œPrev.Rankâ€" href="#">Nombres</a></th>      
<th width="148" class="fd-column-2 sortable-text" style="-moz-user-select: none;"><a title="Sort on â€œMovieâ€" href="#">Apellidos</a></th>      
<th width="121" class="fd-column-3 sortable-text" style="-moz-user-select: none;"><a title="Sort on â€œRelease Dateâ€" href="#">Sexo</a></th>      
<th width="125" class="fd-column-4 sortable-text" style="-moz-user-select: none;"><a title="Sort on â€œWeekly Grossâ€" href="#">E-Mail</a></th>      
<th width="117" class="fd-column-5 sortable-text" style="-moz-user-select: none;"><a title="Sort on â€œChangeâ€" href="#">País</a></th>      
<th width="134" class="fd-column-6 sortable-text" style="-moz-user-select: none;"><a title="Sort on â€œTheatersâ€" href="#">Estado</a></th>      
<th width="152" class="fd-column-7 sortable-text" style="-moz-user-select: none;"><a title="Sort on â€œPer Theaterâ€" href="#">Edo. Civil</a></th>      
  
    <th width="36" class="" style="-moz-user-select: none;">Ver</th>    
</tr>  </thead>  <tbody>  <?php do { ?> <tr class="">      
 
    <td><div align="center"><?php echo $row_Recordset1['nombres']; ?></div></td>
    <td class="lft"><div align="center"><?php echo $row_Recordset1['apellidos']; ?></div></td>
    <td><div align="center"><?php echo $row_Recordset1['sexo']; ?></div></td>
    <td><div align="center"><?php echo $row_Recordset1['email']; ?></div></td>
    <td><div align="center"><?php echo $row_Recordset1['pais']; ?></div></td>
    <td><div align="center"><?php echo $row_Recordset1['estado']; ?></div></td>
    <td><div align="center"><?php echo $row_Recordset1['estadocivil']; ?></div></td>
    <td><div align="right">ver ficha</div></td>
    
</tr><?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?></tbody>  <tfoot>  </tfoot></table>
<script type="text/javascript" src="tablesort.js"></script>
</body></html>   
<?php
mysql_free_result
($Recordset1);
?>
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #5 (permalink)  
Antiguo 28/05/2008, 08:57
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Order by en pagina web tras mostrar unos registros...

y el tablesort.js ... dios... el codigo es muy largo.. t lopublico para q lo descargues

http://www.granterraza.com/tablesort.js

saludos
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #6 (permalink)  
Antiguo 28/05/2008, 09:28
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Order by en pagina web tras mostrar unos registros...

Buenas... gracias por tu contestación!!!

El problema es que la consulta que hago es a 5 tablas y cada tabla contiene muchas filas(algunas hasta 2600), entonces al mostrar los resultados tarda como 95 segs... es excesivo...

La base de datos es de mysql, la consulta es la siguiente:
SELECT inm.Imagen1,inm.Imagen2,inm.Imagen3,inm.Imagen4,in m.Imagen5,inm.Imagen6,inm.idinmueble,pbl.nombrepob lación,inm.situación1,inm.situación2, tinm.nombretipoinmueblecs, inm.precio1euros,inm.precio1euros as precio1euros, (c.superficie1 + c.superficie2 +c.superficie3 + c.superficie4 + c.superficie5) AS superficie_vivienda, c.superficieSolar, (c.númhabdobles + c.númsuitshabdobles +c.númhabsencillas) AS num_habitaciones,(c.númbaños + c.númaseos)as num_baños, inm.idinmueble AS referencia
FROM dat_población pbl
INNER JOIN dat_inmueble inm ON pbl.idpoblación = inm.idpoblación
INNER JOIN dat_tipoinmueble tinm ON tinm.idtipoinmueble = inm.idtipoinmueble INNER JOIN dat_inmueblecomún c ON c.idinmueble = inm.idinmueble
INNER JOIN dat_inmuebleCS cs on cs.idinmueble = inm.idinmueble
WHERE (c.númhabdobles+c.númsuitshabdobles+c.númhabsencil las)>='2'
ORDER BY tinm.nombretipoinmueblecs DESC

la sintaxis está bien porque al cabo del tiempo muestra los datos, el tema es como reducir el tiempo de espera...

Gracias anticipadas!!
  #7 (permalink)  
Antiguo 28/05/2008, 09:34
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Order by en pagina web tras mostrar unos registros...

mmmmmmmm pq no paginas los resultados??? q te muestren X cantidad por pana y haces lo q t dije...
pagina por orden alfabético si quieres o por algo q tengan en comun
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #8 (permalink)  
Antiguo 28/05/2008, 10:14
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Order by en pagina web tras mostrar unos registros...

Antes que nada gracias por tu interés...

He conseguido que me devuelva rapido los datos con un LIMIT 0,9 pero ahora para la paginación vuelvo a tener el mismo problema, necesito saber el número total de filas y para ello hago
"$num_results = mysql_num_rows($resultado);"
pero claro, aquí no hay limit y vuelve a tardar muchisimo... si no tengo el número total de filas no podré mostrar todos los resultado paginados....

Alguna sugerencia?
  #9 (permalink)  
Antiguo 28/05/2008, 10:25
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Order by en pagina web tras mostrar unos registros...

creo q va asi
Código PHP:
<?php if ($pageNum_variablemylquery 0) { >
                      <
a href="<?php printf("%s?pageNum_mysql_query=%d%s", $currentPage, 0, $queryString_variablemylquery); ?>">Primero</a>
                      <?
php }  ?>

<?php if ($pageNum_variablemylquery 0) {  ?>
                      <a href="<?php printf("%s?pageNum_Recordset1=%d%s"$currentPagemax(0$pageNum_variablemylquery 1), $queryString_variablemylquery); ?>">Anterior</a>
                      <?php }  ?>
                  </td>
                  <td width="23%" align="center"><?php if ($pageNum_variablemylquery $totalPages_variablemylquery) {  ?>
                      <a href="<?php printf("%s?pageNum_variablemylquery=%d%s"$currentPagemin($totalPages_variablemylquery$pageNum_variablemylquery 1), $queryString_variablemylquery); ?>">Siguiente</a>
                      <?php ?>
                  </td>
                  <td width="23%" align="center"><?php if ($pageNum_variablemylquery $totalPages_variablemylquery) { ?>
                      <a href="<?php printf("%s?pageNum_variablemylquery=%d%s"$currentPage$totalPages_variablemylquery$queryString_variablemylquery); ?>">Ultimo</a>
                      <?php ?>
algo asi es la paginacion necestariamos alguna otra opinion... donde coloco
variablemylquery eso es como defines tu query.. con q variable!!
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #10 (permalink)  
Antiguo 28/05/2008, 10:34
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Order by en pagina web tras mostrar unos registros...

Esta variable que valor toma?????

$pageNum_variablemylquery
  #11 (permalink)  
Antiguo 28/05/2008, 10:48
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Order by en pagina web tras mostrar unos registros...

t deberia tomar algo
Código PHP:
$currentPage $_SERVER["PHP_SELF"];

$maxRows_var 50//maximo de registros
$pageNum_var 0//aqui tienes el minimo
if (isset($_GET['pageNum_var'])) {
  
$pageNum_var $_GET['pageNum_var'];

$pageNum_var
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
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:14.