За последние 24 часа нас посетили 105985 программистов и 5792 робота. Сейчас ищут 2707 программистов ...

Счетчик сообщений

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

  1. Enjoy

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

    С нами с:
    10 июл 2015
    Сообщения:
    62
    Симпатии:
    0
    Добрый день.
    Подскажите пожалуйста...

    Есть необходимость нумировать сообщения на форуме или гостевой книге в каждой ветке, каким образом этого можно достичь?

    Имеется двумерный массив:
    Код (Text):
    1. array(2) {
    2.   [0]=>
    3.   array(8) {
    4.     ["id"]=>
    5.     string(2) "41"
    6.     ["mid"]=>
    7.     string(1) "0"
    8.     ["fid"]=>
    9.     string(1) "5"
    10.     ["type"]=>
    11.     string(5) "topic"
    12.     ["title"]=>
    13.     string(21) "Первая тема"
    14.     ["text"]=>
    15.     string(6) "раз"
    16.     ["user"]=>
    17.     string(1) "1"
    18.     ["date"]=>
    19.     string(12) "25/11, 15:45"
    20.   }
    21.   [1]=>
    22.   array(8) {
    23.     ["id"]=>
    24.     string(2) "74"
    25.     ["mid"]=>
    26.     string(2) "41"
    27.     ["fid"]=>
    28.     string(1) "0"
    29.     ["type"]=>
    30.     string(5) "reply"
    31.     ["title"]=>
    32.     string(0) ""
    33.     ["text"]=>
    34.     string(6) "выа"
    35.     ["user"]=>
    36.     string(5) "admin"
    37.     ["date"]=>
    38.     string(12) "05/02, 10:45"
    39.   }
    40. }
    Предполагаю что нужно выдергивать индексы массивов с ++, но не могу понять как...
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    "счетчики" будут в базе, незачем их выдергивать в массив.

    придумай и создай таблицы в бд. опиши для себя основные операции, которые будут выполняться твоим форумом или гостевой. для каждой операции опиши как будут изменяться данные в таблицах. всё просто! детальный план это фактически готовая программа.
     
  3. Enjoy

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

    С нами с:
    10 июл 2015
    Сообщения:
    62
    Симпатии:
    0
    Не совсем понял.
    Я открываю тему на форуме, у меня показывает тему, сообщение и ответы на нее...
    Теме присваивается 1 индекс, и каждому последующему ответу инкримент +1, и так в каждой теме.
    Вот я и спрашиваю, как этот функционал реализовывается... ?

    Пришел к выводу что можно дернуть индексы массива, если не так то как еще можно это сделать?
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    нет такого, я тебя уверяю! я с форумами давно работаю. форумы, тема и сообщения нумеруются автоматически самой бд. это называется автоинкрементный ключ.

    сообщения в каждой теме не начинаются с единицы !!! нумерация продолжается: если всего на сайте 10 сообщений, то следующее получит номер 11 — независимо от того, в какой теме его создали.

    Добавлено спустя 17 минут 51 секунду:
    наверное мы друг друга не поняли.
    при выводе на страничку, ты волен использовать любые счетчики, какие придумаешь. от этого темы и сообщения не изменятся.

    Код (PHP):
    1. $i = 1;
    2. while ($row = mysqli_fetch_assoc($result)) {
    3.     echo ($i++) . '  ' .$row['message'] . "<br>\n";
    4. }
    я просто в начале подумал, что ты уже умеешь делать подобные вещи.
     
  5. Enjoy

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

    С нами с:
    10 июл 2015
    Сообщения:
    62
    Симпатии:
    0
    а мы еще не поняли друг друга )
    вот пример...

    http://desert.com.ru/forum/bugs/2485/

    id = 2485

    а нумерация сообщения начинается в данной теме начинается с 1 и каждый ответ +1
    вот об этом счетчике
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    ну это ты не понял друг друга. сомбреро тебе все правильно подсказал. пока итерируешь свои посты - выводи значение инкремента счетчика. вот и будет тебе от одного и так далее.
     
  7. Enjoy

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

    С нами с:
    10 июл 2015
    Сообщения:
    62
    Симпатии:
    0
    тут трудность другая...
    Итерации делаются форичем...

    Код (Text):
    1. <?php foreach($messages as $message): ;?>
    2.             <tr>
    3.                 <td valign="top" align="center"><p><a href="info.php?id=<?=$user->getUserID($message['user'])?>"><?=$message['user']?></a></p></td>
    4.                 <td>
    5.                     <table width="100%">
    6.                         <tr>
    7.                             <td align="left"><small>ТУТ_ВСТАВИТЬ_СЧЕТЧИК</small></td>
    8.                             <td align="right"><small>Написано: <?=$message['date']?></small></td>
    9.                         </tr>
    10.                     </table>
    11.                     <br>
    12.                         <?=nl2br(htmlentities($message['text']))?>
    13.                 </td>
    14.             </tr>
    15.  
    16.             <?php endforeach ;?>
    Если туда While впихну, ту будет дублирование... не?
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Enjoy, ну а подумать?
    Вариант 1:
    Код (PHP):
    1. foreach ($messages as $n => $message)
    Вариант 2:
    Код (PHP):
    1. $n=0;
    2. foreach ($messages as $m) {
    3.    // ...
    4.    $n++;
    5. }
     
  9. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    тут трудность в нулевых познаниях алгоритма и нулевой смекалке и так далее.
    объявление счетчика будет за пределами цикла $i = 0; а в теле цикла у тебя будет вывод значения и его прекремент echo ++$i;
    а цикл, в теле которого выводится счетчик, может быть и while, и do-while, и for, и foreach и даже через сраное goto. вообще не важно. алгоритм вывода значения счетчика от этого вообще никак не поменяется. я смотрю ты за пол года не удосужился алгоритмизацию освоить, а программы пишешь.
     
  10. Enjoy

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

    С нами с:
    10 июл 2015
    Сообщения:
    62
    Симпатии:
    0
    Спасибо! я уже в БД хотел счетчик пихать.... спасибо!!

    Добавлено спустя 1 минуту 14 секунд:
    Вот скажи, тебя чем жизнь обидела? Если тебя все так бесит, и ты такой профи, сходи в другие треды побеседуй...
     
  11. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    меня жизнь вообще не обидела. тебя обидела. ты не знаешь как прикрутить простейший вывод счетчика посреди итерации ответа от субд. кто за тебя писал работу с субд? бабуля? а если ты сам то почему ты не знаешь как сюда вставить вывод счетчика? у меня в голове не укладывается такое противоречие.
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    Enjoy
    у меня как-то был опыт общения с работником, который знал пхп, чета кодил, даже где-то поднял магазин, но вывести счётчик внутри фора не смог. Это эпик фейл был. Вот ты ща то же самое делаешь, а ещё пытаешься модераторов привлечь для давления на оппонентов. Фу таким быть.

    Добавлено спустя 2 минуты 5 секунд:
    это твоё хамство

    это ответ на твоё хамство.

    В личку ты получил ровно такую ситуацию. Меняй подход и общение наладится.
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    для таких школоло как ты вот тут есть что почитать про счётчики и счёты viewtopic.php?f=40&t=56418
     
  14. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    489
    Симпатии:
    21
    array_keys()