За последние 24 часа нас посетили 17879 программистов и 1653 робота. Сейчас ищут 892 программиста ...

подсчет строк с определенным id

Тема в разделе "MySQL", создана пользователем musica, 9 окт 2010.

  1. musica

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

    С нами с:
    24 сен 2010
    Сообщения:
    46
    Симпатии:
    0
    $result = mysql_query("SELECT COUNT(*) FROM `comments` WHERE id=$get", $readcomm);
    $total = mysql_result($result, 0);
    echo "news $get has $total comments";

    не работает. полагаю проблемма в WHERE id=$get, хотя на первый взгляд так логично.
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    $get откуда берется?

    Перед этим участком сделай
    Код (Text):
    1. echo <pre>;
    2. print_r($get);
    3. die();
    Это выведет чему у тебя $get равна
     
  3. musica

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

    С нами с:
    24 сен 2010
    Сообщения:
    46
    Симпатии:
    0
    да get это из _GET )))

    короче

    если делать так то работает, но работает неверно. у меня 5 записей с данным id, а выводит 7

    $result = mysql_query("SELECT COUNT(id=$get) FROM `comments`", $readcomm);
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    конечно, потому что твой запрос - бред.

    Чему $get равна ты вывел?
     
  5. musica

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

    С нами с:
    24 сен 2010
    Сообщения:
    46
    Симпатии:
    0
    Код (Text):
    1. <?
    2. $get=$_GET['id'];
    3.  
    4. $readcomm = mysql_connect("localhost", "test", "admin") or die("Cannot connect ot the databse" );
    5.  
    6. mysql_select_db('test', $readcomm) or die ('Cannot select the database');
    7.  
    8. $result = mysql_query("SELECT COUNT(id=$get) FROM `comments`", $readcomm);
    9.  
    10. $total = mysql_result($result, 0);
    11.  
    12. echo "news $get has $total comments";
    13.  
    14. mysql_close($readcomm);
    15.  
    16. ?>
    count.php?id=5
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Код (Text):
    1. $result = mysql_query("SELECT COUNT(*) FROM `comments` WHERE id = '" . $get . "'", $readcomm);
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    И $_GET['id'] надо перед тем как отдавать в запрос обрабатывать.

    Если точно знаешь что там будет число можно так

    Код (Text):
    1. $get = intval($_GET['id']);
     
  8. musica

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

    С нами с:
    24 сен 2010
    Сообщения:
    46
    Симпатии:
    0
    пишет что 0, возможно в струкутре дб что то не так.
    вообще это комментарии к новостям, id новости соотв id комментария к ним. Вывод работает нормально, а вот подсчет что то косячит
     
  9. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Поле по которому ищем точно называется id?
    Или допустим - news_id ?
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Вообще таблиц надо 2.

    1) news

    в ней поля - id, text

    2) comments

    в ней поля id, new_id, text

    В поле id - id самого коммента
    В поле new_id - id новости
     
  11. musica

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

    С нами с:
    24 сен 2010
    Сообщения:
    46
    Симпатии:
    0
    все, заработало:) поле id было лишь порядковым номер. Номер новости, по которому идет отбор - postid

    забавно, но и вариант

    $result = mysql_query("SELECT COUNT(*) FROM `comments` WHERE postid=$get", $readcomm);

    тоже работает

    но все равно огромное спасибо вам, должник навечно)

    p.s. да у меня 2 табл и есть, первая с новостями вторая с комментами к ним, и между ними свзяб через вот эти коварные POSTID
     
  12. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Пожалуйста. Этот вариант конечно сработает, потому что переменная в двойных кавычках. Т.е. в запрос подставляется её значение. С цифрами такое прокатит, но вот если будешь текст так вставлять - не получится.
    Текст в запросах должен быть в кавычках, потому лучше сразу используй мой вариант. Он универсальный
     
  13. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Они не коварные, это обычная связь "один-ко-многим"

    Одна новость - много комментов