Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2014, 22:20   #11
vasiatka
Пользователь
 
Аватар для vasiatka
 
Регистрация: 18.02.2014
Сообщений: 90
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
Код:
    $i = 0;
    while ( $row = mysql_fetch_array( $result ) ){
    echo   '<div class="view">
                    <a href='.$row['imag'].' rel="lightbox[roadtrip]">
                    <img src='.$row['imag'].'></a>
                    <span class="caption simple-caption">
            <p>'.$row['title'].'</p></span>
        </div>';  
        if (floor($i/4) == ($i/4)) echo "<br/>";
        $i++;
Условие выделенное жирным, не надо использовать.
Тут правильней $i%4==0. А флоаты сравнивать через == не надо.
Но можно условие заменить и более коротким: $i&3 - это остаток от деления на 4, он автоматически будет приведен к булевому типу.
И никаких делений! Поразрядное и - 1 операция, а деление - явно больше
В бинарной системе счет ведут не по пальцам, а по кулакам.
Пенза - мой город - я из Пензы.
vasiatka вне форума Ответить с цитированием
Старый 18.02.2014, 23:51   #12
vasiatka
Пользователь
 
Аватар для vasiatka
 
Регистрация: 18.02.2014
Сообщений: 90
По умолчанию

Получил огромное удовольствие от прочтения. Хабр рулит.
С ходу все не получилось... Возможно вам нужно сделать такой запрос:

Код:
SELECT q.* FROM 
(
  SELECT 
  IF (@cid=c.id_in, @a:=@a+1, (@cid:=c.id_in)*(@a:=0)) as n,
  c.* FROM galereya as c
  ORDER BY c.id_in ASC
) as q 
WHERE q.n < 4;
Должен выбрать не более четырех картинок из каждого раздела.

Но если картинок ОЧЕНЬ много, а категорий мало, то лучше сделать по запросу на категорию... Может быстрее получиться. В этом запросе выбирается вся таблица (внутренний запрос) и запрос уходит в FILESORT.

Теперь про вывод по 4 в ряд:

Прежде всего убедитесь, что для div c классом view выставлена ширина и высота.
В css должно быть что-то типа
Код:
.view{width:150px; heigth:150px;}
Иначе div может растянуться на всю ширину, и следующий полезет в новую строку.
Добавьте в css класс
Код:
.clearing {clear: both;height:0;font-size:0;overflow:hidden;}
Далее код примерно такой:
PHP код:
$i 0;
while ( 
$row mysql_fetch_array$result ) )
{
  echo   
'<div class="view">
              <a href='
.$row['imag'].' rel="lightbox[roadtrip]">
                 <img src='
.$row['imag'].'>
              </a>
              <span class="caption simple-caption">
              <p>'
.$row['title'].'</p></span>
            </div>'
;  
  if (
$i&3) echo "<div class='clearing'></div>";
        
$i++; 
Можно обойтись и без последнего условия, для этого использовать ваш прежний кусок кода, но .view должен иметь фиксированную ширину и высоту, стиль position:relative, стиль float:left. А контейнер в котором размещаются блоки должен быть равен 4 ширинам вашего view.

Вот подобный пример, только у меня сверстано не div-ом - http://landpnz.ru/ru/photogallery/centr_penzi
В бинарной системе счет ведут не по пальцам, а по кулакам.
Пенза - мой город - я из Пензы.
vasiatka вне форума Ответить с цитированием
Старый 19.02.2014, 06:08   #13
Дениска1705
Пользователь
 
Регистрация: 18.02.2014
Сообщений: 10
По умолчанию

В этом случае что-то пытается разделить на части , но делит не выборочно по элементам , а как бы с определенным интервалом :
3 элемента в первой строке , потом 1 во второй , а далее все повторяется. С размерами давно все решено , НО спасибо , что позаботились об этом . У меня в контейнер по 4 шт влезает смело
При этом сортирует по порядку либо по 'title' , либо по 'id' и т.д. Но все
равно не получается .
Если не найду решения , придется смириться и выводить все по одному элементу
Изображения
Тип файла: jpg Screenshot_3.jpg (28.8 Кб, 143 просмотров)
Дениска1705 вне форума Ответить с цитированием
Старый 19.02.2014, 07:19   #14
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

если все рассчитано и смело влезает - смело
Код:
 if ($i&3) echo "<div class='clearing'></div>";
        $i++;
убирайте
ADSoft вне форума Ответить с цитированием
Старый 19.02.2014, 07:39   #15
vasiatka
Пользователь
 
Аватар для vasiatka
 
Регистрация: 18.02.2014
Сообщений: 90
По умолчанию

Надо уменьшить ширину view или увеличить ширину контейнера. У тебя просто 4 картинки не поместились в ряд.
В бинарной системе счет ведут не по пальцам, а по кулакам.
Пенза - мой город - я из Пензы.
vasiatka вне форума Ответить с цитированием
Старый 19.02.2014, 18:04   #16
Дениска1705
Пользователь
 
Регистрация: 18.02.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от vasiatka Посмотреть сообщение
Надо уменьшить ширину view или увеличить ширину контейнера. У тебя просто 4 картинки не поместились в ряд.
Еще как поместились )... Без функций ложатся свободно по 4 в ряд.
Дениска1705 вне форума Ответить с цитированием
Старый 19.02.2014, 19:26   #17
vasiatka
Пользователь
 
