Модераторы: Illuminaty

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "красивый" вывод SELECT-а 
V
    Опции темы
Splendid
Дата 13.11.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 1.8.2007
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Есть обычный код вывода селекта:


Код

echo "<SELECT class='input_size1' NAME='$column_name[$i]'>
<OPTION value=0 selected>Все</OPTION>";

                $result = mysql_query("SELECT SQL_CACHE $column_name[$i] FROM standards GROUP BY $column_name[$i]");

                while(false !== ($info = mysql_fetch_assoc($result)))
                {if ($info[$column_name[$i]]!='')
                {
                    echo "<option value='".$info[$column_name[$i]]."'>".$info[$column_name[$i]]."</option>";
                }
                }
                echo "</SELECT>";

 



Как поступают, когда название, которое присутствует в итоговом списке очень длинное и из-за этого растягивается окно? Можно ли сделать так, чтобы оно выводилось в две стоки? Подскажите, пожалуйста? 
PM MAIL   Вверх
SamDark
Дата 13.11.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 6
Всего: 38



Splendid, 
Код

<SELECT class='input_size1' NAME='...' style="width: 200px">


p.s. тему переместил в вёрстку.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Splendid
Дата 13.11.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 1.8.2007
Где: Беларусь, Минск

Репутация: нет
Всего: нет



SamDark, спасибо, что переместили.

Предложенный Вами код - это не совсем то, он обрезает селект и из-за этого не видна вся запись.
Я бы хотела узнать, можно ли сделать так, чтобы вся запись была видна, но если она превышает какие-то установленные размеры, то соответственно размещалась бы, например, в 2 строки??

PM MAIL   Вверх
skyboy
Дата 13.11.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 6
Всего: 260



Цитата(Splendid @  13.11.2007,  14:55 Найти цитируемый пост)
 если она превышает какие-то установленные размеры, то соответственно размещалась бы, например, в 2 строки?

насколько известно мне, средствами стандартного select'a такое нереализуемо. по крайней мере - версткой. может, через javascript можно что-то придумать... например, перебирая option'ы в select'e находить самые длинные, их удалять и вставлять две вместо одной. правда, при этом это будут действительно разные option'ы.
PM MAIL   Вверх
Splendid
Дата 13.11.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 1.8.2007
Где: Беларусь, Минск

Репутация: нет
Всего: нет



skyboy, да быть того не можетsmile
Неужели никто никогда не задавался этим вопросом и проблема до сих пор не решена? Не верю!
PM MAIL   Вверх
KonstRuctor
Дата 13.11.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 31.3.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: нет



Что-то мне подсказывает, что если и можно будет добиться вывода строки селекта в две строки, то всеми тремя популярными браузерами (ИЕ, ФФ, Опера) это не будет поддерживаться наверняка.
Решение.
На этапе построения селекта средствами ПХП смотреть лину строки, и если она слишком длинная -- резать ее и в конце подставлять три точки ... типа там еще буквы есть.
Я так часто делаю в выводе новостей -- дата новости - заголовок новости -- короткий текст, при этом урезанный до 50 символов и три точки ... Короткий текст может быть и длиннее 50 знаков, но выведется только 50.
Удачи!
PM MAIL WWW ICQ   Вверх
Splendid
Дата 13.11.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 1.8.2007
Где: Беларусь, Минск

Репутация: нет
Всего: нет



KonstRuctor, это не выход...хотя...
а можно пример кода попросить?
PM MAIL   Вверх
WebDisaster
Дата 13.11.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 22.6.2007

Репутация: 17
Всего: 19



Пример:


  if (substr($var, 0, _LENGTH) == $var) {
      echo $var;
  } else {
      echo substr($var, 0, _LENGTH)."...";
 }

В данном примере в $var хранится "обрезаемая" строка, а константой _LENGTH задана длина "отрезания" строки (которая различна в шаблонах с разной шириной морды и определяется внутри каждого шаблона).

Это сообщение отредактировал(а) WebDisaster - 13.11.2007, 17:36
PM MAIL   Вверх
SamDark
Дата 13.11.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 6
Всего: 38



Splendid, 
Селект в две строки не достигается стандартными браузерно-разметочными средствами. Тут либо шаманить с JS, либо отказаться от этой идеи.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Fortop
Дата 14.11.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Воспользуйся OPTGROUP
Это даст возможность выводить целых 2ве строки информации

Код

<select>
  <optgroup label="for 1">
  <option>continue 1</option>
  </optgroup>
  <optgroup label="for 2">
  <option>continue 2</option>
  </optgroup>
  <optgroup label="for 3">
  <option>continue 3</option>
  </optgroup>
</select>



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Splendid
Дата 14.11.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 1.8.2007
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Fortop, честно говоря, я не совсем поняла, как им можно воспользоваться?
можно на моем примере показать?

