Ordenar Busqueda

Tengo realizada una busqueda en una base de datos, funciona pero quiero 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.
$orden = imagen_id desc;
WTF? Esto se supone que es un string... Los string SIEMPRE van entre comillas.

Ahora te dejo el codigo que seria correcto. Solo anade al formulario de busqueda algun tipo de seleccion en el cual el usuario indique si es ascendente o descendente.
$direccion = $_POST['direccion'];
$resultados = mysql_query("SELECT * FROM imagenes where marca='$campo' order by '$orden' $direccion");
Voy a necesitar un poco mas de ayuda:

Esta es la busuqeda con su paginacion:


<? include('../configp.php');
session_start();
$campo = marca1;
$registros = 1;

if(!$_GET['pagina']){
$inicio = 0;
$_GET['pagina'] = 1;
}else{
$inicio = ($_GET['pagina'] - 1) * $registros;
}

$resultados = mysql_query("SELECT * FROM imagenes where marca='$campo' order by '$orden'");
$total_registros = mysql_num_rows($resultados);
$resultados = mysql_query("SELECT * FROM imagenes where marca='$campo' order by '$orden' LIMIT $inicio, $registros");
$total_paginas = ceil($total_registros / $registros);

$qry=$resultados;

while($row=mysql_fetch_assoc($resultados)){
?>

<table width="600" align="center" bgcolor="#00FF33">
<tr bgcolor="#FFFFFF">
<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>
<td>Modelo: <?php echo $row['modelo']; ?></td>
<td>Nivel: <?php echo $row['nivel']; ?></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>Peso: <?php echo $row['peso']; ?>gr.</td>
<td>Precio: <?php echo $row['precio']; ?>€*</td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2" height="206">Descripcion: <?php echo $row['descripcion']; ?></td>
</tr>
<tr bgcolor="#FFFFFF">
<td>
<?php
if(isset($_POST)){
if(($_POST["voto"] >= 1) && ($_POST["voto"] <= 5)){
$voto = $_POST["voto"];
$imagen_id = $_POST["imagen_id"];
$sql = mysql_query("SELECT media,nvotos FROM imagenes WHERE imagen_id='".$row['imagen_id']."'");
$info = mysql_fetch_array($sql);
$media = ( ($info["media"]*$info["nvotos"]) + $voto ) / ( $info["nvotos"]+1 );
$votos = $info["nvotos"] + 1;
mysql_query("UPDATE imagenes SET media='".$media."',nvotos='".$votos."' WHERE imagen_id='".$row["imagen_id"]."'");
}else{ echo "Voto no valido."; }
}

?>
<form name="votos" method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">
<input type="hidden" name="id" value="">
<input type="radio" name="voto" value="1">
1
<input type="radio" name="voto" value="2">
2
<input type="radio" name="voto" value="3">
3
<input type="radio" name="voto" value="4">
4
<input type="radio" name="voto" value="5">
5
<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">
</form>
<?php

$resultComen = mysql_query("SELECT * FROM imagenes WHERE imagen_id=".$row["imagen_id"]." ORDER BY imagen_id ASC");
while($rowComen = mysql_fetch_array($resultComen))
{
echo '
Media de Votos:';
if( $row['media']==0){ echo "Sin votos aun, se el primero"; } else{ echo $rowComen["media"]; } ?>
</td>
<td colspan="2" bgcolor="#FFFFFF"> <a href="<?php echo $row['compra']; ?>" target="_blank" ><img src="../objetos/carrito_compra.png" border="0"/></a>
</td>
</tr>
</table>
<BR>
<?
}
mysql_free_result($resultComen);
?>

<?php }

if(($_GET['pagina']-1) > 0) {
echo "<a href='http://tppadel.com/marca_palas/".$campo.".php?pagina=".($_GET['pagina']-1)."'>< Anterior</a> ";
}

for($i=1; $i <= $total_paginas; $i++){
if($_GET['pagina'] == $i){
echo "<b>".$pagina."</b> ";
}else{
echo "<a href='http://tppadel.com/marca_palas/".$campo.".php?pagina=$i'>$i</a> ";
}
}

if(($_GET['pagina']+1) <= $total_paginas){
echo " <a href='http://tppadel.com/marca_palas/kaitt.php?pagina=".($_GET['pagina']+1)."'>Siguiente ></a>";
}

?>

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...
A ver, un string es una cadena de caracteres... El ejemplo que te di en otro post de como van y una idea de como hacer lo que quieres.
Aqui vuelvo a repetir:
$campo = marca1; //Esto es un string. Va entre comillas (").
Asi:
$campo = "marca1";
O asi...
$campo = 'marca1';
Para hacer variable el orden supongo que deberias ponerlo en el formulario a modo de boton, etc para que el usuario pueda seleccionar un campo entre varios de la tabla, y que al enviar el dato x $_POST ya lo tendrias eso variable.

Espero que te sirva.

Un saludo.
He intentado avanzar, le he añadido esto:

<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">
<select name="criterio">
<option value="imagen_id">Por Modelo</option>
<option value="precio">Por Precio </option>
</select>
<input type="submit" value="Buscar">
</form>

<?$orden=$_POST['criterio'];

solo funciona a media, cuando carga la pagina el campo esta vacio y muestra el error.

¿como hago para indicarle un orden de busqueda si el $_POST['criterio'] esta "vacio"?
ponte esto al principio del docuemtno:

var_dump($_POST);

con eso sabras el valor de TODAS las variables que se envian x POST, y asi iras sabiendo donde esta o puede estar el fallo para k lo soluciones.

A mi eso me ayuda casi siempre.
el fallo lo tengo localizado, es que la variable al arranacar esta "vacio"

un saludo y gracias
De nada, me alegro de que lo hayas solucionado y localizado; creo que aunque parezca absurdo o tonto, poner esa linea en todo los PHP para localizar los errores viene bastante bien!

Un saludo.