Foros del Web » Programando para Internet » PHP »

ordenar campos de consulta

Estas en el tema de ordenar campos de consulta en el foro de PHP en Foros del Web. Hola! Estoy usando este codigo para un buscador: include("config.php"); if($enviar) { $consulta="SELECT * FROM ferias "; $add_consulta =""; if($_POST[nombre]!="") $add_consulta="where nombre LIKE '%".$_POST[nombre]."%'"; if($_POST[inicio]!="") if( ...
  #1 (permalink)  
Antiguo 30/03/2005, 07:23
 
Fecha de Ingreso: junio-2004
Mensajes: 88
Antigüedad: 19 años, 10 meses
Puntos: 0
ordenar campos de consulta

Hola!
Estoy usando este codigo para un buscador:

include("config.php");
if($enviar) {
$consulta="SELECT * FROM ferias ";
$add_consulta ="";
if($_POST[nombre]!="")
$add_consulta="where nombre LIKE '%".$_POST[nombre]."%'";
if($_POST[inicio]!="")
if( $add_consulta =="")
$add_consulta = "where inicio LIKE '%".$_POST[inicio]."%'";
else
$add_consulta .= "and inicio LIKE '%".$_POST[inicio]."%'";
if($_POST[pais]!="")
if( $add_consulta =="")
$add_consulta = "where pais LIKE '%".$_POST[pais]."%'";
else
$add_consulta .= "and pais LIKE '%".$_POST[pais]."%'";
$consulta .= $add_consulta;
$resp = mysql_query($consulta);
$count="0";
if(mysql_num_rows($resp) == "0") {
echo ("

Asi funciona bien. El problema es que quiero que saque los resultados ordenados por año, primero los mas recientes. En la consulta pongo:
$consulta="SELECT * FROM ferias order by año ";
Pero en cuanto lo pongo da error
Alguna pista??
Gracias
  #2 (permalink)  
Antiguo 30/03/2005, 07:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
No sabes que tipo de error te da? Como es la tabla ferias? Con esto por ahi se puede observar algo.
Suerte
  #3 (permalink)  
Antiguo 30/03/2005, 08:41
 
Fecha de Ingreso: junio-2004
Mensajes: 88
Antigüedad: 19 años, 10 meses
Puntos: 0
Holitas

Me da este error:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Inetpub\vhosts\acicae.es\httpdocs\resulfe.php on line 187
Estos son los resultados de la búsqueda:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Inetpub\vhosts\acicae.es\httpdocs\resulfe.php on line 202


Y es esto:

187-->if(mysql_num_rows($resp) == "0") {
202-->while($sql = mysql_fetch_array($resp)) {

La tabla tiene todos los campos de modo texto. Al poner el order by funciona solamente si saco todos los resultados, pero en cuanto busco por un campo no funciona. La verdad es que me ha pasado en alguna consulta mas, pero al final lo deje sin ordenar.
  #4 (permalink)  
Antiguo 30/03/2005, 08:52
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
seguramente cuando ejecuta la consulta te debe estar tirando algun error el mysql. Prueba de hacer un echo de la consulta que te tira error antes de ejecutarla, o de hacer :

$resp = mysql_query($consulta);
if (!$resp ) {
die('Invalid query: ' . mysql_error());
}

Haber que error te tira en la consulta.
Suerte
  #5 (permalink)  
Antiguo 30/03/2005, 18:40
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por bonemachine
(...) En la consulta pongo:
$consulta="SELECT * FROM ferias order by año ";
Pero en cuanto lo pongo da error (...)
Entiendo que estás haciendo algo como
Código:
SLECT * FROM tabla ORDER BY anno WHERE ....
error.. debe de ser así:
Código:
SELECT * FROM tabla WHERE .... ORDER BY anno
con el orden indicado al final... por lo que tu solución sería después de armar tu query con los where correspondientes... simplemente añade el order bye
Código:
$consulta.= " ORDER BY anno"
Suerte!
(como consejo: procura no usar 'ñ' ni acentos.)
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 31/03/2005, 00:45
 
Fecha de Ingreso: junio-2004
Mensajes: 88
Antigüedad: 19 años, 10 meses
Puntos: 0
hola de nuevo

hola!!
He seguido probando y nada, sigue dando error en cuanto le digo que ordene los resultados por algo. El orden de la consulta tambien lo tenia bien.
Solo se puede buscar por tres campos y quiero que ordene los resultados por año, que no aparece a la hora de buscar.
Si se os ocurre algo, me decis.
Muchas gracias
  #7 (permalink)  
Antiguo 31/03/2005, 07:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si usas como nombre de un campo "ñ" o acentos (nada recomendable usarlo en "programación") .. tendrías que llamar en tus estructuras SQL a esos nombre de campos con "ñ" .. acentos y demás con la sintaxi:

SELECT * FROM tabla ORDER BY ´año´

Pero mejor no entrar en problemas .. no uses "ñ" ni acentos .. anyo podría ser un nombre para ese campo ..

Un saludo,
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 09:42.