За последние 24 часа нас посетили 18803 программиста и 1641 робот. Сейчас ищут 944 программиста ...

Не получаются многоуровневые счетчики

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

  1. writer

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

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Код (PHP):
    1.     <?php include('../php/connect.php') ?>
    2.     <?php
    3.         $today = date("m");  
    4. $today2 = date("y"); 
    5. $t=','.$today.','.$today2;
    6. $break='</br>';    
    7. $LLstat='';
    8.     for ($a = 1; $a < 5; $a++) {
    9. for ($i = 1; $i < 1500; $i++) {
    10. $GL012 = mysql_query("SELECT * FROM `firm` WHERE localsfere ='$i' AND sityfirm='$a'");//выборка всех полей из БД равным ключу
    11.     $GL01 = mysql_num_rows($GL012);
    12.     for ($i1=0; $i1 <$GL01; $i1++) {
    13. $GL1 = mysql_fetch_assoc($GL012);
    14. }
    15.     $LLstat.= ','.$i1;
    16. ;
    17. }
    18. }
    19. echo $t.$LLstat.$break;
    20. ?>
    Нужно получить такое
    ,0,0,0,0,0,0,0,0,1,0,0,0,0
    ,0,0,0,0,0,0,0,0,1,2,0,0,0
    ,0,0,0,0,64,0,0,0,1,0,0,0,0

    чтобы был брейк.
    Сейчас все в одну строчку
     
  2. Stedex

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

    С нами с:
    30 ноя 2012
    Сообщения:
    8
    Симпатии:
    0
    Код (Text):
    1.  <?php include('../php/connect.php') ?>
    2. <?php
    3. $today = date("m");  
    4. $today2 = date("y");
    5. $t=','.$today.','.$today2;
    6. $break='</br>';    
    7. $LLstat='';
    8. for ($a = 1; $a < 5; $a++) {
    9.      for ($i = 1; $i < 1500; $i++) {
    10.                    $GL012 = mysql_query("SELECT * FROM `firm` WHERE localsfere ='$i' AND sityfirm='$a'");//выборка всех полей из БД равным ключу
    11.                    $GL01 = mysql_num_rows($GL012);
    12.                    for ($i1=0; $i1 <$GL01; $i1++) {
    13.                           $GL1 = mysql_fetch_assoc($GL012);
    14.                    }
    15.                    $LLstat.= ','.$i1;
    16.      }
    17.     $LLstat=$LLstat.$break;
    18. }
    19. echo $t.$LLstat;
    20. ?>
     
  3. writer

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

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Stedex,Спасибо)
    по тому же принципу я подставляю дату в начало массива и она идет только так
    ,12,12,12,12,12,12,12,12,0,0,0,0
    ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

    как сделать еще дату в начало строки каждой?
     
  4. Stedex

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

    С нами с:
    30 ноя 2012
    Сообщения:
    8
    Симпатии:
    0
    найди
    Код (Text):
    1. $LLstat=$LLstat.$break;
    замени на
    Код (Text):
    1. $LLstat=date("m.d.y")." ".$LLstat.$break;

    в последней строке выводи просто $LLstat без $t
     
  5. writer

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

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Код (PHP):
    1. }
    2.     $LLstat.= ','.$i1;
    3. }
    4.         $today = date("m");  
    5. $today2 = date("y"); 
    6. $t=','.$today.','.$today2;
    7.     $LLstat=$t.$LLstat.$break;
    8. } 
    вот результат что я описал выше
     
  6. Stedex

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

    С нами с:
    30 ноя 2012
    Сообщения:
    8
    Симпатии:
    0
    вначале:
    Код (Text):
    1. $LLstat=date("m,y").": ";
    и заменить строку вот этим
    Код (Text):
    1. $LLstat=$LLstat."<br>".date("m,y").": ";
    попробуй, напиши результат
     
  7. writer

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

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Код (PHP):
    1. <?php include('../../php/connect.php') ?>
    2. <?php set_time_limit (600); ?>
    3.     <?php
    4.   $today = date("m");  
    5. $today2 = date("y"); 
    6. $t=','.$today.','.$today2;
    7. for ($a = 1; $a <1500; $a++) {
    8.    $LLstat='';
    9. for ($i = 1; $i < 1500; $i++) {
    10. $GL012 = mysql_query("SELECT * FROM `firm` WHERE localsfere ='$i' AND sityfirm='$a'");//выборка всех полей из БД равным ключу
    11.     $GL01 = mysql_num_rows($GL012);
    12.     for ($i1=0; $i1 <$GL01; $i1++) {
    13. $GL1 = mysql_fetch_assoc($GL012);
    14. }
    15.     $LLstat.= ','.$i1;
    16. }
    17. $pg_f = '../LScity/'.$a.'.php'; // файл в корне
    18. $f=fopen($pg_f, "a+"); // открываем на добавление
    19. fputs ($f, $t.$LLstat."\n"); // пишем текст
    20. fflush($f); // очищаем буфер
    21. fclose($f);  // закрываем файл
    22. }
    23. ?>
    Все разобрался со всем.все работает как надо но одно никак вообще не могу понять - почему он проодит все файлы 2 раза и записывает по 2 строчки?????
    цель скрипта-сбор статистики. 1500 городов - 1500 сфер деятельности(с учетом резерва).надо одну только строку а он все равно 2 собирает((((
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Начну с другого.

    Зачем ты 1500 раз открываешь файл и закрываешь?? )) Вынеси за цикл.

    А теперь ответ на твой вопрос

    http://php[dot]net/manual/ru/function.fflush.php
    fflush записывает в файл.
     
  9. writer

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

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    smitt,потому что у меня 1500 файлов в каждом из которого строка из 1500 символов(с учетом запятых - 3000)
    этот выбор был сделал в связи с тем что я не смог придумать как держать в БД не только реальные данные а допустим данные за каждый месяц.И это только одна из веток статистик.Там из будет больше и скрипты такие перегружали бы сервер дай бог.Так собрал раз в месяц все а потом просто из файликов строится график.XML тоже не прокатил бы.


    спасибо что помог кстати)получилось все)