del código original prueba utilizando esto
Código PHP:
$sql2 = mysql_query("SELECT * FROM soldados WHERE rango=".$campo['id']." LIMIT 10");
o bien, puedes checar esto
Código PHP:
<?php
//con esto ya puedes reutilizar la funcion
function Conectarse($host,$user,$pass,$base)
{
$link=mysql_connect($host,$user,$pass) or die("Error conectando a la base de datos.");
mysql_select_db($base,$link) or die("Error seleccionando la base de datos.");
return $link;
}
$link=Conectarse("localhost","webpage","jona159than357","web");
//puedes o no utilizar el apostrofe(`) mysql lo reconoce
//si embargo yo nunca los uso y no he tenido problemas
//no se como esta tu tabla y no se que version de mysql usas asi que
//usare un poco de imaginacion, jeje
//suponiendo que el tipo de rango lo guardas en un campo llamado tipoRango
//con esto traeremos todos los rangos que existen sin repetir
//se quito el * para evitar datos innecesarios
$sql = mysql_query("SELECT nombre, imagen FROM rangos GROUP BY tipoRango");
//mientras se recorre el arreglo traido de la consulta
//buscamos a los soldados que le pertenecen a cada division.
while ($campo = mysql_fetch_array($sql))
{
//se quito el LIMIT 10 para evitar que solo muestre diez registros
//esto con la finalidad de que en el caso de que hayan mas
$sql2 = mysql_query("SELECT nombre FROM soldados WHERE tipoRango=".$campo['tipoRango']);
?>
<table>
<tr>
<td class="td_rango">
<?=$campo["nombre"];?><br />
</td>
<td class="td_rango">
<img src="http://www.clancl.org/<?=$campo["imagen"];?>" alt="Rango <?=$campo["nombre"];?>"><br />
</td>
<td class="td_soldado"><?
//con esto mostramos todos los nombre
//que se encuentren en la segunda consulta
while($campo2 = mysql_fetch_array($sql2))
{
echo $campo2["nombre"];
}?><br /></td>
<td class="td_responsabilidad"></td>
</tr>
</table>
<?php
}
mysql_close($link); //cierra la conexion
?>
espero que por lo menos te de una idea, saludos.