как правильно считать (*) в php - PullRequest
0 голосов
/ 04 июля 2019

Я попытался count() данных из базы данных с помощью php, но он не показывает мне полные данные, но показывает данные.

вот как я считаю

$query = "SELECT 
        mitra.*,         
        user.username, 
        user.privilege, 
        user.name 
    FROM 
        mitra
    INNER JOIN 
        user ON mitra.id_user = user.id "

$result = $connection->query($query);

if ($result->num_rows > 0) {
    foreach ($result as $row) :
        $id = "" . $row["id"] . "";
        $total = "" . $row["total_puas"] . "";
        $privilege = "" . $row["privilege"] . "";

        if ($privilege == 2) :
            $calculate = $total / count($id);
            var_dump(count($id));
        endif;
    endforeach;
}

===================
=   id =  total   =
=  1   =   45.84  =
=  2   =   75.45  =
=  3   =   34.54  =
===================

когда я var_dumb это показывает int(1)int(1)int(1) не int(3), что я хотел.

на самом деле я хочу сосчитать $calculate с данными в $total, которые должны быть там, есть число с плавающей запятой, а сумма из $total, которую я хочу разделить на count id

, равнаесть какое-то решение, как рассчитать сумму от $total и можно разделить на count $id, которая должна быть 3 ?.пожалуйста помогите

то, что я действительно пытаюсь сделать из этого примера таблицы, похоже на 45.84 + 75.45 + 34.54 / 3

Ответы [ 3 ]

3 голосов
/ 04 июля 2019

Похоже, вы хотите COUNT() с GROUP BY в вашем запросе. Выполнение count($id) в PHP всегда даст один, так как это не массив значений.

$query = "SELECT COUNT(id) as cnt, id, total_puas
          FROM table
          GROUP BY id";

$result = $connection->query($query);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $calculate = $row["total_puas"] / $row['cnt'];
        echo $row['id']." has a count of ".$row['cnt'].", a total of ".$row['total_puas']." and calculated to ".$calculate."<br />\n";
    }
}

Исходя из вашего обновленного вопроса, вывод становится немного более ясным. Основываясь на выходных данных и желаемом результате, вы хотите вычислить сумму всех total_paus, деленную на количество строк. Вы можете сделать это непосредственно в одном запросе, как это

$query = "SELECT SUM(total_puas) / COUNT(u.id) as total
          FROM mitra AS m
          INNER JOIN user AS u
              ON mitra.id_user = user.id";

$result = $connection->query($query);
$row = $result->fetch_assoc();
$total = $row['total'];
echo $total;
2 голосов
/ 04 июля 2019

Вы можете попробовать этот код:

<?php
$i = 0;
$total =0.00;
if ($result->num_rows > 0) {
    while ($row = $result->fetch_array()):
       if ($row["privilege"] == 2) :
          $total = $total + $row["total"];
          $i++;
       endif;
    endwhile;
    echo $total."<br>";
    echo $i."<br>";
    echo  $calculate = $total / $i;
}

?>

output
=====================================
 $total = 155.83;
 $i = 3;
 $calculate = $total/$i;
 $ans = 51.943333333333;
=====================================
0 голосов
/ 04 июля 2019

Вы можете попробовать этот код:

$query = "SELECT * FROM table"
$result = $connection->query($query);

if ($result->num_rows > 0) {
    $total = 0.0;
    foreach ($result as $row) :
        $id = "" . $row["id"] . "";
        $total = $total + $row['total'];
    endforeach;
    $calculate = $total / $result->num_rows;
    echo $total.<br>;
    echo $calclulate;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...