Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

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

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

 

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

Featured Replies

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

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

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

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.