Additionner des valeurs d'un même id
- Accueil
- Forum
- Programmation
- PHP
- Additionner des valeurs d'un même id
Codeur61 Le 12 janvier 2019 à 13:18 (Édité le 25 janvier 2019 à 17:54)
Je me tourne vers vous n'ayant pas trouvé sur Google ce que je recherchais..
Je n'arrive pas à donner une variable aux données appartenant à un même id pour ensuite les additionner et les afficher.
Je pensais à faire un SELECT de ma table 'message', et sélectionner tout les champs du même 'id' qui sont situé dans la colonne 'attente'.
Ensuite, je les affiche avec un echo.
Je pense que je devrais stocker dans ma table 'membres' cette fois ci, le total de 'attente' pour chaque id, et l'afficher (le total), plutôt que de faire le calcul sans avoir de vue d'ensemble sur mon PMA.
Je ne sais pas comment formuler cela. Il me manque quelques petites infos je pense.
Merci de votre aide.
Codeur61 Le 13 janvier 2019 à 14:40 (Édité le 1 janvier 1970 à 01:00)
Si quelqu'un pourrait m'aider ... J'ai essayé un code, sans succès.
Je contient dans ma colonne 'valide' en int, des nombres au dessus de 0.
Je fais la liaison entre "id" qui est connecté (qu'on trouve dans la table 'membres') et "id_destinataire1" qui doit correspondre au même que "id".
Maintenant, je select tout les nombre situés dans "valide" (dans ma table messages) et je les additionne.
Ensuite je les affiche avec
<?php echo $totaltokens['valide']; ?>
Mon code :
<?php
if(isset($_SESSION['id']) AND $_SESSION['id'] > 0)
{
$getid = intval($_SESSION['id']);
$requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
$requser->execute(array($getid));
$userinfo = $requser ->fetch();
$reqtokens = $bdd->prepare('SELECT * FROM messages WHERE id_destinataire1 = ?');
$reqtokens->execute([$userinfo['id']]);
$totaltokens = $reqtokens->fetch();
$reqtokensvalide = $bdd->prepare('SELECT * FROM messages WHERE valide = ?');
$reqtokensvalide->execute([$userinfo['id']]);
$totaltokensvalide = $reqtokensvalide->rowCount();
?>
Problème / ! \
Ca affiche bien un nombre qui est contenu dans "valide", mais aucune addition n'est faite.
Parfois, j'ai la valeur 30, 40,20... dans ma colonne "valide" mais il m'affiche une seul valeur parmi les trois. Alors que je souhaite les additionner entre elles.
Merci de votre aide,
cordialement
Profil introuvable Le 13 janvier 2019 à 16:14 (Édité le 1 janvier 1970 à 01:00)
Tout d'abord ton code, dis-moi, a-t-il un rapport avec le tutoriel PayPal de Boris ? Parce que les variables me disent quelques choses après avoir vu le topic de @babawana. Sinon si ça n'a rien à voir, est-ce qu'il s'agit d'un formulaire qui ajoute les données dans une base de données ? Ou c'est un script qui le fait automatiquement ?
Codeur61 Le 13 janvier 2019 à 17:44 (Édité le 1 janvier 1970 à 01:00)
Aucun rapport avec les tutoriel paypal il me semble 😉 Mais babawana, c'est moi 😋 je ne me souvenais plus de mon compte il y a un ptit temps, et maintenant, j'utilise les deux 😋
Non, ce code n'est pas un formulaire, je veux juste qu'il lise les informations situés dans ma bdd pour un même utilisateur, et qu'il les additionnes.
(pour ensuite les afficher)
Merci
Clouder Le 15 janvier 2019 à 14:02 (Édité le 1 janvier 1970 à 01:00)
Que veux-tu avoir comme résultat ?
Codeur61 Le 17 janvier 2019 à 20:32 (Édité le 1 janvier 1970 à 01:00)
Je veux récupérer des infos de la colonne 'valide' situées dans ma table 'messages'.
Ensuite, je veux additionner toutes les valeurs situées dans 'valides' pour l'id qui est connecté, et les afficher avec un echo.
Crdlt
Balatharas Le 18 janvier 2019 à 19:47 (Édité le 1 janvier 1970 à 01:00)
Sinon, si j'ai bien compris, tu as dans une de tes tables une colonne 'attente' qui contient un id qui peut être le même pour plusieurs lignes.
Tu souhaites toutes les récupérer pour les additionner et obtenir un total donc.
Dans ce cas la le code de ton deuxième message est sur la bonne voie (selon moi mdr)
Mais en fait comme il y a plusieurs lignes trouvées, il ne t'en donne qu'une car le code ne s'exécute qu'une fois
Dans ce cas la il faut utiliser la boucle while pour que ton code s'exécute autant de fois que tu as de ligne
$reqtokens = $bdd->prepare('SELECT * FROM messages WHERE id_destinataire1 = ?');
$reqtokens->execute([$userinfo['id']]);
$totaltokens = $reqtokens->fetch();
$reqtokensvalide = $bdd->prepare('SELECT * FROM messages WHERE valide = ?');
$reqtokensvalide->execute([$userinfo['id']]);
$totaltokensvalide = $reqtokensvalide->rowCount();
while($t = $reqtokensvalide->fetch()) {
echo $t['valide'].'; '; // echo simple
}
Je sais pas si c'est ce que tu veux, si c'est pas le cas ça devrait t'aider quand même (je connais pas du tout ton code donc bon) Codeur61 Le 18 janvier 2019 à 22:41 (Édité le 18 janvier 2019 à 22:42)
C'est exactement ce que je comptais faire....
J'envoi ma table "membres" et "messages".
Messages :
Membres :
Code
<?php
session_start();
$bdd = new PDO('mysql:host=185.98.131.94;dbname=gagne1089909' , 'gagne1089909', 'highte06062004');
if(isset($_SESSION['id']) AND $_SESSION['id'] > 0)
{
$getid = intval($_SESSION['id']);
$requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
$requser->execute(array($getid));
$userinfo = $requser ->fetch();
$reqtokens = $bdd->prepare('SELECT * FROM messages WHERE id_destinataire1 = ?');
$reqtokens->execute([$userinfo['id']]);
$totaltokens = $reqtokens->fetch();
$reqtokensvalide = $bdd->prepare('SELECT * FROM messages WHERE valide = ?');
$reqtokensvalide->execute([$userinfo['id']]);
$totaltokensvalide = $reqtokensvalide->rowCount();
while($t = $reqtokensvalide->fetch()) {
echo $t['valide'].'; '; // echo simple
}
print_r($totaltokensvalide);
?>
J'ai fait un print_R de $totaltokensvalide, mais cela m'affiche 0, alors que pour mon id_destinataire1, dans "valide", il y a 45..
Je cherche le problème, mais ça me parait complexe 😋
Bien cordialement,
Bonne soirée
Balatharas Le 19 janvier 2019 à 00:00 (Édité le 1 janvier 1970 à 01:00)
Codeur61 Le 26 janvier 2019 à 17:25 (Édité le 1 janvier 1970 à 01:00)
Je répond assez tard, j'avais beaucoup de travail ;(
Cela ne m'affiche rien pour le $t valide, je m'y suis remit depuis se matin, toujours rien.
Cordialement
Balatharas Le 28 janvier 2019 à 21:49 (Édité le 1 janvier 1970 à 01:00)
On va avancer étapes par étapes