Аватар для vasiatka
 
Регистрация: 18.02.2014
Сообщений: 90
По умолчанию

Есть много фокусов, связанных больше с версткой, нежели с программированием
В бинарной системе счет ведут не по пальцам, а по кулакам.
Пенза - мой город - я из Пензы.
vasiatka вне форума Ответить с цитированием
Старый 22.02.2014, 00:05   #18
Дениска1705
Пользователь
 
Регистрация: 18.02.2014
Сообщений: 10
По умолчанию

Если не лень , помогите пожалуйста с этим примером .
Есть такой запрос
PHP код:
$result_articles mysql_query "SELECT * FROM blogs $t1 ORDER BY id ASC LIMIT $begin$number_articles");
  
$result mysql_query("SELECT  name FROM comments $t2 ");
  
$t1=$t2;
  
$t1='id';
  
$t2='id_article';
  
   while ( 
$row mysql_fetch_array(  $result ) ){
   while ( 
$row_articles mysql_fetch_array(  $result_articles )){ 
Результат таков : выводит все с с таблицы1 'blogs' и плюс только один повторяющийся элемент 'name' с таблицы2 'comments' . Для информации: (LIMIT $begin, $number_articles) - это для пагиннации.

Мне нужно привязать этот элемент 'name' к таблице1 , что бы каждый 'id' таблицы1 соответствовал каждому 'id_article' таблицы2. (это должен быть вывод заголовков с табл1 и вывод кол-ва коментариев с табл2).
Уже голову ломаю , никак не доходит , помогите пожалуйта !
Дениска1705 вне форума Ответить с цитированием
Старый 22.02.2014, 08:11   #19
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Left join не?
ADSoft вне форума Ответить с цитированием
Старый 22.02.2014, 09:31   #20
Дениска1705
Пользователь
 
Регистрация: 18.02.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
Left join не?
Пробовал и Left join и UNION - ну не выходит у меня ,хоть тресни ( .

Вот кое-что сложилось ,но никак не могу получить в элемент 'id_article во вторую таблицу из первой табл элемент 'id'
Вот , что получается :
PHP код:
$result_articles mysql_query "SELECT * FROM blogs  ORDER BY id ASC LIMIT $begin$number_articles");
  
$result mysql_query("SELECT COUNT(id_article) AS 'count' FROM comments WHERE id_article=".$result_articles['id']."  GROUP BY id_article " );
      
   while ( 
$row mysql_fetch_array($resultMYSQL_BOTH));
   while ( 
$row_articles mysql_fetch_array$result_articles )){
   echo   
'<div id="preview">
            <div class="prev1">
            <a href="'
.$row_articles['url'].'?url='.$row_articles['id'].'">
            <div class="prev3"><img src='
.$row_articles['image_name'].' class="prev3"></div>
            <strong class="Title">'
,$row_articles['title'],'</strong></a>
            <!--noindex--><p>'
,$row_articles['tema'],'</p><!--/noindex-->
            <div class="count">комментарии: <span class="nom">'
.$row['count'].'</span></div> 
            </div>
           </div>'
;    
       
   } 
Поправьте меня пожалуйста или подскажите , что не так делаю , или как лучше сделать . Знаю ,что вы сейчас за головы возьметесь ,либо будете долго смеяться , но я пока новенький и пытаюсь чему-то обучиться. А лучшая наука- это практика .

Вот если убрать из этой строчки
PHP код:
 FROM comments WHERE id_article=".$result_articles['id']."  GROUP BY id_article " ); 
Вот эту переменную
PHP код:
=".$result_articles['id']." 
-
То работают оба массива, но второй массив выдает - комментарии:'2' постоянно . Вот как их связать - ума не приложу.

Последний раз редактировалось Дениска1705; 22.02.2014 в 09:36.
Дениска1705 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать текст на кнопке в несколько рядов? Suny-o Общие вопросы Delphi 8 19.10.2013 02:05
Вывод записей на главную в несколько рядов, а между ними картирка timedo WordPress и другие CMS 0 23.02.2013 21:36
Как вывести несколько одинаковых форм одновременно k1r1ch Общие вопросы Delphi 11 22.08.2009 18:07
КАк сделать Палитру компонентов в несколько рядов? Izhic Компоненты Delphi 0 02.07.2009 14:05
Как вывести один столбец в несколько??? M&Ms Microsoft Office Excel 9 21.07.2008 14:19