Foros del Web » Programando para Internet » PHP »

Ordenar busqueda

Estas en el tema de Ordenar busqueda en el foro de PHP en Foros del Web. Hola: Tengo realizada una busqueda en una base de datos, funciona peroq uiero complicarla un poco... Es que se pueda hacer el criterio de ordenar ...
  #1 (permalink)  
Antiguo 08/04/2011, 03:21
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Ordenar busqueda

Hola:

Tengo realizada una busqueda en una base de datos, funciona peroq uiero complicarla un poco...

Es que se pueda hacer el criterio de ordenar "elegible", osea que el usuario determine cuel es ese criterio.

La solucion mas tonta que se me ha ocurrido es ponerlo de esta manera:

$resultados = mysql_query("SELECT * FROM imagenes where marca='$campo' order by '$orden'");

Medio funciona... pero no pudo fijar si es ascendente o descente:

$orden = imagen_id desc; por que al haber un espacio en blanco me da un error.

Se admiten sugerencias.
  #2 (permalink)  
Antiguo 08/04/2011, 05:53
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Ordenar busqueda

Código PHP:
$resultados mysql_query("SELECT * FROM imagenes where marca='".$campo."' order by ".$orden." ".$ascDes ); 
  #3 (permalink)  
Antiguo 08/04/2011, 06:08
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Ordenar busqueda

Gracias por tu respuesta, pero esto me abligaria a hacer una doble eleccion, no?

Una para el criterio y otra para si es ascendente o descendente, cierto?

un saludo
  #4 (permalink)  
Antiguo 08/04/2011, 06:48
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Ordenar busqueda

no podes hacer, un array con los campos que haces desc o asc
$desc = array( 'campo1', 'campo3' );
Código PHP:
$sql "SELECT * FROM imagenes where marca='".$campo."' 
   order by "
.$orden." ".( in_array$campo$desc ) ? ' desc' ' asc' 
$resultados mysql_query$sql ); 
si el $campo esta en el array entonces se hace un desc y si no esta se hace asc
  #5 (permalink)  
Antiguo 08/04/2011, 14:19
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Ordenar busqueda

Voy a necesitar un poco mas de ayuda:

Esta es la busuqeda con su paginacion:


