За последние 24 часа нас посетили 17356 программистов и 1297 роботов. Сейчас ищут 1740 программистов ...

Как задать css выводимым записям из Mysql?

Тема в разделе "Вопросы от блондинок", создана пользователем zlojnaxa, 24 июл 2016.

  1. zlojnaxa

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

    С нами с:
    18 ноя 2015
    Сообщения:
    47
    Симпатии:
    4
    Здравствуйте уважаемые программисты. Есть код который выводит из БД записи постранично:
    PHP:
    1. include_once "db.php";
    2. $per_page=5;
    3. if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
    4. $start=abs($page*$per_page);
    5. $select="SELECT * FROM XXXXX WHERE activate = '1' ORDER BY `XXXXX2` DESC LIMIT $start,$per_page";
    6. $result=mysql_query($select);
    7.  
    8. $select="SELECT count(*) FROM `XXXXX`";
    9. $result=mysql_query($select);
    10. $row=mysql_fetch_row($result);
    11. $total_rows=$row[0];
    12. $num_pages=ceil($total_rows/$per_page);
    Проблема в этом коде, который показывает текущую страницу и ссылки на остальные:
    PHP:
    1. for($i=1;$i<=$num_pages;$i++) {
    2.     if ($i-1 == $page) {
    3.         echo $i. " ";
    4.     }
    5.     else {
    6.         echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";
    7.     }
    8. }
    Все работает отлично (в частности номера страниц отображаются как положенно). Но когда я $i заключаю в <div> в 1 и 2 случае, для красивого отображения на экране (страница на которой находится юзер в белой обводке с красным background, страница со ссылкой просто в белой обводке без background), то номера страниц начинают отображаться коряво. При переходе на вторую страницу цифра 1 (первая стр.) перескакивает направо а цифра 2 (вторая стр.) налево, то есть они меняются местами. Вопрос весь в том: как по человечески оформить CSS- ом, что бы ничто никуда не уезжало при переходе на последующие страницы?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @zlojnaxa можешь дать ссылку где посмотреть в живую на корявую нумерацию? Посмотрим на исходный код. Ещё можешь добавить код с помощью которой генерируешь html, а он коряво отображается. Сейчас ты показал только код который работает. Но жалуешься на другой код который не работает. Будет проще помочь, если покажешь не рабочий код и результат его выполнения. Точнее какой html он генерирует.

    На счёт mysql_* его в версии PHP 7 уже удалили, надо переходить на mysqli_* или PDO. Это совет на будущее.

    Ещё можно более наглядно оформлять HTML который будет генерироваться с помощью PHP:
    https://secure.php.net/manual/ru/language.basic-syntax.phpmode.php
    https://secure.php.net/manual/ru/function.echo.php

    Пример, чтобы сложнее было запутаться
    PHP:
    1. <?php
    2. for($i=1;$i<=$num_pages;$i++) {
    3.     if ($i-1 == $page) {
    4.     ?>
    5.         <?=$i?>
    6.     <?php
    7.     } else {
    8.     ?>
    9.         <a href="<?=$_SERVER['PHP_SELF'].'?page='.$i?>"><?=$i?></a>
    10.     <?php
    11.     }
    12. }
     
  3. zlojnaxa

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

    С нами с:
    18 ноя 2015
    Сообщения:
    47
    Симпатии:
    4
    Ок, сейчас накидаю и залью на сервер что бы было наглядно.
     
  4. zlojnaxa

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

    С нами с:
    18 ноя 2015
    Сообщения:
    47
    Симпатии:
    4
    Вот ссылка:
    http://cu45045.tmweb.ru/
    С двумя страницами (когда выводил по 5 записей) еще не так страшно смотрелось. Ради интереса сделал вывод по 1 записи- вообще ужас, но зато наглядней выглядит.
    Исходники на всякий случай.
    PHP:
    1. <?php
    2. header('Content-Type: text/html; charset=utf-8');
    3.  
    4.  
    5. include_once "dbconnect.php";
    6.  
    7.  
    8. $per_page=1;
    9. if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
    10. $start=abs($page*$per_page);
    11. $reviews_select="SELECT * FROM reviews WHERE active = '1' ORDER BY `date_message` DESC LIMIT $start,$per_page";
    12. $result_reviews=mysql_query($reviews_select);
    13.  
    14.  
    15. $avatar_result = mysql_query("SELECT avatar FROM reviews WHERE active = '1'");
    16.  
    17.  
    18. ?>
    19.  
    20. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    21. <html xmlns="http://www.w3.org/1999/xhtml">
    22. <head>
    23. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    24. <title>Отзывы</title>
    25. <link rel="stylesheet" href="index.css" type="text/css" />
    26.  
    27.  
    28. </head>
    29. <body>
    30.  
    31. <div class="a1">
    32.     <div class="a2">
    33.         <div class="a3">
    34.             <div class="a4">
    35.                 Отзывы
    36.             </div>
    37.             <div class="a5">
    38.                 <?php
    39.                     while ($reviewsRow=mysql_fetch_array($result_reviews)) {
    40.                         echo
    41.                         ('
    42.                        <div class="a6">
    43.  
    44.                            <div class="a7">
    45.                            </div>
    46.  
    47.                            <div class="a8">
    48.                                '.$reviewsRow[username].'
    49.                            </div>
    50.                          
    51.                            <div class="a9">
    52.                                <div class="img"><img src="'.$reviewsRow[avatar].'"/></div>
    53.                            </div>
    54.  
    55.                            <div class="a10">
    56.                                '.$reviewsRow[text_message].'
    57.                            </div>
    58.                          
    59.                            <div class="a11">
    60.                                '.$reviewsRow[date_message].'
    61.                            </div>
    62.  
    63.                        </div>
    64.                        '
    65.                     );
    66.                     };
    67.  
    68.                     $reviews_select="SELECT count(*) FROM `reviews`";
    69.                     $result_reviews=mysql_query($reviews_select);
    70.                     $reviews_row=mysql_fetch_row($result_reviews);
    71.                     $total_rows=$reviews_row[0];
    72.                     $num_pages=ceil($total_rows/$per_page);
    73.                     for($i=1;$i<=$num_pages;$i++) {
    74.                         if ($i-1 == $page) {
    75.                         ?>
    76.  
    77.                         <div class="a12">
    78.                             <?php
    79.                                 echo " <div class='active_page'>$i</div>";
    80.                             ?>
    81.  
    82.                             <?php
    83.                             }
    84.                             else {
    85.                             ?>
    86.                            
    87.                             <?php
    88.                                 echo '<div class="not_active_page"><a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a></div> ";
    89.                             ?>
    90.                         </div>
    91.  
    92.                         <?php
    93.                         }
    94.                     }
    95.                 ?>
    96.             </div>
    97. <?php
    98. if ($_SESSION['ses'] == '') {
    99.     echo '
    100.        <div class="a13">
    101.            Вы не можете оставлять отзывы. Войдите.
    102.        </div>
    103.    ';
    104. }
    105. ?>
    106.         </div>
    107.     </div>
    108. </div>
    109. </body>
    110. </html>
    Код (CSS):
    1. .a1 {
    2. width: 960px;
    3. height: auto;
    4. margin: 0 auto;
    5. margin-top: 0px;
    6. }
    7.  
    8. .a2 {
    9. width: 960px;
    10. height: auto;
    11. margin: 0 auto;
    12. margin-top: 0px;
    13. padding-bottom: 20px;
    14. }
    15.  
    16. .a3 {
    17. width: auto;
    18. height: auto;
    19. margin-top: 0px;
    20. margin-left: 0px;
    21. color:#FFFFFF;
    22. font-size: 18px;
    23. letter-spacing: 2px;
    24. border-radius: 0px 0px 10px 10px;
    25. background: #808080;
    26. padding: 0px 20px 50px 20px;
    27. text-align: center;
    28. position: relative;
    29. z-index: 0;
    30. }
    31.  
    32. .a4 {
    33. width: auto;
    34. height: 50px;
    35. margin-left: 0px;
    36. margin-top: 0px;
    37. font-size: 25px;
    38. line-height: 47px;
    39. letter-spacing: 2px;
    40. text-align: center;
    41. }
    42.  
    43. .a5 {
    44. width: 915px;
    45. height: auto;
    46. margin: 0 auto;
    47. margin-top: 20px;
    48. border-radius: 10px;
    49. }
    50.  
    51. .a6 {
    52. width: 930px;
    53. height: auto;
    54. margin-left: -9px;
    55. margin-top: 0px;
    56. border-bottom: 1px solid #444444;
    57. }
    58.  
    59. .a7 {
    60. width: 170px;
    61. height: 150px;
    62. margin-left: 0px;
    63. margin-top: 0px;
    64. }
    65.  
    66. .a8 {
    67. width: 170px;
    68. height: auto;
    69. padding: 5px 5px 5px 5px;
    70. margin-left: -9px;
    71. margin-top: -150px;
    72. color: #FFFFFF;
    73. }
    74.  
    75. .a9 {
    76. width: 100px;
    77. height: 100px;
    78. position: relative;
    79. margin-left: 30px;
    80. margin-top: 0px;
    81. border-radius: 25px;
    82. overflow: hidden;
    83. box-shadow: inset 10px 2px 57px -5px rgba(37,37,37,0.9);
    84. border: 1px solid #FFFFFF;
    85. }
    86.  
    87. .a10 {
    88. width: 720px;
    89. height: auto;
    90. min-height: 130px;
    91. padding: 10px 10px 40px 10px;
    92. margin-left: 170px;
    93. margin-top: -132px;
    94. text-align: left;
    95. color: #FFFFFF;
    96. }
    97.  
    98. .a11 {
    99. width: auto;
    100. height: auto;
    101. margin-left: 700px;
    102. margin-top: 0px;
    103. color: #464646;
    104. padding-bottom: 10px;
    105. }
    106.  
    107. .a12 {
    108. width: 500px;
    109. height: auto;
    110. margin: 0 auto;
    111. margin-top: 20px;
    112. border: 1px solid #FFFFFF;
    113. }
    114.  
    115. .active_page {
    116. width: 35px;
    117. height: 25px;
    118. margin-left: 0px;
    119. margin-top: 0px;
    120. background-color: #ff0000;
    121. color: #FFFFFF;
    122. border: 1px solid #FFFFFF;
    123. border-radius: 5px;
    124. }
    125.  
    126. .not_active_page {
    127. width: 35px;
    128. height: 25px;
    129. margin-left: 45px;
    130. margin-top: 0px;
    131. background-color: #730000;
    132. color: #FFFFFF;
    133. border: 1px solid #FFFFFF;
    134. border-radius: 5px;
    135. }
    136.  
    137. a {
    138. color: #FFFFFF;
    139. }
    140.  
    141. .a13 {
    142. width: auto;
    143. height: auto;
    144. margin: 0px auto;
    145. margin-top: 50px;
    146. background: #444444;
    147. border-radius: 5px;
    148. border: 1px solid #444444;
    149. color: #FFF;
    150. padding: 15px;
    151. text-align: center;
    152. font-size: 20px;
    153. letter-spacing: 2px;
    154. line-height: 30px;
    155. }
    PHP:
    1. <?php
    2. if(!mysql_connect("localhost","cu45045_big","11111"))
    3. {
    4.     die('oops connection problem ! --> '.mysql_error());
    5. }
    6. if(!mysql_select_db("cu45045_big"))
    7. {
    8.     die('oops database selection problem ! --> '.mysql_error());
    9. }
    10.  
    11. ?>
     
  5. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ты на 92 строке выводишь лишний div, который разрывает всю html разметку у пагинации. там же это видно в исходном коде странице, лишний div, можешь посчитать количество открытых div и закрытых, и перепроверить вложенность друг в друга тегов, у тебя там франкинштейн не правильно с клееный :)
     
  6. zlojnaxa

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

    С нами с:
    18 ноя 2015
    Сообщения:
    47
    Симпатии:
    4
    Да вроде 16 открытых и 16 закрытых, переписал чутка для удобства восприятия, удалил "Войдите для отзыва"-проблема осталась:
    PHP:
    1. <?php
    2. header('Content-Type: text/html; charset=utf-8');
    3. include_once "dbconnect.php";
    4. $per_page=1;
    5. if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
    6. $start=abs($page*$per_page);
    7. $reviews_select="SELECT * FROM reviews WHERE active = '1' ORDER BY `date_message` DESC LIMIT $start,$per_page";
    8. $result_reviews=mysql_query($reviews_select);
    9. $avatar_result = mysql_query("SELECT avatar FROM reviews WHERE active = '1'");
    10. ?>
    11.  
    12. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    13. <html xmlns="http://www.w3.org/1999/xhtml">
    14. <head>
    15. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    16. <title>Отзывы</title>
    17. <link rel="stylesheet" href="index.css" type="text/css" />
    18. </head>
    19. <body>
    20.  
    21. <div class="a1">
    22.     <div class="a2">
    23.         <div class="a3">
    24.             <div class="a4">
    25.                 Отзывы
    26.             </div>
    27.             <div class="a5">
    28.                 <?php
    29.                     while ($reviewsRow=mysql_fetch_array($result_reviews)) {
    30.                         echo
    31.                         ('
    32.                        <div class="a6">
    33.                            <div class="a7">
    34.                            </div>
    35.  
    36.                            <div class="a8">
    37.                                '.$reviewsRow[username].'
    38.                            </div>
    39.                        
    40.                            <div class="a9">
    41.                                <div class="img"><img src="'.$reviewsRow[avatar].'"/></div>
    42.                            </div>
    43.  
    44.                            <div class="a10">
    45.                                '.$reviewsRow[text_message].'
    46.                            </div>
    47.                        
    48.                            <div class="a11">
    49.                                '.$reviewsRow[date_message].'
    50.                            </div>
    51.                        </div>
    52.                        '
    53.                     );
    54.                     };
    55.  
    56.                     $reviews_select="SELECT count(*) FROM `reviews`";
    57.                     $result_reviews=mysql_query($reviews_select);
    58.                     $reviews_row=mysql_fetch_row($result_reviews);
    59.                     $total_rows=$reviews_row[0];
    60.                     $num_pages=ceil($total_rows/$per_page);
    61.                     for($i=1;$i<=$num_pages;$i++) {
    62.                         if ($i-1 == $page) {
    63.                         ?>
    64.  
    65.                         <div class="a12">
    66.                             <?php
    67.                                 echo " <div class='active_page'>$i</div>";
    68.                             ?>
    69.  
    70.                             <?php
    71.                             }
    72.                             else {
    73.                             ?>
    74.                          
    75.                             <?php
    76.                                 echo '<div class="not_active_page"><a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a></div> ";
    77.                             ?>
    78.                         </div>
    79.  
    80.                         <?php
    81.                         }
    82.                     }
    83.                 ?>
    84.             </div>
    85.         </div>
    86.     </div>
    87. </div>
    88. </body>
    89. </html>
    Или я может не вижу- ткните носом, но на 92 строке нету div вообще, только если на 91 строке закрывающий div- но он закрывает <div class="a12"> . И со вложенностью тегов тоже вроде все норм. Вот нарыл: http://codepen.io/vineethtr/pen/MYBeyB?editors=1100
    но не пойму как применить.
     
  7. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ага, 91 строка.
    ну я в google chrome запустил поиск по исходному коду, искал <div находит 20 совпадений, потом ищу </div> и уже 25, так что вот так.
    постарайся часов 8 потратить, чтобы выучить весь код, проследить полностью за кодом, посчитай вручную все теги, перепроверь вложенность, так научишься находить ошибки.

    Ещё отладку можешь посмотреть:

    debug
    http://phpfaq.ru/debug
    https://netbeans.org/kb/docs/php/debugging_ru.html
    https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550
    --- Добавлено ---
    Там есть css и html код, нужно его скопировать, не нарушая последовательности и логику вложенности, показывай как пробовал, подскажем где ошибка
    --- Добавлено ---
    У тебя ещё первая строка в исходном коде пустая, это очень плохо, doctype с второй строки может не сработать (это из-за 12 строки), и там XHTML и 1999 год, это 666 если перевернуть, не надо так делать :D

    Используй такой doctype, кодировка через meta по другому объявлена:
    HTML:
    1. <!DOCTYPE html>
    2.     <meta charset="utf-8">
    3.     <title></title>
    4. </head>
    5.  
    6. </body>
    7. </html>