За последние 24 часа нас посетили 19439 программистов и 1607 роботов. Сейчас ищут 910 программистов ...

Не могу понять (вывод колличества)

Тема в разделе "PHP для новичков", создана пользователем AccessDenied, 13 янв 2010.

  1. AccessDenied

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

    С нами с:
    27 янв 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Беларусь
    На странице в цикле выводятся записи из бд, при нажатии на ссылку "читать" в get передается id строки и показывается полный текст, есть возможность добавления комментариев.
    HTML:
    1.         <form name='form1' method='post' action='./module/comment/add.php' align=center>
    2.         <label>Имя:<br>
    3.         <input type='text' name='name'>
    4.         </label>
    5.         <br>
    6.         <label>Комментарий:<br>
    7.         <textarea name='com_text' cols='40' rows='10'>
    8.         </textarea>
    9.         </label>
    10.         <br><br>
    11.         <input name='table' type='hidden' value='$table'>
    12.         <input name='id_data' type='hidden' value='$nomer'>
    13.         <input name='' type='submit' value='Добавить' class='old_button'>
    14.         </form>
    в первом скрытом поле передается имя таблицы, куда добавлять комментарии, во втором скрытом поле передается id записи, которую комментировали.

    На странице вывода кратких версий записей, возле каждой записи в инклюде висит такой код:

    PHP:
    1. <?
    2.  
    3.  
    4. mysql_connect($hostname, $username, $password) or die ("Невозможно установить соединение с базой данных");
    5.  
    6. $com = "SELECT id FROM comments_$table ORDER BY id DESС";
    7. $com_res = mysql_query($com) or die(mysql_error());
    8. $comment = mysql_fetch_assoc($com_res);
    9.  
    10. if($comment['id'] == 0) {
    11.     $comment['id'] = 0;
    12. }
    13.  
    14. echo "<p><a href='$url".$row['id']."'>Комментарии (".$comment['id'].")</a></p>";
    15. ?>
    естественно он выводит возле каждой записи одно и то же число (это я заметил позже =\). Второй хидден в форме добавления комментариев я сделал после того, как понял что он выводит везде одно и то же. Но никак не могу понять, как сделать так, чтобы возле каждой записи он выводил именно то колличество комментариев, которое сделано в ней, хоть и понял, что все-таки второй хидден для этого нужен, не могу его никак применить.
     
  2. ATI

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

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Эм, почти ничего не понял из прочитанного.
    Просто при комменте поста добавляй +1 к комментам (допустим к полю count_comments), а потом в цикле выводи записи и подставляй $comment['count_comments'];
     
  3. AccessDenied

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

    С нами с:
    27 янв 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Беларусь
    Хорошая идея, спасибо, так и сделаю :)
     
  4. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    вот это
    PHP:
    1.  if($comment['id'] == 0) {
    2.      $comment['id'] = 0;
    3.  }
    просто гениально!

    Зачем? Даже два "зачем?"
    1. зачем у тебя их несколько разных?
    2. зачем оно нужно на стороне пользователя, пусть даже и в hidden?

    по большому счету количество комментариев, это количество строк, которые вернул твой запрос? Тогда копай mysql_num_rows

    тебе не только второй, тебе и первый hidden не нужен на самом деле.
     
  5. AccessDenied

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

    С нами с:
    27 янв 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Беларусь
    первый хидден передает имя таблицы в которую и из которой надо выводить комментарии, имя таблицы выглядит так comments_имя. Но таблицы делят комментарии по категориям, а не по записям, они скидывают все в одну кучу и для того, чтобы понять какой комментарий для какой записи, есть второй хидден, он передает id записи, которую комментируют и потом можно понять, какая запись сколько раз прокомментирована.
    PHP:
    1.  
    2. <?
    3.  if($comment['id'] == 0) {
    4.      $comment['id'] = 0;
    5.   }
    6. ?>
    7.  
    Когда в таблице 0 записей, оно не отображает даже нуля, потому что я упорядочил id по desc и вывел последнюю цифру.
     
  6. AccessDenied

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

    С нами с:
    27 янв 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Беларусь
    PHP:
    1. <?
    2. mysql_connect($hostname, $username, $password) or die ("Невозможно установить соединение с базой данных");
    3.  
    4. $com = mysql_query("SELECT * FROM comments_$table WHERE id_data='$row[id]'");
    5. $comment = mysql_num_rows($com);
    6.  
    7.  
    8. echo "<p><a href='$url".$row['id']."'>Комментарии (".$comment.")</a></p>";
    9. ?>
    karakh спасибо за подсказку в виде mysql_num_rows
     
  7. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Вот скажи, зачем у пользователя в браузере информация об имени таблицы? Неужели для того, чтобы передать что-то из одной части php-скрипта в другую часть php-скрипта нужно прогонять это через юзера? А потом ты пихаешь пришедшее от пользователя значение в запрос, в качестве части имени таблицы в бд.

    И да, понять сколько раз прокомментирована какая запись тоже можно не передавая ее id браузеру.
     
  8. AccessDenied

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

    С нами с:
    27 янв 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Беларусь
    Есть предложения?