Foros del Web » Programando para Internet » PHP »

Ordenar consulta a gusto del usuario

Estas en el tema de Ordenar consulta a gusto del usuario en el foro de PHP en Foros del Web. Hola a todos y gracias de antemano. Tengo un problemilla y no se solucionarlo. Bueno, al lio: Quiero realizar una consulta con varios criterios, de ...
  #1 (permalink)  
Antiguo 26/05/2008, 07:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación Ordenar consulta a gusto del usuario

Hola a todos y gracias de antemano.
Tengo un problemilla y no se solucionarlo.
Bueno, al lio:
Quiero realizar una consulta con varios criterios, de los cuales, todos funcionan bien, excepto el orden a elegir y no se porque, además, si pongo el orden de manera estática, es decir, ORDER BY fecha, por ejemplo, lo hace perfecto, pero de manera dinámica, nada.

Aqui pongo el código:

........

Código PHP:
<p><font face=arial size="2" color=#000000>Introduzca panel/es Fotovoltáico/s a consultar:</font></p>

    <form action="<?=$PHP_SELF?>" method="post">
    <input type="checkbox" name="mono" value="mono" checked><font face="arial" size="2" color="#000000">Monocristalino</font>
    <input type="checkbox" name="poli" value="poli" ><font face="arial" size="2" color="#000000">Policristalino</font>
    <input type="checkbox" name="cis" value="cis"><font face="arial" size="2" color="#000000">CIS</font>
    <input type="checkbox" name="cis" value="cis"><font face="arial" size="2" color="#000000">CIS</font></br></br>
    <p><font face=arial size="2" color=#000000>Introduzca rango de irradiancias a consultar:</font></p>
    <select name="bajo">
    <option value="2400">2400 W/m2</option>
    <option value="2300">2300 W/m2</option>
    <option value="2200">2200 W/m2</option>
    <option value="2100">2100 W/m2</option>
    <option value="2000">2000 W/m2</option>
    <option value="1900">1900 W/m2</option>
    <option value="1800">1800 W/m2</option>
    <option value="1700">1700 W/m2</option>
    <option value="1600">1600 W/m2</option>
    <option value="1500">1500 W/m2</option>
    <option value="1400">1400 W/m2</option>
    <option value="1300">1300 W/m2</option>
    <option value="1200">1200 W/m2</option>
    <option value="1100">1100 W/m2</option>
    <option value="1000">1000 W/m2</option>
    <option value="900">900 W/m2</option>
    <option value="800">800 W/m2</option>
    <option value="700">700 W/m2</option>
    <option value="600">600 W/m2</option>  
    <option value="500">500 W/m2</option>
    <option value="400">400 W/m2</option>
    <option value="300">300 W/m2</option>
    <option value="200">200 W/m2</option>
    <option value="100">100 W/m2</option>
    </select>    
    
    <select name="alto">
    <option value="2500">2500 W/m2</option>
    <option value="2400">2400 W/m2</option>
    <option value="2300">2300 W/m2</option>
    <option value="2200">2200 W/m2</option>
    <option value="2100">2100 W/m2</option>
    <option value="2000">2000 W/m2</option>
    <option value="1900">1900 W/m2</option>
    <option value="1800">1800 W/m2</option>
    <option value="1700">1700 W/m2</option>
    <option value="1600">1600 W/m2</option>
    <option value="1500">1500 W/m2</option>
    <option value="1400">1400 W/m2</option>
    <option value="1300">1300 W/m2</option>
    <option value="1200">1200 W/m2</option>
    <option value="1100">1100 W/m2</option>
    <option value="1000">1000 W/m2</option>
    <option value="900">900 W/m2</option>
    <option value="800">800 W/m2</option>
    <option value="700">700 W/m2</option>
    <option value="600">600 W/m2</option>  
    <option value="500">500 W/m2</option>
    <option value="400">400 W/m2</option>
    <option value="300">300 W/m2</option>
    <option value="200">200 W/m2</option>    
    </select>

    <p><font face=arial size="2" color=#000000>Elija orden de la consulta:</font></p>
    <select name="orden">
    <option value="fecha">Fechas</option>
    <option value="hora">Horas</option>
    <option value="media3">Irradiancias</option>
    
    </select>    </br>
    
    <p><input type="submit" value="Consultar"/></p> </form></center>
    <?php
    
    
    
//Realizamos consulta BD

      
$result = @mysql_query("SELECT * FROM medias WHERE media3 <'$alto' AND media3 >'$bajo' ORDER BY '$orden' ");
.........

Gracias a [email protected] y un cordial saludo
  #2 (permalink)  
Antiguo 26/05/2008, 07:28
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 11 años, 9 meses
Puntos: 52
Respuesta: Ordenar consulta a gusto del usuario

no he mirado el query, pero te falta recoger los valores del form con $_POST

$bajo = $_POST['bajo'];

Un saludo
  #3 (permalink)  
Antiguo 26/05/2008, 09:09
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación Respuesta: Ordenar consulta a gusto del usuario

Hola. muchas gracias por la recomendación, la he probado, pero sigue sin rular.

Código PHP:
<?php
    $bajo 
$_POST['bajo'];
    
$alto $_POST['alto'];
    
