¿Por qué esta consulta solo muestra un resultado?

La siguiente consulta se utilizará un script de búsqueda. Por alguna razón, no devolverá todos los resultados donde cualquiera de las condiciones sea verdadera. ¿Qué estoy haciendo mal?

$sql = "SELECT name, id_code from codes WHERE name LIKE '%$q%' OR id_code 
LIKE '%$q%'";

$result = mysql_query($sql);

$query = mysql_query($sql) or die ("Error: ".mysql_error());

$num_rows1 = mysql_num_rows($result);

if ($result == "")
{
echo "";
}
echo "";


$rows = mysql_num_rows($result);

if($rows == 0)
{
print("<div id=norequests>No results for <strong>$q</strong></div>");

}
elseif($rows > 0)
{
while($row = mysql_fetch_array($query))
{

$name = htmlspecialchars($row['name']);
$code = htmlspecialchars($row['id_code']);

}

print("$code: $name<br /> <br />");
}

}


else{
    echo '<div id="error">No results for $q.</div>';
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta