Проблема в том, что если прописать верхний код: <div class="product-filter"> <div class="display"><b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display('grid');"><?php echo $text_grid; ?></a></div> <div class="product-compare">Сравнение: <a href="<?php echo $compare; ?>" id="compare-total"><?php echo $text_compare; ?></a></div> <div class="limit"><b><?php echo $text_limit; ?></b> <select onchange="location = this.value;"> <?php foreach ($limits as $limits) { ?> <?php if ($limits['value'] == $limit) { ?> <option value="<?php echo $limits['href']; ?>" selected="selected"><?php echo $limits['text']; ?></option> <?php } else { ?> <option value="<?php echo $limits['href']; ?>"><?php echo $limits['text']; ?></option> <?php } ?> <?php } ?> </select> </div> <div class="sort"><b><?php echo $text_sort; ?></b> <select onchange="location = this.value;"> <?php foreach ($sorts as $sorts) { ?> <?php if ($sorts['value'] == $sort . '-' . $order) { ?> <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option> <?php } else { ?> <option value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option> <?php } ?> <?php } ?> </select> </div> </div> то снизу вылезает косяк (см. скрин) 100 на скрине - это я вручную пробовал прописывать. страница категорий - http://verose.ru/dlya_zhenschin/zerkala сейчас код нижней панели убран из-за неработоспособности Как я понимаю, косяк из-за того, что переменные, связанные с лимитами и сортировкой, и выборка для них прописывается еще раз? Можно это как то исправить, чтобы параметры выбирались и сверху страницы, с внизу.
как то уж очень смущает foreach ($limits as $limits) оба исправь по принципу <?php foreach ($limits as $lmt) { ?> <?php if ($lmt['value'] == $limit) { ?> <option value="<?php echo $lmt['href']; ?>" selected="selected"><?php echo $lmt['text']; ?></option> <?php } else { ?> <option value="<?php echo $lmt['href']; ?>"><?php echo $lmt['text']; ?></option> <?php } ?> <?php } ?>
ты понимаешь что по принципу, сделать и с $limits as $limits и с $sorts as $sorts и в верхнем блоке сортировки и в нижнем. у меня всё заработало, хотя в первый раз при простом копировании блока всё было так же как на скриншоте PHP: <div class="product-filter"> <div class="display"><b><?php echo $text_display; ?></b> <?php echo $text_list; ?> <b>/</b> <a onclick="display('grid');"><?php echo $text_grid; ?></a> </div> <div class="product-compare">Сравнение: <a href="<?php echo $compare; ?>" id="compare-total"><?php echo $text_compare; ?></a> </div> <div class="limit"><b><?php echo $text_limit; ?></b> <select onchange="location = this.value;"> <?php foreach ($limits as $lmt) { ?> <?php if ($lmt['value']==$ limit) { ?> <option value="<?php echo $lmt['href']; ?>" selected="selected"> <?php echo $lmt['text']; ?> </option> <?php } else { ?> <option value="<?php echo $lmt['href']; ?>"> <?php echo $lmt['text']; ?> </option> <?php } ?> <?php } ?> </select> </div> <div class="sort"><b><?php echo $text_sort; ?></b> <select onchange="location = this.value;"> <?php foreach ($sorts as $srt) { ?> <?php if ($srt['value']==$sort . '-' . $order) { ?> <option value="<?php echo $srt['href']; ?>" selected="selected"> <?php echo $srt['text']; ?> </option> <?php } else { ?> <option value="<?php echo $srt['href']; ?>"> <?php echo $srt['text']; ?> </option> <?php } ?> <?php } ?> </select> </div></div>
прописал, заработало - ошибкой было то, что прописывал новые переменные только в нижней панели. А можешь объяснить (на будущее мне), почему замена переменных повлияла на результат, ведь все равно одни и теже используются и вверху, и внизу? --- добавлено: Apr 21, 2013 8:03 PM --- косяк только появился: 1. При добавлении товара в сравнение обновляется только в верхнем меню их количество в сравнении 2. Дупликация ID "compare-total" 3. Попытка заменить ID на CLASS или другой ID ведет к тому, что при добавлении товара в сравнении поля не обновляются на обеих панелях.
не силен в теории, в смысле как там в компиляторе происходит, но дело в том что foreach ($x as $x) после прохода по всему массиву $x оставляет после себя $x с закрепленным за ней посдним значением из foreach грубый пример $x = array("foo", "bar", "hallo", "world"); print_r($x); //пропишет весь массив foreach ($x as $x) { echo ""; }; print_r($x); //выдаст последнее присвоенное значение для $x из foreach - world во втором блоке смени id у compare-total например на compare-total2 в common.js найди функцию addToCompare там есть строчка $('#compare-total').html(json['total']); после добавь $('#compare-total2').html(json['total']);