$orden $_POST['orden'];


    
//Realizamos consulta BD
      
$result = @mysql_query("SELECT * FROM medias WHERE media3 <'$alto' AND media3 >'$bajo' ORDER BY '$orden'");
      if (!
$result) {
        echo(
"<p>1-Error performing query: " mysql_error() . "</p>");
        exit();
      }
No tengo ni idea porque será. Saludos
  #4 (permalink)  
Antiguo 26/05/2008, 09:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: Ordenar consulta a gusto del usuario

Es ORDER BY $orden sin comillas.

Saludos.
  #5 (permalink)  
Antiguo 26/05/2008, 10:01
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación Respuesta: Ordenar consulta a gusto del usuario

Me da este error al quitar las comillas:

1-Error performing query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Saludos.
  #6 (permalink)  
Antiguo 26/05/2008, 10:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: Ordenar consulta a gusto del usuario

Prueba poner así tu código:
Código PHP:
//Realizamos consulta BD
      
$query "SELECT * FROM medias WHERE media3 <'$alto' AND media3 >'$bajo' ORDER BY '$orden'";
      
$result = @mysql_query($query);
      if (!
$result) {
        echo(
"<p>1-Error performing query $query, error: " mysql_error() . "</p>");
        exit();
      } 
Saludos.
  #7 (permalink)  
Antiguo 26/05/2008, 11:02
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 14 años, 4 meses
Puntos: 638
Respuesta: Ordenar consulta a gusto del usuario

Cita:
Iniciado por GatorV Ver Mensaje
Es ORDER BY $orden sin comillas.

Saludos.
hola, yo diria que todas las variables en la consulta van sin las comillas:
Código PHP:
<?php
$query 
"SELECT * FROM medias WHERE media3 < $alto AND media3 > $bajo ORDER BY $orden";

// lo demas aqui
aqui te dejo un link que tal vez te sirva para lo que quieres lograr al final:
http://www.forosdelweb.com/f18/ayuda...4/#post2193259

saludos y suerte

EDITO === PD: odio que me ponga el titulo de la pagina cuando pego las url's :S
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose

Última edición por rogertm; 26/05/2008 a las 11:05 Razón: EDITO === PD
  #8 (permalink)  
Antiguo 26/05/2008, 11:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación Respuesta: Ordenar consulta a gusto del usuario

Hola, he probado las dos soluciones, la de Gator y la tuya, y nada.
La de Gator se la traga, pero no me ordena y la tuya, me suelta un error de sintaxis:

1-Error performing query SELECT * FROM medias WHERE media3 < AND media3 > ORDER BY , error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND media3 > ORDER BY' at line 1

Y lo que no entiendo, es que la variable alto y bajo, me lo hace perfecto, y haciendo un echo $orden, me lo suelta tambien bien, pero no ordena.

I DON`T KNOW !!!

  #9 (permalink)  
Antiguo 26/05/2008, 11:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: Ordenar consulta a gusto del usuario

Hola namorha,

Si te fijas no esta pasando las variables, dice WHERE media3 < AND media 3 > ORDER BY. Es decir tus variables $alto, $bajo, y $orden no existen en el script y por eso no las reemplaza. Verifica que te estén llegando las variables correctamente desde tu script.

Saludos.
  #10 (permalink)  
Antiguo 26/05/2008, 12:08
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación Respuesta: Ordenar consulta a gusto del usuario

Hola Gator, el error que me sale es debido a no poner las comillas, porque no soporta esa sintaxis.

Con tu ejemplo, hace lo mismo que me sucedia a mi al principio, me coge las varialbles alto y bajo, pero no el orden.

Y como te decia, si hago echo $alto, $bajo $orden, me los imprime los tres, por lo tanto se reciben, pero no me lo ordena.

Saludos
  #11 (permalink)  
Antiguo 26/05/2008, 12:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: Ordenar consulta a gusto del usuario

Hola namorha,

Si te fijas en el mensaje de error se imprime la consulta SQL y en ella no vienen los datos que quieres poner, llegan los campos en blanco, es por eso que te marca error al enviar la consulta.

Saludos.
  #12 (permalink)  
Antiguo 26/05/2008, 12:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación Respuesta: Ordenar consulta a gusto del usuario

Hola de nuevo, GatorV.

Pues se lo que me dices, pero no se como solucionarlo, porque ya te digo, que si no quiero ordenarlo funciona perfectamente, incluso, los echo me imprimen el resultado correcto, asi que estoy perdido.

Si se te ocurre alguna prueba más o solución, te lo agradecería. SAludos
  #13 (permalink)  
Antiguo 26/05/2008, 13:13
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 14 años, 4 meses
Puntos: 638
Respuesta: Ordenar consulta a gusto del usuario

prueba asi a ver:
Código PHP:
<?php
$query 
"SELECT * FROM medias
         WHERE media3 < "
$_POST['alto'] ."AND media3 > "$_POST['bajo'] ."
         ORDER BY "
$_POST['orden'] ."";
?>
aunque no creo que exista mucha diferencia

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #14 (permalink)  
Antiguo 28/05/2008, 17:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 102
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Ordenar consulta a gusto del usuario

No Hay Suerte, Esto No Rula. No Tiene Explicación. Gracias De Todas Formas.
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 07:39.