$res["colors"]="white,green,black,yellow,orange";
$color = explode(",",$res["colors"]);
foreach ($color as $i) {
$sql_rgb = "SELECT `rgb` FROM `identcolor` WHERE `name`='".$i."'";
$query_rgb = mysql_query($sql_rgb);
$res_rgb = mysql_fetch_array($query_rgb);
echo "<li><span style='background-color:".$res_rgb["rgb"]."; display: none'>".$i."</span></li>";
}
скрипт находит rgb-код цвета в таблице и выводит на экран.
Ошибка в том, что на экран выводятся все теги li, но только 1 цвет из массива, самый 1-ый устанавливается первому span , остальные как бы ни в теме, что тут не так? В итоге должны вывестись все теги li span с соотв. цветами в формате rgb.
Спустя 2 минуты, 41 секунда (18.11.2011 - 23:49) lans8097 написал(а):
Ну кабы спан и не будит показываться display: none'
Спустя 2 минуты, 42 секунды (18.11.2011 - 23:52) Stasonix написал(а):
Цитата (lans8097 @ 18.11.2011 - 20:49) |
Ну кабы спан и не будит показываться display: none' |
у меня hover забит под это дело, т.е. display: none там и должен быть, когда на иконку навожу мышкой, то все теги ли должны появиться, вот когда навожу, то появляется только 1-ый li span, с фоном, остальное все без фона идет. Возможно в цикле что-то не так?
доп. цикл выводит названия цвета, но вот фон не задает, т.е. получается:
<li><span style='background-color: rgb(...)'>white</span></li>
<li><span>green</span></li>
<li><span>black</span></li>
<li><span>yellow</span></li>
<li><span>orange</span></li>
Спустя 12 минут, 47 секунд (19.11.2011 - 00:05) dadli написал(а):
Stasonix
так работает?
так работает?
$res["colors"]="white,green,black,yellow,orange";
$mas = "'".preg_replace("#,#","','",$res["colors"])."'";
$sql_rgb = "SELECT `rgb` FROM `identcolor` WHERE `name` IN(".$mas.") ";
$query_rgb = mysql_query($sql_rgb);
$res_rgb = mysql_fetch_array($query_rgb);
echo "<li><span style='background-color:".$res_rgb["rgb"]."; display: none'>".$i."</span></li>";
Спустя 6 минут, 40 секунд (19.11.2011 - 00:11) Stasonix написал(а):
неа, цикл нужен, я добавил цикл:
результат тот же, точнее нет, не тот же, немножко хуже, теперь теги ли вообще не выводит, кроме 1-го li. Тут я сам немножко не так сделал, но суть вы поняли, каждый цвет должен делать запрос к базе.
$res["colors"]="white,green,black,yellow,orange";
$mas = "'".preg_replace("#,#","','",$res["colors"])."'";
$sql_rgb = "SELECT `rgb`,`name` FROM `identcolor` WHERE `name` IN($mas) ";
$query_rgb = mysql_query($sql_rgb);
while ($res_rgb = mysql_fetch_array($query_rgb)){
echo "<li><span style='background-color:".$res_rgb["rgb"]."; display: none'>".$res_rgb["name"]."</span></li>";
}
результат тот же, точнее нет, не тот же, немножко хуже, теперь теги ли вообще не выводит, кроме 1-го li. Тут я сам немножко не так сделал, но суть вы поняли, каждый цвет должен делать запрос к базе.
Спустя 5 минут, 25 секунд (19.11.2011 - 00:17) killer8080 написал(а):
Stasonix
с display: none спанов по определению не может быть видно, и ховеры ту не помогут
с display: none спанов по определению не может быть видно, и ховеры ту не помогут

Спустя 4 минуты, 24 секунды (19.11.2011 - 00:21) Stasonix написал(а):
Цитата (killer8080 @ 18.11.2011 - 21:17) |
Stasonix с display: none спанов по определению не может быть видно, и ховеры ту не помогут ![]() |
при hover display: none устанавливается в display: block, не смотрите на то что там display: none, в том же firebug'e нет такого понятия.
Спустя 6 минут, 2 секунды (19.11.2011 - 00:27) Stasonix написал(а):
вот на всякий случай табличка - identcolor.sql.html может кто-то осилит.
Спустя 2 минуты, 45 секунд (19.11.2011 - 00:30) killer8080 написал(а):
Stasonix
display: none означает что объект исключен из рендеринга страницы, а раз его нет, то и никакого ховера быть не может.
К тому же спан это не блочный, а строковый элемент. Если нужен блок, тогда и используй блочные элементы, например див.
display: none означает что объект исключен из рендеринга страницы, а раз его нет, то и никакого ховера быть не может.
К тому же спан это не блочный, а строковый элемент. Если нужен блок, тогда и используй блочные элементы, например див.
Спустя 2 минуты, 29 секунд (19.11.2011 - 00:32) Stasonix написал(а):
Цитата (killer8080 @ 18.11.2011 - 21:30) |
Stasonix display: none означает что объект исключен из рендеринга страницы, а раз его нет, то и никакого ховера быть не может. К тому же спан это не блочный, а строковый элемент. Если нужен блок, тогда и используй блочные элементы, например див. |
я не говорил что hover стоит именно на задисплейноуненый спан, hover стоит на ul и открывает спаны.
Спустя 1 минута, 20 секунд (19.11.2011 - 00:34) killer8080 написал(а):
Ещё вопрос, а зачем тебе преобразовывать цвета в ргб коды? У тебя же в твоей таблице все цвета стандартные.
Спустя 1 минута, 9 секунд (19.11.2011 - 00:35) Stasonix написал(а):
Цитата (killer8080 @ 18.11.2011 - 21:34) |
Ещё вопрос, а зачем тебе преобразовывать цвета в ргб коды? У тебя же в твоей таблице все цвета стандартные. |
Спроси это у Internet Explorer и всяких fix-plugin'ов к нему "любимому".
Спустя 2 минуты, 42 секунды (19.11.2011 - 00:38) killer8080 написал(а):
Цитата (Stasonix @ 19.11.2011 - 00:35) |
Спроси это у Internet Explorer и всяких fix-plugin'ов к нему "любимому". |
Да ну, осел конечно тупой, но не настолько, стандартные цвета он знает. С каким цветом у тебя проблемы в IE?
Спустя 6 минут, 21 секунда (19.11.2011 - 00:44) dadli написал(а):
Stasonix
получаем имя цвета и в бекграунде тот же цвет, но я здес display: none не написал чтоб било видна, ето хотел?
$res["colors"]="white,green,black,yellow,orange";
$mas = "'".preg_replace("#,#","','",$res["colors"])."'";
$res = mysql_query("SELECT `rgb`,`name` FROM `identcolor` WHERE `name` IN (".$mas.") ");
while($row = mysql_fetch_row($res)) {
echo "<li><span style='background-color:#".$row[0]."'>".$row[1]."</span></li>";
}
получаем имя цвета и в бекграунде тот же цвет, но я здес display: none не написал чтоб било видна, ето хотел?
Спустя 2 минуты, 31 секунда (19.11.2011 - 00:46) Stasonix написал(а):
со всеми, я исп. плагин для стилизации меню css3pie, во всех браузерах все норм, в IE8 цвет пропадает, я поалертил, вышло так что с нормальными объявлениями цвета он работать не хочет, алерт выдает transparent, когда же ввожу rgb код, то все в норме, увы, показать не могу, все на локалке.
Спустя 11 минут, 9 секунд (19.11.2011 - 00:58) killer8080 написал(а):
Stasonix
не знаю что ты там делал, но ie8 прекрасно поддерживает задание цвета по названию, так же как и все остальные браузеры. Не видя кода трудно что либо советовать, но уверен что проблема в самом скрипте, а не в кривой поддержке ослом css.
К тому же учитывая что там всего 14 цветов, не проще их сразу в массив запихнуть, и не грузить бд ненужными запросами?
не знаю что ты там делал, но ie8 прекрасно поддерживает задание цвета по названию, так же как и все остальные браузеры. Не видя кода трудно что либо советовать, но уверен что проблема в самом скрипте, а не в кривой поддержке ослом css.
К тому же учитывая что там всего 14 цветов, не проще их сразу в массив запихнуть, и не грузить бд ненужными запросами?
Спустя 3 минуты, 59 секунд (19.11.2011 - 01:02) Stasonix написал(а):
имелось в виду вот так наверное:
без диеза, выводит 1 цвет только, а может все дело в том что у меня запрос в запросе?см.
поэтому может все по 1-му выводится? Я думал так сработает.
$mas = "'".preg_replace("#,#","','",$res["colors"])."'";
$res = mysql_query("SELECT `rgb`,`name` FROM `identcolor` WHERE `name` IN (".$mas.") ");
while($row = mysql_fetch_row($res)) {
echo "<li><span style='background-color:".$row[0]."; display:none'>".$row[1]."</span></li>";
}
без диеза, выводит 1 цвет только, а может все дело в том что у меня запрос в запросе?см.
$sql = "SELECT `colors`...."; $query = mysql_query($sql);
while ($res = mysql_fetch_assoc($query)){
// и тут снова идет запрос к бд с этим цветовыбором (или перекоддингом, как хотите)
$mas = "'".preg_replace("#,#","','",$res["colors"])."'";
$res = mysql_query("SELECT `rgb`,`name` FROM `identcolor` WHERE `name` IN (".$mas.") ");
while($row = mysql_fetch_row($res)) {
echo "<li><span style='background-color:".$row[0]."; display:none'>".$row[1]."</span></li>";
}
}
поэтому может все по 1-му выводится? Я думал так сработает.
Спустя 3 минуты, 24 секунды (19.11.2011 - 01:05) killer8080 написал(а):
Stasonix
так у тебя же одна переменная $res в обоих циклах
конечно так работать не будет.
И все же не разумно тут БД использовать.
так у тебя же одна переменная $res в обоих циклах

конечно так работать не будет.
И все же не разумно тут БД использовать.
Спустя 2 минуты, 31 секунда (19.11.2011 - 01:07) Stasonix написал(а):
Цитата (killer8080 @ 18.11.2011 - 22:05) |
Stasonix так у тебя же одна переменная $res в обоих циклах ![]() конечно так работать не будет. И все же не разумно тут БД использовать. |
я от руки просто написал, поэтому так получилось, то что у меня на самом деле в исходнике вы в 1-м посте читали.
Спустя 8 минут, 49 секунд (19.11.2011 - 01:16) Stasonix написал(а):
попробую извлечь все цвета (абсолютно все) из таблицы вне цикла в какой-нть массив, потом тем же foreach перебрать, но все же...
Спустя 3 минуты, 21 секунда (19.11.2011 - 01:20) killer8080 написал(а):
Stasonix
убери display: none и все будет отображаться
Кстати, покажи как ты задаешь стиль с ховер.
убери display: none и все будет отображаться
Кстати, покажи как ты задаешь стиль с ховер.
Спустя 5 минут, 18 секунд (19.11.2011 - 01:25) Stasonix написал(а):
ховер тут не при чем вообще и display: none тут тоже не при чем, обычный
не в javascript'e дело, еще раз говорю, 100% дело в цикле, точнее в запросе, в котором еще один запрос.
$('ul').hover(function(){
$(this).find('span').show();
});
не в javascript'e дело, еще раз говорю, 100% дело в цикле, точнее в запросе, в котором еще один запрос.