Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
Как на форуме подсчитать количество ответов на заданную тему? в общем дело такое, есть много тем, на каждую тему много сообщений, вопрос стоит в том, как в таблицу, где записаны темы форума в столбцы "Просмотров" и "Ответов" запихать значения, т.е. как подсчитать эти самые просмотры и количество сообщений по теме??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2008, 15:00 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
Все определяется тем, как ты храниш свою информацию... Опиши структуру данных. ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 08:31 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
есть два класса: этот отвечает за информацию о сообщении Class forum.Massage Extends %Persistent [ ClassType = persistent, ProcedureBlock ] { Query byMassage() As %SQLQuery(CONTAINID = 1) { SELECT %ID,Massage,TopID,UserName,SysDate FROM Massage } Property Massage As %String(MAXLEN = 5000, TRUNCATE = 1); Property TopID As %Integer; Property UserName As %String(TRUNCATE = 1); Property SysDate As %Date; Method AddMass(Mass As %String, Top As %String, UserN As %String, SysDate As %Date) { set ..Massage=Mass set ..TopID=Top set ..UserName=UserN set ..SysDate=SysDate set top= ##this.%Save() } } а этот за хранение тем: Class forum.Topik Extends %Persistent [ ClassType = persistent, ProcedureBlock ] { Query byTopik() As %SQLQuery(CONTAINID = 1) { SELECT %ID,Topik1,Massage,UserName FROM Topik } Property Topik1 As %String(MAXLEN = 5000, TRUNCATE = 1); Property Massage As %String(MAXLEN = 5000, TRUNCATE = 1); Property UserName As %String(MAXLEN = 5000, TRUNCATE = 1); Method AddTop(Topik1 As %String, Mass As %String, UserN As %String) { set ..Topik1=Topik1 set ..Massage=Mass set ..UserName=UserN set top= ##this.%Save() Quit 0 } } вот! Надеюсь чего-нибудь поймёшь! ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 14:26 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
Да-а-а... Ну и стрктурка . А где "связь" между темой и сообщениями? Без этого ничего не выйдет... ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 14:32 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
вот csp, может чего понятнее станет тебе: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Index2</title> <link href="Style.css" rel="stylesheet" type="text/css"> <style type="text/css"> <!-- a:link { color: #000000; } .style2 {font-size: 20px} .style1 {color: #FFFFFF} a:visited { color: #000000; } a:hover { color: #000000; } a:active { color: #000000; } --> </style> <TITLE> <script language="Cache" Runat = "server"> set obj=##class(forum.Topik).%OpenId(%request.Get("TopikID")) write obj.Topik1 </script> </TITLE> </HEAD> <BODY topmargin="0"> <div class="r"></div> <div class="headID style2" id="headID" style="width:94%; line-height:30px; padding-top:30px" > <TABLE border="0" bgcolor="#336799" class="style1" text-color="#FFFFFF"cellspacing="0" style="width:77%"> <tr> <td align="left" WIDTH="75%" HEIGHT="15px" ><font face="Arial" size="1"> <csp:if condition=($Data(%request.Data("ins")))> <csp:query name="qrGetNameInstitut" classname="ru.sfu.reference.structure.Institut" queryname="GetNameInstitut" P1=#(%request.Get("ins"))# P2=#(%request.Get("fac"))# P3=#(%request.Get("chair"))#> <csp:while condition="qrGetNameInstitut.Next()"> #(qrGetNameInstitut.Get("fullName"))#</font> </csp:while> <csp:else> <csp:query name="qrGetUserStudent" classname="ru.sfu.auth.User" queryname="GetUserStudent" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserStudent.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserStudent.Get("UserName"))> #(qrGetUserStudent.Get("insName"))# </csp:if> </csp:while> <csp:query name="qrGetUserWorker" classname="ru.sfu.auth.User" queryname="GetUserWorker" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserWorker.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserWorker.Get("UserName"))> <font size="1">#(qrGetUserWorker.Get("insName"))#</font></div> </csp:if> </csp:while> </csp:if> </td> </tr> <tr> <td align="left" WIDTH="75%" HEIGHT="15px"><font face="Arial" size="1"> <csp:if condition=($Data(%request.Data("fac")))> <csp:query name="qrGetNameFaculty" classname="ru.sfu.reference.structure.Faculty" queryname="GetNameFaculty" P1=#(%request.Get("ins"))# P2=#(%request.Get("fac"))# P3=#(%request.Get("chair"))#> <csp:while condition="qrGetNameFaculty.Next()"> <font size="1">#(qrGetNameFaculty.Get("fullName"))#</font> </csp:while> <csp:else> <csp:query name="qrGetUserStudent" classname="ru.sfu.auth.User" queryname="GetUserStudent" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserStudent.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserStudent.Get("UserName"))> <font size="1">#(qrGetUserStudent.Get("facName"))#</font> </csp:if> </csp:while> <csp:query name="qrGetUserWorker" classname="ru.sfu.auth.User" queryname="GetUserWorker" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserWorker.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserWorker.Get("UserName"))> <font size="1">#(qrGetUserWorker.Get("facName"))#</font></div> </csp:if> </csp:while> </csp:if></td> </tr> <tr> <td align="center" WIDTH="77%" HEIGHT="70px"> <csp:if condition=($Data(%request.Data("chair")))> <csp:query name="qrGetNameChair" classname="ru.sfu.reference.structure.Chair" queryname="GetNameChair" P1=#(%request.Get("ins"))# P2=#(%request.Get("fac"))# P3=#(%request.Get("chair"))#> <csp:while condition="qrGetNameChair.Next()"> <div align="center" ><font size="5px">Форум Кафедры #(qrGetNameChair.Get("fullName"))#</font></div> </csp:while> <csp:else> <csp:query name="qrGetUserStudent" classname="ru.sfu.auth.User" queryname="GetUserStudent" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserStudent.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserStudent.Get("UserName"))> <div align="center" ><font size="5px">Форум Кафедры #(qrGetUserStudent.Get("chairName"))#</font></div> </csp:if> </csp:while> <csp:query name="qrGetUserWorker" classname="ru.sfu.auth.User" queryname="GetUserWorker" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserWorker.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserWorker.Get("UserName"))> <div align="center" ><font size="5px">Форум Кафедры #(qrGetUserWorker.Get("chairName"))#</font></div> </csp:if> </csp:while> </csp:if> </div> </td> </tr> </table></div> </csp:while> </csp:if> </div> <div class="r" style="height:100"></div> <div class="r"></div> <CENTER> <script language="Cache" Runat = "server"> set obj=##class(forum.Topik).%OpenId(%request.Get("TopikID")) write "<h3>", obj.Topik1, "</h3>" </script> <TABLE border="0" bordercolor="#336799" cellspacing="3" style="width:100%"> <tr> <td WIDTH="2%" rules="none"></td> <td align="center" WIDTH="12%" HEIGHT="45" bgcolor="#ADECFA"><font face="Arial"><b>От кого</b></font></td> <td align="center" WIDTH="70%" bgcolor="#ADECFA"><font face="Arial" ><b>Сообщение</b></font></td> <td WIDTH="5%">Дата</td> <td WIDTH="2%" rules="none"></td> </tr> <csp:query name="TopMas" classname="forum.Topik" queryname="byTopik"> <csp:while Condition=TopMas.Next()> <csp:if Condition='%request.Get("TopikID")=TopMas.Get("ID")'> <tr> <td WIDTH="2%" rules="none"></td> <td width="12%" bgcolor="#FFE67D"><font face="Arial" >#(TopMas.Get("UserName"))#</td> <td WIDTH="70%" bgcolor="#FFE67D"><font face="Arial" >#(TopMas.Get("Massage"))#</td> <td WIDTH="5%">#(TopMas.Get("SysDate"))#</td> <td WIDTH="2%" rules="none"></td> </tr> </csp:if> </csp:while> <csp:query name="Mas" classname="forum.Massage" queryname="byMassage"> <csp:while Condition=Mas.Next()> <csp:if Condition='%request.Get("TopikID")=Mas.Get("TopID")'> <tr> <td WIDTH="2%" rules="none"></td> <td WIDTH="12%" bgcolor="#FFE67D"><font face="Arial" >#(Mas.Get("UserName"))#</td> <td WIDTH="70%" bgcolor="#FFE67D"><font face="Arial" >#(Mas.Get("Massage"))#</td> <td WIDTH="5%">#($zt($h))#</td> <td WIDTH="2%" rules="none"></td> </tr> </csp:if> </csp:while> </TABLE> <csp:if Condition='%request.Get("Us")="Гость"'> <csp:elseif Condition='%request.Get("Us")=""'> <csp:else> <h3>Введите ответ</h3> <form name="Log"> <TEXTAREA NAME="mass" COLS="60" ROWS="5"></TEXTAREA> </form> <br><br><INPUT TYPE="button" NAME="add" VALUE="Ответить" onClick="#server(..mas(self.document.Log.mass.value,self.document.Log.SysDate.value))#"> </csp:if> <br><A HREF="ForymIndex.csp" TITLE="">На главную</A><br> </CENTER> <script language=Cache runat = "server"> set ^un = %request.Get("Us") set ^tid = %request.Get("TopikID") set SysDate = $H </script> </FONT> </FONT></DIV> </BODY> </HTML> <script language=Cache Method="mas" arguments="mass:%String,SysDate:%Date"> if mass="" {&javascript<alert("Недопустимое сообщение");> quit} set top=##class(forum.Massage).%New() do top.AddMass(mass,SysDate, ^tid, ^un) &JS<location.href='ForumMassage.csp?Us=#(^un)#&TopikID=#(^tid)#'> quit </script> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Index2</title> <link href="Style.css" rel="stylesheet" type="text/css"> <style type="text/css"> <!-- a:link { color: #000000; } .style2 {font-size: 20px} .style1 {color: #FFFFFF} a:visited { color: #000000; } a:hover { color: #000000; } a:active { color: #000000; } --> </style> </head> <BODY topmargin="0" leftmargin="0"> <div class="r" style="height:113"></div> <div class="headID style2" id="headID" style="WIDTH:94%" > <TABLE border="0" bgcolor="#336799" class="style1" text-color="#FFFFFF"cellspacing="0" style="width:77%"> <tr> <td align="left" WIDTH="75%" HEIGHT="15px" ><font face="Arial" size="1"> <csp:if condition=($Data(%request.Data("ins")))> <csp:query name="qrGetNameInstitut" classname="ru.sfu.reference.structure.Institut" queryname="GetNameInstitut" P1=#(%request.Get("ins"))# P2=#(%request.Get("fac"))# P3=#(%request.Get("chair"))#> <csp:while condition="qrGetNameInstitut.Next()"> #(qrGetNameInstitut.Get("fullName"))#</font> </csp:while> <csp:else> <csp:query name="qrGetUserStudent" classname="ru.sfu.auth.User" queryname="GetUserStudent" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserStudent.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserStudent.Get("UserName"))> #(qrGetUserStudent.Get("insName"))# </csp:if> </csp:while> <csp:query name="qrGetUserWorker" classname="ru.sfu.auth.User" queryname="GetUserWorker" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserWorker.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserWorker.Get("UserName"))> <font size="1">#(qrGetUserWorker.Get("insName"))#</font></div> </csp:if> </csp:while> </csp:if> </td> </tr> <tr> <td align="left" WIDTH="75%" HEIGHT="15px"><font face="Arial" size="1"> <csp:if condition=($Data(%request.Data("fac")))> <csp:query name="qrGetNameFaculty" classname="ru.sfu.reference.structure.Faculty" queryname="GetNameFaculty" P1=#(%request.Get("ins"))# P2=#(%request.Get("fac"))# P3=#(%request.Get("chair"))#> <csp:while condition="qrGetNameFaculty.Next()"> <font size="1">#(qrGetNameFaculty.Get("fullName"))#</font> </csp:while> <csp:else> <csp:query name="qrGetUserStudent" classname="ru.sfu.auth.User" queryname="GetUserStudent" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserStudent.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserStudent.Get("UserName"))> <font size="1">#(qrGetUserStudent.Get("facName"))#</font> </csp:if> </csp:while> <csp:query name="qrGetUserWorker" classname="ru.sfu.auth.User" queryname="GetUserWorker" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserWorker.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserWorker.Get("UserName"))> <font size="1">#(qrGetUserWorker.Get("facName"))#</font></div> </csp:if> </csp:while> </csp:if></td> </tr> <tr> <td align="center" WIDTH="77%" HEIGHT="70px"> <csp:if condition=($Data(%request.Data("chair")))> <csp:query name="qrGetNameChair" classname="ru.sfu.reference.structure.Chair" queryname="GetNameChair" P1=#(%request.Get("ins"))# P2=#(%request.Get("fac"))# P3=#(%request.Get("chair"))#> <csp:while condition="qrGetNameChair.Next()"> <div align="center" ><font size="5px">Форум Кафедры #(qrGetNameChair.Get("fullName"))#</font></div> </csp:while> <csp:else> <csp:query name="qrGetUserStudent" classname="ru.sfu.auth.User" queryname="GetUserStudent" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserStudent.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserStudent.Get("UserName"))> <div align="center" ><font size="5px">Форум Кафедры #(qrGetUserStudent.Get("chairName"))#</font></div> </csp:if> </csp:while> <csp:query name="qrGetUserWorker" classname="ru.sfu.auth.User" queryname="GetUserWorker" P1=#(%request.Get("Us"))# > <csp:while condition="qrGetUserWorker.Next()"> <csp:if condition=(%request.Get("Us")=qrGetUserWorker.Get("UserName"))> <div align="center" ><font size="5px">Форум Кафедры #(qrGetUserWorker.Get("chairName"))#</font></div> </csp:if> </csp:while> </csp:if> </div> </td> </tr> </table> </div> <TABLE border="0" bgcolor="" cellspacing="3" style="width:100%"> <tr> <td WIDTH="6" rules="none"></td> <td align="center" WIDTH="70%" HEIGHT="45" bgcolor="#ADECFA"><font face="Arial"><b>Тема</b></font></td> <td align="center" WIDTH="5%" HEIGHT="45" bgcolor="#ADECFA"><font face="Arial" size="2">Ответов</font></td> <td align="center" WIDTH="10%" bgcolor="#ADECFA"><font face="Arial" ><b>Автор</b></font></td> <td align="center" WIDTH="10%" HEIGHT="45" bgcolor="#ADECFA"><font face="Arial" size="2">Дата</font></td> <td WIDTH="6" rules="none"></td> </tr> <csp:query name="Name" classname="forum.Topik" queryname="byTopik"> <csp:while Condition=Name.Next()> <td WIDTH="6" rules="none" ></td> <td width="70%" bgcolor="#FFE67D"><font face="Arial" ><a href=ForumMassage.csp?Us=#(%request.Get("Us"))#&TopikID=#(Name.Get("ID"))# > #(Name.Get("Topik1"))#</a></font></td> <td align="center" WIDTH="5%" HEIGHT="45" bgcolor="#ADECFA"><font face="Arial"><b></b></font></td> <td WIDTH="10%" align="center" bgcolor="#FFE67D"><font face="Arial" >#(Name.Get("UserName"))#</font></td> <td align="center" WIDTH="10%" HEIGHT="45" bgcolor="#ADECFA"><font face="Arial"><b></b></font></td> <td WIDTH="6" rules="none" ></td> </tr> </csp:while> </TABLE> <div class="r"></div> </FONT></DIV> <csp:if Condition='%request.Get("Us")="Гость"'> <csp:elseif Condition='%request.Get("Us")=""'> <csp:else> <a href="forumNewTop.csp?Telo=#(%request.Get("Us"))#">Добавить тему</a> </csp:if> </FONT> </BODY> </HTML> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 15:12 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
первая, это ForumMessage вторая, это ForumTopik ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 15:14 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
chicago_86вот csp, может чего понятнее станет тебе Ниасилил... Слишкаммногабукафф... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 15:36 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>ForumMessage</title> <script language="Cache" Runat = "server"> set obj=##class(forum.Topik).%OpenId(%request.Get("TopikID")) write obj.Topik1 </script> </TITLE> </HEAD> <BODY topmargin="0"> <TABLE border="0" bordercolor="#336799" cellspacing="3" style="width:100%"> <tr> <td WIDTH="2%" rules="none"></td> <td align="center" WIDTH="12%" HEIGHT="45" bgcolor="#ADECFA"><font face="Arial"><b>От кого</b></font></td> <td align="center" WIDTH="70%" bgcolor="#ADECFA"><font face="Arial" ><b>Сообщение</b></font></td> <td WIDTH="5%">Дата</td> <td WIDTH="2%" rules="none"></td> </tr> <csp:query name="TopMas" classname="forum.Topik" queryname="byTopik"> <csp:while Condition=TopMas.Next()> <csp:if Condition='%request.Get("TopikID")=TopMas.Get("ID")'> <tr> <td WIDTH="2%" rules="none"></td> <td width="12%" bgcolor="#FFE67D"><font face="Arial" >#(TopMas.Get("UserName"))#</td> <td WIDTH="70%" bgcolor="#FFE67D"><font face="Arial" >#(TopMas.Get("Massage"))#</td> <td WIDTH="5%">#(TopMas.Get("SysDate"))#</td> <td WIDTH="2%" rules="none"></td> </tr> </csp:if> </csp:while> <csp:query name="Mas" classname="forum.Massage" queryname="byMassage"> <csp:while Condition=Mas.Next()> <csp:if Condition='%request.Get("TopikID")=Mas.Get("TopID")'> <tr> <td WIDTH="2%" rules="none"></td> <td WIDTH="12%" bgcolor="#FFE67D"><font face="Arial" >#(Mas.Get("UserName"))#</td> <td WIDTH="70%" bgcolor="#FFE67D"><font face="Arial" >#(Mas.Get("Massage"))#</td> <td WIDTH="5%">#($zt($h))#</td> <td WIDTH="2%" rules="none"></td> </tr> </csp:if> </csp:while> </TABLE> <h3>Введите ответ</h3> <form name="Log"> <TEXTAREA NAME="mass" COLS="60" ROWS="5"></TEXTAREA> </form> <br><br><INPUT TYPE="button" NAME="add" VALUE="Ответить" onClick="#server(..mas(self.document.Log.mass.value,self.document.Log.SysDate.value))#"> <script language=Cache runat = "server"> set ^un = %request.Get("Us") set ^tid = %request.Get("TopikID") set SysDate = $H </script> </BODY> </HTML> <script language=Cache Method="mas" arguments="mass:%String,SysDate:%Date"> if mass="" {&javascript<alert("Недопустимое сообщение");> quit} set top=##class(forum.Massage).%New() do top.AddMass(mass,SysDate, ^tid, ^un) &JS<location.href='ForumMassage.csp?Us=#(^un)#&TopikID=#(^tid)#'> quit </script> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 15:51 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
Вот только нужное!!! ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 15:52 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
Там идея простая... Строится SQL запрос - он-то и возвращает нужное тебе количество. А как вывести его на странице - я тебе уже показывал... ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 16:06 |
|
||
|
Как на форуме подсчитать количество ответов на заданную тему?
|
|||
|---|---|---|---|
|
#18+
Строится SQL запрос - он-то и возвращает нужное тебе количество. Этот запрос я должен построить или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 16:30 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=35335298&tid=1558877]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 429ms |

| 0 / 0 |
