Bonjour,
Je vous expose mon problème, j'ai dans ma base de donné ceci:
https://gyazo.com/da54263c0c013fa079f5271a02a895d0
Je souhaiterais additionner les valeurs de bankacc, du style (en reprenant l'exemple):
1351512163 + 258 = 1351512421
Voici mon code actuel:
<?php
$req_selectBank = $connexion->query('SELECT * FROM players');
$nbr_selectBank = $req_selectBank->rowCount();
if($nbr_selectBank > 0) {
while($selectBank = $req_selectBank->fetch()) {
echo $selectBank['bankacc'];
}
}
?>
Mais cela me retourne les chiffres de chacun a la suite comme ceci: 1351512163258
Comment faire ? Merci d'avance
Enfaite je réexplique je veut que les valeurs s'additionne et non pas se mettre a coté, genre si dans la db j'ai 1 et 1 je veut que le resultat soit 2 et non 11
Bonjour,
Une autre solution (moins optimale que celle de ToToSe) qui reprend la boucle while :
<?php
$req_selectBank = $connexion->query('SELECT * FROM players');
$nbr_selectBank = $req_selectBank->rowCount();
if($nbr_selectBank > 0) {
$somme = 0; // On défini ici un accumulateur avec lequel on peut faire nos additions
while($selectBank = $req_selectBank->fetch()) {
$somme+= $selectBank['bankacc']; // Par ex, au premier tout, il contient 0 + 1351512163 , au second 1351512163 + 258, et ainsi de suite selon tes champs en base
}
echo $somme;
}
?>
Yop!
Tu peu faire la somme des bankacc directement dans ta requette SQL ;)
<?php
$req_selectBank = $connexion->query('SELECT *, SUM(bankacc) somme FROM players');
$banks = $req_selectBank->fetchAll(PDO::FETCH_ASSOC);
// $banks[0]['somme'] = > Somme de tout les bankacc
pour naviguer dans ton tableau de donnée :
foreach($banks as $value) {
echo $banks[_column_];
}
?>
Je pense que la réponse de sudovim et la meilleure. Avant de voir sa réponse, je pensais à une fonction qu'on pourrait réutiliser.
Je trouverais ça cool un truc du genre :
function sum(array $array, Callable $lambda)
{
$sum = 0;
foreach ($array as $element) {
$sum += $lambda($element);
}
return $sum;
}
$req_selectBank = $connexion->query('SELECT * FROM players');
$banksTableau = $req_selectBank->fetchAll(PDO::FETCH_ASSOC);
$sommeTableau = sum($banks, function ($bank) { return $bank['bankacc']; });
$banksObjet = $req_selectBank->fetchAll(PDO::FETCH_OBJ);
$sommeObjet = sum($banksObj, function ($bank) { return $bank->bankacc; });
// Je vous laisse deviner les autres possibilités. :-)
// Si on ajouterait une couche à PDO ou MySQLi...
$somme = $mesBanks->sum(function ($bank) { return $bank->bankacc; });
Syntaxiquement, c'est pas super en PHP, mais Java et C# ont adoptés une syntaxe plutôt intéressente.
int sommeDesElements = monTableau.sum(element => element.ElementÀCompter);