Форумы портала PHP.SU » » Работа с СУБД » Коменты в два столба

Страниц (1): [1]
 

1. zorg84 - 28 Июня, 2011 - 20:11:40 - перейти к сообщению
Не прошу писать мне полностью скрипт но надеюсь что примерно кто-то объяснить как это сделать. Суть вопроса: есть комментарии в два ряда, одни для женщин другие для мужчин и к ним две таблицы в базе MySQL. Всё бы хорошо но мне надо чтобы была постраничная навигация. Допустим чтобы было по десять комментариев на странице в каждом столбце.
Я сделал навигацию но получается только к одной таблице пробовал подсчитать общее количество записей в двух таблицах, но получается что работает не корректно. Если в таблице где есть навигация записей только 5 а в другой 25 та увидеть можно только 5 записей .
Другой вариант с общим подсчетом записей выводит другую страницу после: допустим в таблице ж 3 записи а в таблице м 2 в совокупности выходит 5 записей.Вопрос как сделать обычную навигацию чтобы выводилось 5 и 5 если больше хотя бы в одном столбце выводилась ссылка на другую страницу.
Надеюсь понятно объяснил заранее спасибо.
Вот код странички
PHP:
скопировать код в буфер обмена
  1. <?PHP require_once ("blocks/bd.php");
  2. if (isset($_GET['id'])) {$id = $_GET['id']; }
  3. if (!isset($id)) {$id = 1;}
  4. /* Проверяем, является ли переменная числом */
  5. if (!preg_match("|^[\d]+$|", $id)) {
  6. exit ("<p>Неверный формат запроса! Проверьте URL!");
  7. }
  8. $result = mysql_query("SELECT * FROM data WHERE id='$id'",$db);
  9.  
  10. if (!$result)
  11. {
  12. echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору sait.com. <br> <strong>Код ошибки:</strong></p>";
  13. }
  14.  
  15. if (mysql_num_rows($result) > 0)
  16.  
  17. {
  18. $myrow = mysql_fetch_array($result);
  19. $new_view = $myrow["view"] + 1;/*количество проссмотров*/
  20. $update = mysql_query ("UPDATE data SET view='$new_view' WHERE id='$id'",$db); /* количество простмотров*/
  21.  
  22.  
  23. }
  24.  
  25. else
  26. {
  27. echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
  28. exit();
  29. }
  30.  
  31.  
  32. ?>
  33.  
  34.  
  35. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  36. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
  37. <head>
  38.     <title>Something About Sex And Love - Words Of Wisdom</title>
  39.     <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  40.     <meta name="author" content="Konstantin ">
  41.     <meta name="copyright" content="&copy;">
  42.     <meta name="keywords" content="kkk,kkkk">
  43.     <meta name="description" content="\kkkk">
  44. <link rel="stylesheet" href="style.css" type="text/css" />
  45. <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
  46. </head>
  47. <body>
  48.  
  49. <div id="container">
  50.   <div id="header">
  51.  
  52. <div id="title">
  53. <H1>Something </H1>
  54. <H3>...And ..</H3>
  55. </div>
  56.  
  57. <div id="menu">
  58. <table width="583" height="35" border="0" cellpadding="0" cellspacing="0">
  59. <tr>
  60. <TD width="20" align="center"><a href="index.php">Words Of Wisdom</a></td>
  61. <TD width="65"></td>
  62. <TD width="40" align="left"><a href="cat.php">He Say - She Say</a></td>
  63. </tr></table>
  64. </div>
  65. </div>
  66.  <div id="content">
  67.  <H2>Words Of Wisdom!</H2>
  68. <?PHP
  69. printf ("<p class='post_titlel'>%s</p><p class='post_add'>Автор: %s &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Дата: %s</p>%s<p></p>",$myrow["title"],$myrow["author"],$myrow["date"],$myrow["text"]);
  70. ?>
  71.  
  72. <?PHP
  73. $result4 = mysql_query ("SELECT img FROM comments_setting",$db);
  74. $myrow4 = mysql_fetch_array($result4);
  75. ?>
  76. <p class='post_comment'>Добавить Ваш комментарий:</p>
  77. <form action="" method="post"  id="mainForm">
  78. <p><label>Ваше имя: </label></p><p><input name="author" type="text" size="30" maxlength="30"></p>
  79. <p><label>email: </label></p><p><input name="email" type="text" size="30" maxlength="30"></p>
  80. <p><label>Текст комментария: <br> <textarea name="text"  cols="40" rows="4"  maxlength="41" >текст</textarea></label></p><p>Введите сумму чисел с картинки<br>
  81.  <img style='margin-top:10px;' src="<? echo $myrow4["img"]; ?>" width="76" height="28">
  82. <p>
  83.   <input style='margin-bottom:50px;' name="pr" type="text" size="7" maxlength="7">
  84. </p>
  85. <input name="id" type="hidden" value="<? echo $id; ?>">
  86.   <p>
  87. <input name="sub_com" type="submit"  value="woman" onclick="document.getElementById('mainForm').action='comment.php';" />
  88. <input name="sub_com" type="submit" value="man" onclick="document.getElementById('mainForm').action='commentmen.php';" />
  89. </p>
  90. </form>
  91.  
  92. <table width="552" height="239" border="0">
  93.   <tr>
  94.     <td width="284">
  95.        
  96.        
  97.        
  98.        
  99.        
  100.        
  101.        
  102.        
  103.         <?PHP
  104. echo "<p>Кометарии<p>";
  105.  
  106. $result77 = mysql_query("SELECT str FROM options", $db);
  107. $myrow77 = mysql_fetch_array($result77);
  108. $num = $myrow77["str"];
  109. // Извлекаем из URL текущую страницу
  110. @$page = $_GET['page'];
  111. // Определяем общее число сообщений в базе данных
  112. $result01 = mysql_query("SELECT COUNT(c.*) AS count_c, COUNT(cs.*) AS count_cs FROM comments AS c LEFT JOIN  commentsss AS cs USING (post) WHERE post='$id'");
  113. echo mysql_error();
  114. $temp = mysql_fetch_array($result01);
  115. $posts = $temp[0];
  116. // Находим общее число страниц
  117. $total = (($posts - 1) / $num) + 1;
  118. $total =  intval($total);
  119. // Определяем начало сообщений для текущей страницы
  120. $page = intval($page);
  121. // Если значение $page меньше единицы или отрицательно
  122. // переходим на первую страницу
  123. // А если слишком большое, то переходим на последнюю
  124. if(empty($page) or $page < 0) $page = 1;
  125.   if($page > $total) $page = $total;
  126. // Вычисляем начиная с какого номера
  127. // следует выводить сообщения
  128. $start = $page * $num - $num;
  129. // Выбираем $num сообщений начиная с номера $start
  130.  
  131. $result0 = mysql_query ("SELECT * FROM comments WHERE post='$id' ORDER BY id  DESC, id DESC LIMIT $start, $num",$db);
  132. if (mysql_num_rows($result0) > 0)
  133. {
  134. $myrow0 = mysql_fetch_array($result0);
  135. do
  136. {
  137. @printf ("<div class='post_div'><p class='post_comment_add'>Комментарий добавила: <strong>%s</strong> <br> Дата: <strong>%s</strong></p>
  138. <p>%s</p></div>",$myrow0["author"], $myrow0["date"], $myrow0["text"]);
  139. }
  140. while ($myrow0 = mysql_fetch_array($result0));
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147. // Проверяем нужны ли стрелки назад   <a href=post.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a>  ';
  148. if ($page != 0) $pervpage = '<a href=post.php?post='.$cat.'&page=1><</a>  ';
  149. // Проверяем нужны ли стрелки вперед   <a href=post.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';
  150. if ($page != $total) $nextpage = '  <a href=post.php?post='.$cat.'&page='. ($page + 1) .'>></a> ';
  151.  
  152. // Находим две ближайшие станицы с обоих краев, если они есть
  153. if($page - 5 > 0) $page5left = ' <a href=post.php?post='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a>  ';
  154. if($page - 4 > 0) $page4left = ' <a href=post.php?post='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a>  ';
  155. if($page - 3 > 0) $page3left = ' <a href=post.php?post='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a>  ';
  156. if($page - 2 > 0) $page2left = ' <a href=post.php?post='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a>  ';
  157. if($page - 1 > 0) $page1left = '<a href=post.php?post='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a>  ';
  158.  
  159. if($page + 5 <= $total) $page5right = '  <a href=post.php?post='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
  160. if($page + 4 <= $total) $page4right = '  <a href=post.php?post='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
  161. if($page + 3 <= $total) $page3right = '  <a href=post.php?post='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
  162. if($page + 2 <= $total) $page2right = '  <a href=post.php?post='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
  163. if($page + 1 <= $total) $page1right = '  <a href=post.php?post='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  164.  
  165. // Вывод меню если страниц больше одной
  166.  
  167. if ($total > 1)
  168. {
  169. Error_Reporting(E_ALL & ~E_NOTICE);
  170. echo "<div class=\"pstrnav\">";
  171. echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
  172. echo "</div>";
  173. }
  174.  
  175.  
  176. }
  177.  
  178. ?></td>
  179. <td width="264">
  180.  </tr>
  181. </table>
  182.  
  183. </body>
  184. </html>
  185.  
2. komprenda - 28 Июня, 2011 - 20:43:21 - перейти к сообщению
zorg84 пишет:


Это Попов теперь так учит? Есть например ctype_digit. А лучше сразу привести к int'у.
3. evgenijj - 29 Июня, 2011 - 00:49:55 - перейти к сообщению
Пусть есть 50 комментариев от мужчин и 20 комментариев от женщин. Если мы строим постраничную навигацию, ориентируемся на 50. Т.е. на большее значение. Дальше все примитивно. Уже сто раз обсуждалось...
Цитата:
Я сделал навигацию но получается только к одной таблице пробовал подсчитать общее количество записей в двух таблицах, но получается что работает не корректно. Если в таблице где есть навигация записей только 5 а в другой 25 та увидеть можно только 5 записей .

Ну, это логично... Общее количество в двух таблицах -- неправильно. Ну ты сам посуди
CODE (htmlphp):
скопировать код в буфер обмена
  1. comment 1 | comment 2
  2. ----------------------------
  3. 1               | 1
  4. 2               | 2
  5. 3               | 3
  6. 4               | 4
  7. 5               | 5
  8.                 | 6
  9.                 | 7
  10.                 | 8
4. zorg84 - 29 Июня, 2011 - 10:20:56 - перейти к сообщению
(Добавление)
evgenijj пишет:
Пусть есть 50 комментариев от мужчин и 20 комментариев от женщин. Если мы строим постраничную навигацию, ориентируемся на 50. Т.е. на большее значение. Дальше все примитивно. Уже сто раз обсуждалось...
Цитата:
Я сделал навигацию но получается только к одной таблице пробовал подсчитать общее количество записей в двух таблицах, но получается что работает не корректно. Если в таблице где есть навигация записей только 5 а в другой 25 та увидеть можно только 5 записей .

Ну, это логично... Общее количество в двух таблицах -- неправильно. Ну ты сам посуди
CODE (htmlphp):
скопировать код в буфер обмена
  1. comment 1 | comment 2
  2. ----------------------------
  3. 1               | 1
  4. 2               | 2
  5. 3               | 3
  6. 4               | 4
  7. 5               | 5
  8.                 | 6
  9.                 | 7
  10.                 | 8




Я и так знаю что общее количество не правильно поэтому и спрашиваю здесь как сделать
5. Давит - 29 Июня, 2011 - 11:52:34 - перейти к сообщению
просто объедини таблицы и выводы до конца
6. DeepVarvar - 29 Июня, 2011 - 12:10:02 - перейти к сообщению
Структуру таблиц в студию
7. zorg84 - 29 Июня, 2011 - 12:48:39 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. CREATE TABLE `comments` (
  5.   `id` int(5) NOT NULL auto_increment,
  6.   `post` varchar(5) NOT NULL,
  7.   `author` varchar(100) NOT NULL,
  8.   `text` text NOT NULL,
  9.   `date` date NOT NULL,
  10.   `email` varchar(250) NOT NULL,
  11.   PRIMARY KEY  (`id`)
  12. ) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=71 ;
  13.  
  14.  

Другая аналогичная
8. zorg84 - 30 Июня, 2011 - 00:20:47 - перейти к сообщению
Неужели никто не в курсе как это сделать Радость
9. DeepVarvar - 30 Июня, 2011 - 07:38:20 - перейти к сообщению
И чем они связаны? Таблицы ваши.. И как они к статьям (или чему-то там еще) выводятся?

 

Powered by ExBB FM 1.0 RC1