Requetes

Résolu/Fermé
TUCS - 1 juil. 2020 à 12:32
 TUCS - 2 juil. 2020 à 10:55
Bonjour,
J'ai un petit soucis avec une requête...
J'ai dans une bdd les colonnes suivantes: cle, numero_partie, et action.
- La clé est unique pour chaque utilisateur
- Le numero de partie c'est un nombre prédéfini en fonction de la partie qui est lancée
- Et action c'est le nombre de coup qu'il a déjà fait dans la partie.

A chaque coup réalisé, une nouvelle ligne est insérée.
Soit un exemple:
cle: --> numero_partie --> action
moi --> 001 --> 1
moi --> 001 --> 2
moi --> 001 --> 3
xyz --> 001 --> 1

Je souhaite faire une requete qui va chercher le grand chiffre de action pour moi et la partie 001. Soit je voudrais ici qu'il me retourne le "3".

J'ai vu la fonction MAX pour mettre dans les requetes SQL mais je n'arrive pas à faire ça...
$query = 'SELECT MAX(action) FROM mastermind WHERE cle="moi" AND numero_partie="001"';
  		$infos = $dbh->query($query)->fetchall();   
        $V =($infos['action']);

Je fais echo $V et rien ne s'affiche.

Pourriez-vous me dire ce qui bloque, je suppose que je l'utilise mal...


Merci d'avance!
Configuration: Windows / Firefox 77.0

2 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
1 juil. 2020 à 12:49
Bonjour,

Ta question concernant la requête SQL, j'ai déplacé dans le bon forum.
( à noter.. qu'une requête ça se teste DIRECTEMENT Dans sa bdd (via phpmyadmin par exemple) AVANT de la mettre en place dans son code php )

Et donc, un truc du genre devrait bien fonctionner
SELECT *
 FROM mastermind
 WHERE cle="moi" 
    AND numero_partie="001"
ORDER BY action DESC
LIMIT 1

1
Mon problème est résolu mais je n'arrive pas à mettre le statut résolu...
Peux-tu le cloturer?
Merci pour la résolution de mon problème, à bientôt,
Guillaume.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
2 juil. 2020 à 10:22
Bonjour,

La solution de jordane45 fonctionne bien mais je voudrais juste expliquer pourquoi ton code d'origine posait problème.
Sur le principe, il est bon. Le problème vient du fait que la colonne MAX(action) n'a pas de nom, elle ne s'appelle pas « action » par défaut, alors que tu cherches
$infos['action']
dans ton php.
On peut nommer les colonnes de résultat comme on le souhaite en utilisant « AS » dans la requête, ce qui, ici, donnerait :
$query = 'SELECT MAX(action) AS action FROM mastermind WHERE cle="moi" AND numero_partie="001"';
$infos = $dbh->query($query)->fetchall();   
$V =($infos['action']);

Xavier
0
Bonjour Xavier,
Merci de l'explication ^^ Une chose de plus à retenir ahah

Merci à toi, à bientôt,
Guillaume
0