Помогите с массивом и циклом

(Ответов: 10, Просмотров: 914)
Страница 1 из 2 12 Последняя
  1. Гуру Аватар для kvins
    • Регистрация: 24.08.2011
    • Сообщений: 1,110
    • Репутация: 160
    Плохо знаю как с ними работать и может кто подскажет .

    Мне нужно сделать свой плагин последние просмотры с 3 последними товарами.

    То есть зашел
    на первую страницу index.php?val =1
    потом на
    index.php?val =2
    index.php?val =3
    index.php?val =4
    index.php?val =5

    как мне записывать (или перезаписывать) чтобы показать через функцию while эти последние 3 переменные val
    • 0
  2. Новичок
    • Регистрация: 16.03.2011
    • Сообщений: 2
    • Репутация: 10
    kvins, используй сессии. Гугл по функции session_start()
    • 0
  3. Дипломник Аватар для Ispanec
    • Регистрация: 27.04.2010
    • Сообщений: 142
    • Репутация: 33
    Написали бы на каком языке вам надо.

    Узнаете размер массива и выводите 3 записи.
    К примеру
    posledni = номер последнего элемента в массив( вычислить через размер массива);
    a=3;
    if (posledni >3)
    {
    while (a!=0)
    {
    выводим massiv[posledni - a +1];
    a--;
    }
    }
    else {выводим весь массив}

    Думаю доступно написал
    Последний раз редактировалось Ispanec; 31.07.2012 в 22:15.
    • 1

    Спасибо сказали:

    kvins(31.07.2012),
  4. Гуру Аватар для kvins
    • Регистрация: 24.08.2011
    • Сообщений: 1,110
    • Репутация: 160
    Ispanec, Нужно сделать на php , смысл я вижу в коде , тока сложновато по кускам разобрать , название масива я так понял posledni , но не вижу проверку на существования его и создание если его нету , (переменная a я понял выступает в роли лимита , а может я и не так понял))

    ---------- Сообщение добавлено 17:32 ---------- Предыдущее 17:31 ----------

    Цитата Сообщение от Keanor Посмотреть сообщение
    используй сессии. Гугл по функции session_start()
    Только для хранения масива , а так смысла не вижу все в него записывать , это стока инфы , вообще совет не понятен

    ---------- Сообщение добавлено 17:41 ---------- Предыдущее 17:32 ----------

    Цитата Сообщение от Ispanec Посмотреть сообщение
    Думаю доступно написал
    Думаю понял бы сразу если бы чаще работал с ними а так не очень(
    Последний раз редактировалось kvins; 31.07.2012 в 22:35.
    • 0
  5. Опытный Аватар для earnkz
    • Регистрация: 14.04.2011
    • Сообщений: 265
    • Репутация: 74
    • Webmoney BL: ?
    Цитата Сообщение от kvins Посмотреть сообщение
    Только для хранения масива
    А вам собственно это и надо, сессия создается для каждого посетителя и хранит только его просмотры (массив 3-х последних id товара, к примеру), после закрытия браузера сессия удаляется, очень удобно.
    Удобный мониторинг позиций | Лучший VPS хостинг, с беспл. админ. | Биржа контента без комиссии
    • 0
  6. Гуру Аватар для kvins
    • Регистрация: 24.08.2011
    • Сообщений: 1,110
    • Репутация: 160
    earnkz, Да это я знаю , но разве большое хранение в сесии данных не нагружает пользователя или сервер , даже если выводится всего 3 товара ??

    а вдруг он на 200 страницах побывает =) тем более выводится эта инфа будет на каждой странице
    • 0
  7. Дипломник Аватар для Ispanec
    • Регистрация: 27.04.2010
    • Сообщений: 142
    • Репутация: 33
    Распишу немного поподробнее на php

    <?php
    $razmer_massiva = count($mas); //определяем размер массива $mas
    $c_news = 3; //количество новостей, которое необходимо вывести
    if ($razmer_massiva > $c_news)
    {
    while ($c_news != 0)
    {
    echo $mas[$razmer_massiva - $c_news]; //в квадратных скобках указан индекс массива, который будет выводится
    $c_news--;
    }
    }

    else
    {
    //выводим весь массив
    foreach ($mas as $m) // перебираем весь массив и выводим на экран
    {
    echo $m;
    }
    }

    ?>
    • 1

    Спасибо сказали:

    kvins(01.08.2012),
  8. Гуру Аватар для kvins
    • Регистрация: 24.08.2011
    • Сообщений: 1,110
    • Репутация: 160
    Ispanec, Спасибо очень помогаешь , но проблема в том если перезагружать 1 и туже страницу он дублируется , как сделать так чтобы дубли не записывать ???
    • 0
  9. Дипломник Аватар для Ispanec
    • Регистрация: 27.04.2010
    • Сообщений: 142
    • Репутация: 33
    kvins, не совсем понял что надо. По этому напишу два возможных решения:

    Если массив больше нигде не используется, то после вывода информации можно удалить массив(при последующем обходе в массив будет записываться новая информация):
    unset($mas);

    Если же массив необходим, то прежде чем добавлять новый элемент, его надо проверить на дубли:

    $konditat_na_dobavlenie = "ссылка"; // проверяем нет ли в массиве данной ссылки
    $bool = false;

    foreach($mas as $m)
    {
    if ($m == $konditat_na_dobavlenie)
    {
    $bool = true;
    break;
    }
    }
    if ($bool != true) // если в массиве нет данной ссылке, то добавляем ее в массив
    {
    $mas[] = $konditat_na_dobavlenie;
    }
    • 0
  10. Опытный Аватар для earnkz
    • Регистрация: 14.04.2011
    • Сообщений: 265
    • Репутация: 74
    • Webmoney BL: ?
    Цитата Сообщение от kvins Посмотреть сообщение
    но разве большое хранение в сесии данных не нагружает пользователя или сервер , даже если выводится всего 3 товара ??
    а вдруг он на 200 страницах побывает =)
    Пользователя не нагружает совсем, работает сервер.
    Не надо сохранять все посещения, сохраняйте 3 последние, функции php которые будут вам полезны:

    array_search() - ищем значение, если такого в массиве нет, добавляем.
    count() - считаем количество элементов в массиве. Если меньше или равно 3 переходим к следующему этапу, если больше 3 удаляем первый элемент array_shift()

    Далее уже делаем вывод данных.
    Удобный мониторинг позиций | Лучший VPS хостинг, с беспл. админ. | Биржа контента без комиссии
    • 1

    Спасибо сказали:

    Ispanec(01.08.2012),
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Помогите
Оффтоп и свободные темы 8 18.07.2012 13:56
Помогите
Оффтоп и свободные темы 5 03.07.2012 14:08
Помогите
Партнерские программы 7 06.02.2011 20:33
Помогите с DLE...
Web программирование 0 23.01.2011 20:30

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры