Foros del Web » Programando para Internet » PHP »

Ordenar resultados de una consulta

Estas en el tema de Ordenar resultados de una consulta en el foro de PHP en Foros del Web. Estoy haciendo un formulario de busqueda de productos en el cual la consulta funciona correctamente (capta todos los registros en base a 4 campos: tipo, ...
  #1 (permalink)  
Antiguo 15/11/2007, 23:32
Avatar de kesioo  
Fecha de Ingreso: enero-2007
Ubicación: Capital Federal, Argentina
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 2
Ordenar resultados de una consulta

Estoy haciendo un formulario de busqueda de productos en el cual la consulta funciona correctamente (capta todos los registros en base a 4 campos: tipo, calificacion, deposito).
Me los muestra en pantalla en filas, con su nombre, precio, stock.

Si no se pide la calificacion, es ordenado segun "calificacion" descendiente.
yo lo que quiero es que en ese caso, me muestre todas las calificaciones y el resto dentro de cada una, ej:

Calif 1
Nombre Precio Stock
Nombre Precio Stock
Calif 2
Nombre Precio Stock
Nombre Precio Stock

pero al armar esto dentro del while, sale:

Calif 1
Nombre Precio Stock
Calif 1
Nombre Precio Stock
Calif 2
Nombre Precio Stock
Calif 2
Nombre Precio Stock

y si lo uso antes del while($fila = mysql_fetch_array($rh)) obviamente no funciona...

como deberia hacer?
  #2 (permalink)  
Antiguo 15/11/2007, 23:44
 
Fecha de Ingreso: noviembre-2007
Mensajes: 157
Antigüedad: 17 años
Puntos: 3
Re: Ordenar resultados de una consulta

A ver si puedes poner la estructura de la tabla y la consulta que usas
  #3 (permalink)  
Antiguo 16/11/2007, 00:05
Avatar de kesioo  
Fecha de Ingreso: enero-2007
Ubicación: Capital Federal, Argentina
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: Ordenar resultados de una consulta

<?php
$H1 = $_POST['H1']; // Campo "Tipo"
$H2 = $_POST['H2']; // Campo "Calificacion"
$H3 = $_POST['H3']; // Campo "Deposito"


// Si no se selecciona calificacion
if ($H2 == "") {
$resProd = " SELECT * FROM `tabla` WHERE (P_tipo = '$H1' AND P_deposito = '$H3') ORDER BY P_calif DESC";
// Si selecciona calificacion
} else {
$resProd = " SELECT * FROM `tabla` WHERE (P_tipo = '$H1' AND P_calif = '$H2' AND P_deposito = '$H3') ORDER BY P_nombre";
}
// Definimos la variable de Conexion
$con=mysql_connect("","","");

// Ingresamos en la BD
mysql_select_db("BD",$con);
// Ejecutamos las sentencias
$rH = mysql_query($resProd, $con) or die(mysql_error());
$num_total_registros = mysql_num_rows($rH);

// Ponemos el número de registros total, el tamaño de página y la página que se muestra
if ($num_total_registros == 0) {
echo "Lo lamentamos pero su b&uacute;squeda no ha arrojado ning&uacute;n resultado.<br>Por favor, modifique las opciones seleccionadas.<br>&nbsp;</td></tr><tr><td align='center'>";
$include = include('./form_search.phtml');
$function = Form_search();
// Limpiamos resultados y cerramos la conexión
mysql_free_result($rH);
mysql_close($con);
} else {
$color = true;
echo "<table width='490' border='0' cellpadding='0' cellspacing='0'><tr><td>Resultados encontrados:</td></tr>";
echo "<tr><td align='center' height='20'><img src='./Images/bar.gif' border='0' width='490' height='1'></td></tr><tr><td align='center'>";
echo "<table width='490' border='0' cellpadding='0' cellspacing='0'>";
//
while ($row = mysql_fetch_array($rH)){
echo "<tr><td>".$row[P_calif]."</td></tr>";
echo "<tr height='20'";
if ($color == true) {
echo " class='result1'>";
$color = false;
} else {
echo " class='result2'>";
$color = true;
}
echo "<td width='190'>&nbsp;".$row[P_nombre]."</td><td width='200'>$".$row[P_precio]."</td><td width='90' align='center'>Stock:&nbsp;".$row[P_stock]."</td><td width='10'><input type='checkbox' name='' value=""></td></tr>";
}
echo "</table><tr><td align='center' height='20'><img src='./Images/bar.gif' border='0' width='490' height='1'></td></tr>";
echo "<tr><td class='observacion2'>Redefinir su b&uacute;squeda:</td></tr>";
echo "<tr><td height='20' colspan='3'>&nbsp;</td></tr><tr><td align='center'>";
$include = include('./form_search.phtml');
$function = Form_search();
echo "</td></tr>";
//
mysql_free_result($rH);
mysql_close($con);
}

?>

con esta forma a cada fila le agrega la calificacion, yo quiero que los que tienen la misma, queden en conjunto bajo su calificacion, mostrada 1 vez al principio del conjunto...
  #4 (permalink)  
Antiguo 16/11/2007, 00:44
 
Fecha de Ingreso: noviembre-2007
Mensajes: 157
Antigüedad: 17 años
Puntos: 3
Re: Ordenar resultados de una consulta

Donde tienes esto
Código PHP:
//
while ($row mysql_fetch_array($rH)){
echo 
"<tr><td>".$row[P_calif]."</td></tr>"
Cámbialo por

Código PHP:
//
$pcalif='';
while (
$row mysql_fetch_array($rH)){
if (
$pcalif != $row[P_calif]) {
    
$pcalif $row[P_calif];
    echo 
"<tr><td>".$row[P_calif]."</td></tr>";

  #5 (permalink)  
Antiguo 17/11/2007, 02:50
Avatar de kesioo  
Fecha de Ingreso: enero-2007
Ubicación: Capital Federal, Argentina
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 2
Re: Ordenar resultados de una consulta

Gracias Lanselot!!

era exactamente lo que necesitaba... todavia ando medio flojo de logica pero va queriendo...

saludos!
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 21:57.