#php #mysql #angularjs
#php #mysql #angularjs
Вопрос:
Я знаю, как подключать, отображать, удалять, добавлять данные из моей базы данных и отображать все это на моем веб-сайте. Все работает правильно. Я вижу свои результаты на своем веб-сайте и в своей базе данных. Я делаю это с помощью AngularJS, AJAX и PHP, но моя проблема в том, что я не знаю, как использовать MYSQL SUM() в одном из моих столбцов. Например, это моя таблица в mysql, и я хотел бы определить общую сумму столбца money.
id money
1 23
2 345
3 111
Это то, что я получил:
index.html:
………………
<table class="table table-striped">
<tr>
<th>Money</th>
</tr>
<tr>
<td>{{ wcdrates.sumMoney }}</td>
</tr>
</table>
……………..
Я не знаю, должен ли я оставить ng-repeat как есть или использовать что-то другое вместо этого. В любом случае ng-повтор dosent’work. Он показывает мне все результаты из столбца money, а не общую сумму. …………
controller.js
…………………
$http.post('./php/showMoney.php')
.success(function(data) {
$scope.wcdrates = data;
})
.error(function(err) {
$log.error(err);
})
………………..
connectDatabase.php
<?php
define("__HOST__", "127.0.0.1");
define("__USER__", "root");
define("__PASS__", "");
define("__BASE__", "davbaza");
class DB {
private $con = false;
private $data = array();
public function __construct() {
$this->con = new mysqli(__HOST__, __USER__, __PASS__, __BASE__);
if(mysqli_connect_error()) {
die("DB connection failed:" . mysqli_connect_error());
}
}
public function qryPop() {
$sql = "SELECT * FROM `wcdrates` ORDER BY `id` DESC";
$qry = $this->con->query($sql);
if($qry->num_rows > 0) {
while($row = $qry->fetch_object()) {
$this->data[] = $row;
}
} else {
$this->data[] = null;
}
$this->con->close();
}
public function qryFire($sql=null) {
if($sql == null) {
$this->qryPop();
} else {
$this->con->query($sql);
$this->qryPop();
}
//$this->con->close();
return $this->data;
}
}
?>
showMoney.php
<?php
include('connectDatabase.php');
$db = new DB();
$sql = "SELECT SUM(money) as sumMoney FROM wcdrates";
$data = $db->qryFire();
echo json_encode($data);
mysql
CREATE TABLE IF NOT EXISTS `wcdrates` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`money` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
Я понятия не имею, что я должен изменить, чтобы получить то, что я хочу.
Комментарии:
1. если вы используете sql
SUM(money) as sumMoney
, то вы также можете получить к нему доступ с помощью контроллера с именемsumMoney
2. » {{wcdrates.sumMoney}} это не сработало, я сделал, как вы сказали, но все равно ничего, есть идеи?
3. вы после этого?
console.log(data)
success
Если у вас есть, поделитесь со мной!4. вот что я получил: массив [ Объект, объект, объект, объект]
5. запустите это
angular.forEach(data,function(d){ console.log(d) })
и посмотрите, дайте мне результат!
Ответ №1:
измените qryPop
в своем коде на следующий код.
$sql = "SELECT id,money , SUM(money) as sumMoney FROM `wcdrates` ORDER BY `id` DESC";
Надеюсь, вы получите ответ