Модераторы: 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   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




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


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

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