Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Румен Радев

Проблем с преброяване и извеждането на резултати (PHP PDO MYSQL)

Препоръчан отговор


Здравейте. Натъкнах се на следния проблем. Имам база данни в която имам таблица "коментари", както имам и таблица "продукти".
Сяла на коментарите е този

CREATE TABLE `comments` (
`id` int(11) NOT NULL,
/* nid е айди-то на новината*/
`nid` int(11) NOT NULL,
`c_title` varchar(70) NOT NULL,
`c_author` varchar(50) NOT NULL,
`comment` text NOT NULL,
`dateAdded` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;[/CODE]

Опитах много начини но никой от тях не сработи както очаквах и исках. Искам да сметне броя на коментарите за всека една новина и да ги покажа. Как да стане това ?
Пробвах с rowCount(); fetch(); fetchAll(); PDO::FETCH_ASSOC; но нищо от тях не сработи изкарва ми числа които не отговарят на броя на коментарите или ми показва броя на всички.
Това е последното което пробвах
 

<?php
$query = "SELECT nid, COUNT(comment) FROM comments GROUP BY nid";
$stmt = $db->query($query);
$stmt->execute();
$num= $stmt->rowCount();
echo $num;

//Иначе пробвах и с другите посочени по-горе със същата зявка и с други.

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 2 часа, Румен Радев написа:

$query = "SELECT nid, COUNT(comment) FROM comments GROUP BY nid

Тук ти е грешката  тази заявка трябва да е по друг начин

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 17 минути, petie1 написа:

Тук ти е грешката  тази заявка трябва да е по друг начин

Как трябва да е заявката по-точно , защото аз пробвах с различни. Последно пробвах с
И изобщо как да сформирам и самия php код ако този не е правилен?

SELECT count(*) FROM comments

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

https://www.w3resource.com/sql/aggregate-functions/count-function.php

Ето как става

А ето и кода с РНР


<?php
$con = mysql_connect("server.com","user","pswd");
if (!$con) {
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("db", $con);

$result = mysql_query("select count(1) FROM comments");
$row = mysql_fetch_array($result);

$total = $row[0];
echo "Total rows: " . $total;

mysql_close($con);
?>

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 53 минути, petie1 написа:

https://www.w3resource.com/sql/aggregate-functions/count-function.php

Ето как става

А ето и кода с РНР



<?php
$con = mysql_connect("server.com","user","pswd");
if (!$con) {
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("db", $con);

$result = mysql_query("select count(1) FROM comments");
$row = mysql_fetch_array($result);

$total = $row[0];
echo "Total rows: " . $total;

mysql_close($con);
?>

 

Къде е общото м/у mysql и pdo (каквато използвам аз)особено с остарелия mysql ? Гледайки този пример и опитвайки с тази логика отново не получавам резултата който искам.
Не знам къде ми е грешката и не мога да се справя. Взимам count(comment) от коментарите групирам ги по айди на новината и резултата е или броя на всички или някакъв брой на някои редове различни от този който искам.


Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 8 минути, Румен Радев написа:

Къде е общото м/у mysql и pdo (каквато използвам аз)особено с остарелия mysql ? Гледайки този пример и опитвайки с тази логика отново не получавам резултата който искам.
Не знам къде ми е грешката и не мога да се справя. Взимам count(comment) от коментарите групирам ги по айди на новината и резултата е или броя на всички или някакъв брой на някои редове различни от този който искам.

Ето ви нагледен пример

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Използвай WHERE...

<?php

$articleId = 1;
$query = "SELECT COUNT(*) FROM comments WHERE nid=$articleId";

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте. Благодаря за отзивите и най вече на @petie1. След видео урока разбрах къде ми е грешката и какво толкова пропусках в моя код. От дни правя този проект и вече човек започва да бърка и да забравя какво да прави. Сега ще обясня какво направих,че се получи, благодарение на видео урока.
След като искам да добавя коментар към даден пост , заявката ми трябва да бъде така:
 

$query = "SELECT count(comment) AS total FROM comments WHERE nid=".$id."";
$stmt = $db->prepare($query);
$stmt->execute();
$num = $stmt->fetch(PDO::FETCH_ASSOC);
$total = $num['total'];

echo $total;

Като при мен nid е айди-то на поста в базата данни , а $id е айдито на поста в който публикувам коментара и в който преброявам броя на коментарите за конкретния пост. Дълго време се чудих защо не става , какво пропускам, след като съм го правил преди , но така и не разбрах до днес. Отново ви благодаря и най-вече на @petie1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

За нищо, пак заповядайте

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Добави ново...