Есть такая вот формочка, в ней мультиселект. Очень хочется цены выстроить в стройный столбик справа. Как это сделать? У меня пока только одна идея - считать количество символов наименования и за тем добавлять 40-%кол-во% неразрывных пробелов. Но как это реализовать технически, опять же, не знаю... Вот отрывок кода сейчас: Код (Text): <select name="cable_order[]" multiple> <?php $cables_list = $wpdb->get_results("SELECT `ID`, `post_title`, `post_status`, `post_type` FROM `wp_posts` WHERE `post_type`='post' AND `post_status`='publish' ORDER BY post_title "); foreach ( $cables_list as $cable_item ) { $cables_price = $wpdb->get_row("SELECT `post_id`, `meta_key`, `meta_value` FROM `wp_postmeta` WHERE `post_id`='$cable_item->ID' AND `meta_key`='price' "); echo "<option value=\"".$cable_item->post_title."\">".$cable_item->post_title." (от ".$cables_price->meta_value." рублей за метр)</option>"; } ?> </select>
%40s %40s - выведет через пробел 2 последовательности по 40 символов шириной, а потом меняйте пробелы на неразрывные
printf("<option value=\"[%40s]\"> %s (от %s рублей за метр)</option>",$cable_item->post_title,$cable_item->post_title,$cables_price->meta_value); сделал так. Вообще пробелы не добавляет. Или надо что-то еще сделать? Добавлено спустя 20 минут 26 секунд: Ура, сообразил! Правда не знаю, насколько правильно реализовал Код (Text): $cable_item_title = sprintf("%-70s",$cable_item->post_title); $cable_item_title = str_replace(' ', ' ', $cable_item_title); printf("<option value=\"%s\"> %s (от %s рублей за метр)</option>",$cable_item->post_title,$cable_item_title,$cables_price->meta_value); Добавлено спустя 1 минуту 35 секунд: Выходит не так ровно как хотелось бы... может есть вариант как сделать лучше?
<option value="$cable_item->post_title">str_replace(' ', ' ' sprintf('%40s %40s', $cable_item->post_title,$cables_price->meta_value))</option> примерно так. дальше разберетесь?
вроде уже и так получается то же самое по результату, но хотелось бы еще сделать цены строго в столбик
без костыля не обойтись видимо. вот первое что в голову пришло. под вашу задачу нужно чуть переписать но идею сохранить $len = 40+mb_strlen(preg_replace("/[^а-я]*/i", '$1$1', $title)); str_replace(' ', ' ', sprintf("%-{$len}s | %6s", $title, rand(100000,999999))); выводит чётко прилепленное влево название и через промежуток - столбец из 6-значных чисел. в стиле своего селекта не прописывал жестко шрифт. просто сказал моноспэйс