Добавлено через 1 минуту и 51 секунду
А почему этот код работает не правильно?
Код

echo "<SELECT class='input_size1' NAME='$column_name[$i]' style='width: 400px'>
<OPTION value=0 selected>Все</OPTION>";

                $result = mysql_query("SELECT SQL_CACHE $column_name[$i] FROM standards GROUP BY $column_name[$i]");

                while(false !== ($info = mysql_fetch_assoc($result)))
                {if ($info[$column_name[$i]]!='')
                {
 if( strlen( $info[$column_name[$i]] ) > $max_length )
 {
   echo "<option  value='".$info[$column_name[$i]]."'>".substr($info[$column_name[$i]], 0, $max_length)."...</option>";
 
}
                    echo "<option value='".$info[$column_name[$i]]."'>".$info[$column_name[$i]]."</option>";
                }
                }
                echo "</select></P></b></p></TD></TR>";



где-то выводит с ..., а где-то полное название, большее по длине максимальной длины??? 
PM MAIL   Вверх
SamDark
Дата 14.11.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 6
Всего: 38



Fortop, 
Это даст возможность выводить две строчки только при открытом селекте. При закрытом будет по прежнему одна. Да и со стилями придётся поиграться, чтобы оно выглядело как двустрочный селект. А уж работать как двустрочный селект оно точно не будет.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Fortop
Дата 14.11.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Splendid, 
Вот например.
Код

<?php
echo "<select class='input_size1' name='$column_name[$i]' style='width: 400px'>
<option value=0 selected>Все</option>";
                $result = mysql_query("SELECT SQL_CACHE $column_name[$i] FROM standards GROUP BY $column_name[$i]");
                while(false !== ($info = mysql_fetch_assoc($result))) {
                    if ($info[$column_name[$i]]!='') {
                        // если строка длиннее максимума
                        if( strlen( $info[$column_name[$i]] ) > $max_length ) {
                            // первую часть выводим как OPTGROUP
                            echo '<optgroup label="' . substr($info[$column_name[$i]], 0, $max_length) . '">';
                            // на всякий случай проверяем не длиннее ли она 2х максимумов
                            // потому что больше двух строк мы не получим стандартными средствами HTML 
                            if (strlen( $info[$column_name[$i]]) > 2 * $max_length ) {
                                // если длиннее 2х максимумов, то вторую часть обрезаем как и первую, 
                                // после чего вставляем многоточие
                                echo '<option  value="' . $info[$column_name[$i]] . '">' . 
                                substr($info[$column_name[$i]], $max_length, $max_length) . '...</option>';
                            } else {
                                echo '<option  value="' . $info[$column_name[$i]] . '">' . 
                                substr($info[$column_name[$i]], $max_length) . '</option>';
                            }
                            echo '</optgroup>';
                        } else {
                            // если строка меньше максимума, то выводим как обычно
                            echo '<option value="' . $info[$column_name[$i]] . '">' . $info[$column_name[$i]] . '</option>';
                        }
                    }
                }
                echo "</select></p></b></p></td></tr>";
?>


Добавлено через 6 минут и 35 секунд
SamDark, 
Естественно, что потребуется работа со стилями.
При закрытом, естественно, покажется только 1на строка. 
Причем, важный момент - 2я строка!

Но вопрос стоял как вывести в две строки информацию, чтобы она обрабатывалась как одна.
Для чистого HTML - это единственный вариант.

Все остальные требуют JS и иже с ним.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
SamDark
Дата 14.11.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 6
Всего: 38



Fortop, 
Неудобный для пользователя вариант получается. Гораздо хуже, чем обрезание текста или растягивание селекта.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Splendid
Дата 15.11.2007, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 1.8.2007
Где: Беларусь, Минск

Репутация: нет
Всего: нет



с выводом селекта разобралась, решила резать ее и в конце подставлять три точки ...
Спасибо всем за советы и участие.
Помогите еще, пожалуйста, разобраться:
подскажите, пожалуйста, почему, когда я передаю:

<input type='hidden' name=search value=$search>

и в переменной $search больше одного слова, то приходит только первое? Это какая-то особенность type='hidden'??? потому что перед выводом инпута вывожу переменную, в ней действительно 2 слова...

Добавлено через 14 минут и 8 секунд
Все, дело в кавычках, всем спасибо!!!!!smile
Тему можно закрыть.
PM MAIL   Вверх
Marilyn Omen
Дата 15.11.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.12.2003
Где: Украина, Львов

Репутация: нет
Всего: нет



Можешь еще поглядеть на такой клевый контрол как SmartSelect, думаю, его можно отстайлить так чтобы можно было выводить несколько строк.
PM MAIL ICQ Skype GTalk YIM   Вверх
Splendid
Дата 20.11.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 1.8.2007
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Marilyn Omen, спасибо, гляну!
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0555 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.