Código PHP:
Ver original
  1. <? include('../configp.php');
  2. $campo = marca1;
  3. $registros = 1;
  4.  
  5.     if(!$_GET['pagina']){
  6.         $inicio = 0;
  7.         $_GET['pagina'] = 1;
  8.     }else{
  9.         $inicio = ($_GET['pagina'] - 1) * $registros;
  10.     }
  11.  
  12.     $resultados = mysql_query("SELECT * FROM imagenes where marca='$campo' order by  '$orden'");
  13.     $total_registros = mysql_num_rows($resultados);
  14.     $resultados = mysql_query("SELECT * FROM imagenes where marca='$campo' order by '$orden' LIMIT $inicio, $registros");
  15.     $total_paginas = ceil($total_registros / $registros);
  16.  
  17. $qry=$resultados;
  18.  
  19. while($row=mysql_fetch_assoc($resultados)){
  20. ?>
  21.  
  22.         <table width="600"  align="center" bgcolor="#00FF33">
  23.           <tr bgcolor="#FFFFFF">
  24.             <td rowspan="3" bgcolor="#CCFF00" width="150"><a href="../<?php echo $row['url']; ?>" rel="lightbox"><img src="../<?php echo $row['url']; ?>" width="90%" align="top" ></a></td>
  25.             <td>Modelo: <?php echo $row['modelo']; ?></td>
  26.             <td>Nivel: <?php echo $row['nivel']; ?></td>
  27.           </tr>
  28.           <tr bgcolor="#FFFFFF">
  29.             <td>Peso: <?php echo $row['peso']; ?>gr.</td>
  30.             <td>Precio: <?php echo $row['precio']; ?>€*</td>
  31.           </tr>
  32.           <tr bgcolor="#FFFFFF">
  33.             <td colspan="2" height="206">Descripcion: <?php echo $row['descripcion']; ?></td>
  34.           </tr>
  35.           <tr bgcolor="#FFFFFF">
  36.             <td>
  37.               <?php
  38.     if(isset($_POST[send])){
  39.         if(($_POST["voto"] >= 1) && ($_POST["voto"] <= 5)){
  40.             $voto = $_POST["voto"];
  41.             $imagen_id = $_POST["imagen_id"];
  42.             $sql = mysql_query("SELECT media,nvotos FROM imagenes WHERE imagen_id='".$row['imagen_id']."'");
  43.             $info = mysql_fetch_array($sql);
  44.             $media = ( ($info["media"]*$info["nvotos"]) + $voto ) / ( $info["nvotos"]+1 );
  45.             $votos = $info["nvotos"] + 1;
  46. mysql_query("UPDATE imagenes SET media='".$media."',nvotos='".$votos."' WHERE imagen_id='".$row["imagen_id"]."'");     
  47.         }else{ echo "Voto no valido."; }
  48.     }
  49.  
  50. ?>
  51.               <form name="votos" method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">
  52.                 <input type="hidden" name="id" value="">
  53.                 <input type="radio" name="voto" value="1">
  54.                 1
  55.                 <input type="radio" name="voto" value="2">
  56.                 2
  57.                 <input type="radio" name="voto" value="3">
  58.                 3
  59.                 <input type="radio" name="voto" value="4">
  60.                 4
  61.                 <input type="radio" name="voto" value="5">
  62.                 5
  63.                 <input type="submit" name="send" style="margin-top:10px; color:#FFFFFF; border:1px solid #000000; width:70px; height:20px;font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; padding-left:2px; padding-right:2px; padding-top:0px; padding-bottom:2px; line-height:14px; background-color:#FF0080; "value="Votar">
  64.               </form>
  65.               <?php
  66.    
  67.      $resultComen = mysql_query("SELECT * FROM imagenes WHERE imagen_id=".$row["imagen_id"]." ORDER BY imagen_id ASC");
  68.  while($rowComen = mysql_fetch_array($resultComen))
  69. {
  70. echo '
  71. Media de Votos:';
  72. if( $row['media']==0){ echo "Sin votos aun, se el primero"; }  else{ echo $rowComen["media"]; } ?>
  73.             </td>
  74.             <td colspan="2" bgcolor="#FFFFFF"> <a href="<?php echo $row['compra']; ?>" target="_blank" ><img src="../objetos/carrito_compra.png"  border="0"/></a>
  75.             </td>
  76.           </tr>
  77.         </table>
  78.  <BR>
  79. <?
  80. }
  81. mysql_free_result($resultComen);
  82. ?>
  83.  
  84. <?php }
  85.  
  86.     if(($_GET['pagina']-1) > 0) {
  87.         echo "<a href='http.../".$campo.".php?pagina=".($_GET['pagina']-1)."'>< Anterior</a> ";
  88.     }
  89.    
  90.     for($i=1; $i <= $total_paginas; $i++){
  91.         if($_GET['pagina'] == $i){
  92.             echo "<b>".$pagina."</b> ";
  93.         }else{
  94.             echo "<a href='http://.../".$campo.".php?pagina=$i'>$i</a> ";
  95.         }
  96.     }
  97.  
  98.     if(($_GET['pagina']+1) <= $total_paginas){
  99.         echo " <a href='http://.../kaitt.php?pagina=".($_GET['pagina']+1)."'>Siguiente ></a>";
  100.     }
  101.  
  102. ?>

Tal y como esta, la busqueda se ordena de manera de manera "fija";

Pero me gustaria agregarle la opcion de que ordene en funcion del campo precio, dando la opcion de mas barato a mas caro o al contrario.

No se si me explique bien...

Etiquetas: busquedas
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 05:33.