За последние 24 часа нас посетили 32749 программистов и 1820 роботов. Сейчас ищут 945 программистов ...

Цикл while

Тема в разделе "PHP для новичков", создана пользователем produser, 19 фев 2012.

  1. produser

    produser Активный пользователь

    С нами с:
    21 янв 2012
    Сообщения:
    61
    Симпатии:
    0
    Здравствуйте. Пишу небольшой счетчик посещений. Считает счетчик нормально, вот решил сделать в админке возможность просмотра результатов его работы...Делаю так:
    Код (PHP):
    1.     echo('<div><table border=1><tr><td style="background:#CCC;">IP адрес</td><td style="background:#CCC;">Браузер</td><td style="background:#CCC;">Реферал</td><td style="background:#CCC;">Количество посещений</td><td style="background:#CCC;">Дата</td></tr>');
    2.     $result=mysql_query('SELECT * FROM `options`') or die(mysql_error());
    3.     while($row=mysql_fetch_array($result)) {
    4.                                             echo('<tr><td>'.$row['ip'].'</td><td>'.$row['brouser'].'</td><td>'.$row['ref'].'</td><td>Количество посещений</td><td>'.$row['date'].'</td></tr></div>');
    5.                                            }
    6.  
    Код работает, но вот не могу вывести количество просмотров с одного айпишника... Нужно посчитать количество одинаковых айпи адресов в базе и вывести ето значение в соотвествующее поле в таблице. И еще надо сделать так ,что бы одинаковые айпи не повторялись, а было типа айпи такой то посещений столько то...
    Зараннее спасибо за ответы.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    div надо закрывать после того как закрыл таблицу.

    чтобы ip посчитать надо массив вначале собрать так:
    while($row=mysql_fetch_array($result)) {
    $array[$row['ip']][]=$row;
    }
    но это все равно не правильно.

    не очень понятно что у тебя в этой таблице хранится.
     
  3. produser

    produser Активный пользователь

    С нами с:
    21 янв 2012
    Сообщения:
    61
    Симпатии:
    0
    В таблице находятся данные которые заносит туда скрипт, а именно: ip,brouser,ref и пару других полей... Мне нужно что бы в таблицу выводилось что то типа:

    ip | brouser | количество посещенных страниц

    количество страниц = количеству одинаковых записей в бд для поля ip.

    у меня сейчас выводитятся все записи из бд, т.е. айпи повторяются в таблице... Логика такова:
    Находим первый айпи в бд
    проверяем был ли он уже выведенн в таблице(или присутсвовал в цикле)
    если да то прибавляем 1 к щетчику посещений(какая то переменная) для етого айпи
    идем дальше по бд
    если закончили то выводим результат...

    Алгоритм мне понятен, а вот как реализовать это в коде нет(

    З.Ы, если есть более удобный способ реализации этого то буду рад услышать.
    З.Ы.Ы. в таблице так же хранится дата захода пользователем на сайт, в идеале нужно проверять какая дата хранистя в поле date для текщей записи. и если не за текущую то отбрасывать, не писать в таблицу.
     
  4. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    produser, Вам уже посоветовали многомерный массив как вариант подсчета. Но только в данной задаче данные у вас будут неактуальные, ибо если вы суммируете вхождения ип-адреса, то как вы отобразите "браузер","дату" и т.п., если с одного и того же ипишника заходили с двух разных браузеров, в разное время, и с разными тэпэшками?
    На мой взгляд, такие задачи обречены на провал.