Additionner des valeurs d'un même id

Codeur61

Codeur61 Le 12 janvier 2019 à 13:18 (Édité le 25 janvier 2019 à 17:54)

Bonjour, 
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

Codeur61 Le 13 janvier 2019 à 14:40

Bonjour,

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

Profil introuvable Le 13 janvier 2019 à 16:14

Hello @Codeur61,

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

Codeur61 Le 13 janvier 2019 à 17:44

Salut, 
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

Clouder Le 15 janvier 2019 à 14:02

Je voudrais bien d'aider mais sérieusement j'ai rien compris à ton explication ....

Que veux-tu avoir comme résultat ?
Codeur61

Codeur61 Le 17 janvier 2019 à 20:32

Salut, 
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

Balatharas Le 18 janvier 2019 à 19:47

Le plus simple serait de nous envoyer un screen de la table concernée parce que je comprend pas tout non plus mdr
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

Codeur61 Le 18 janvier 2019 à 22:41 (Édité le 18 janvier 2019 à 22:42)

Salut, 
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

Balatharas Le 19 janvier 2019 à 00:00

Alors faut savoir x) tu cherches a afficher quoi au final ? Maintenant qu’on a la table ça va être plus simple. La je suis téléphone donc je pourrais manipuler du code peut-être demain. Sinon au niveau du echo $t valide, ca te donne quoi ? Et que te manque t il ? Tu peux aussi essayer de modifier le code par ci par la, d’avancer à tâtons.
Codeur61

Codeur61 Le 26 janvier 2019 à 17:25

Salut, 
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

Balatharas Le 28 janvier 2019 à 21:49

Ta colonne « valide » est censée contenir quoi
On va avancer étapes par étapes 
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte