No le veo problema con el while... pero no entiendo bien cuál es la situación.
Primero decir que si se te repiten "varios" datos dentro de tu while es porque no tienes ninguna ondición que limite dichos resultados. Ve lo que tienes:
Código PHP:
$sql_foto = "SELECT foto FROM fotos ORDER BY id=$id ";
ves?? te falta un WHERE.. de hecho el "ORDER BY id=$id" esta mal... quizá si con el WHERE sigues teniendo varios resultados (si existen más de un campo con la misma id) necesites de un LIMIT ó quizá de un DISTINC()... el primero limita el número de resultados, el segundo elimina resultados repetidos...
Ahora bien... ¿dices que lo que tienes ahora no te funciona???... Ve el código fuente ¿qué te aparece??... Veo problemas con comillas y puntos... Tienes esto:
Código PHP:
while($row=mysql_fetch_array($fotos)){
$foto_chi=".$row[foto].";
}
echo "<td align=\"center\" valign=\"top\"><img src='fotos/$foto_chi' width=\"100\" border=\"0\" alt=\"$nombre \"><br>$nombre<br></td>";
Sugiero esto:
Código PHP:
while($row=mysql_fetch_array($fotos)){
$foto_chi= $row['foto'];
}
echo "<td align=\"center\" valign=\"top\"><img src=\"fotos/$foto_chi\" width=\"100\" border=\"0\" alt=\"$nombre \"><br>$nombre<br></td>";
Por último mencionar que si solo vaz a obtener un resultado... ¿para qué hacer el while??, no es necesario:
Código PHP:
$resultado= mysql_query("SELECT campos FROM tabla WHERE campo='condición'", $conexion);
$row= mysql_fetch_array($fotos);
echo "<td>".$row['campo']."</td><td>".$row['otro_campo']."</td>";
Suerte!