Si pones el código del formulario que estás usando .. sería lo ideal .. pues ahí hace referencia por ejemplo a :
if (!isset($buscar)){
Luego por ahí hace:
if ($row = mysql_fetch_array($result)){
Para luego hacer otro
while ($row = mysql_fetch_array($result));
ya con el primero .. el puntero de la consulta se habrá movido a la siguiente posición .. y si sólo hay un resultado de tu consulta ($result) .. no va a tener nada el "While()" bucle para recorrer ..
Te recomiendo que analices tu código .. ¿como? .. Haciendo "echo" a tus variables que tengas .. y mirando en el manual de PHP oficial que hace cada función ..
Las funciones mysql_fetch_xxx() extraen un registro de tu consulta realizada hacia un array, objeto, row .. etc .. dependiendo cual uses y "Mueven" el puntero a la siguiete posición .. Con esa teoría en la "mano" puedes ver lo que te comento .. Eso y otras cosas cómo: if ($row = mysql_fetch_array() ...) así se está asignando a $row lo que pueda resultar de hacer mysql_fetch_array pero si te fijas en la documentación de esa función en PHP.net .. veras que si no puede extraer ningún resultado (registro) de tu consulta .. da FALSE .. por lo tanto se usa como "boolean" (verdadero/falso) para el condicional . .pero, con la particularidad que "mueve" el puntero de la consulta una posición hacia adelante .. pues se está ejecutando mysql_fetch_xxx() ..
Ese "if ($row= mysql_fetch_array(...)) .. " Debería ser un mysql_num_rows() para ver si hay o no registros en la consulta realizada:
Código PHP:
if (mysql_num_rows($result) > 0){
Y .. lo demas .. lo dicho .. mira si tienen valor y que valor las variables que uses . sigue la lógica de los condicionales y bucles usados .. etc .. etc .. Analiza tu script .. piesa como lo haría PHP .. y por ahí detectaras el problema.
Un saludo,