[PHP/MySQL] Récupérer valeur MAX

Résolu/Fermé
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 - 25 juil. 2005 à 11:05
 Benmax - 9 avril 2013 à 10:17
Bonjour,
J'aimerai retrouver la valeur MAX des ID d'une base de données pour ensuite faire un calcul.
Voilà mon code :
$query = "SELECT MAX(lien_id) FROM liens GROUP BY lien_id ";
			$result = mysql_query ($query) or die ("Exécution de la requête impossible");
			$row = mysql_fetch_assoc($result);
			extract($row);


Lorsque je souhaite afficher $row j'obtiens "Array" alors que je souhaiterai afficher un nombre. Je comprends rien.
Aidez-moi SVP. Merci d'avance. Roukmouth...
A voir également:

9 réponses

Villa Flore
26 mai 2008 à 00:26
RECUPERER LA VALEUR MAX()

Solution proposée par PHP-SCRIPT (impécable, nette et simple)

Exemples de requêtes permettant de récupérer le dernier id dans une table (à n'importe quel moment).

<?php
//--- Récupérer le dernier id dans une table ---//
//--- Les variables ---//
$tb="table";

//--- Une méthode ---//
$req1="select max(id) from $tb";
$res1=mysql_query($req1);
$idmax1=mysql_result($req1,0,"max(id)");
echo $idmax1;

//--- Une deuxième ---//
$req2="select id from $tb order by id desc limit 1";
$res2=mysql_query($req2);
$idmax2=mysql_result($res2,0);
echo $idmax2;
?>

Net et sans bavure !
14
Villa Flore tu as fait une erreur dans ta première méthode au niveau de ton mysql_result.

Tu as mis $req1 au lieu de $res1 dans ton mysql_result. Une fois cette coquille corrigée a marche très bien ;)

Merci pour toutes ces réponses qui nous aident bien lorsqu'on coince ^^

Bull
0
est-ce possible de convertir cette requete en ODBC

$req1="select max(id) from $tb";
$res1=mysql_query($req1);
$idmax1=mysql_result($req1,0,"max(id)");
echo $idmax1;


parce que ce que je code ne fonctionne pas

$query = "SELECT MAX(...colonne...) as statut FROM ...table...";
$result =odbc_exec(...connection...,$query);
$row = odbc_fetch_row($result);
echo $row[0];


le echo ne me retourne rien...

dans lefond ce que je veux c'Est trouver la plus grande valeur dans ma colonne en odbc
0
ssssssda3
0
$reponse=$bdd->query('select max(no_mission) as test from t_cag_fleet where team=\''.$camp.'\'');
while ($donnees=$reponse->fetch())
{ $no_mission=$donnees['test'];

}
print "no_mission=".$no_mission."<br />";
0
- mysql_fetch_assoc est une fonction qui retourne un tableau associatif
- mysql_fetch_row est une fonction qui retourne un tableau avec pointeur

Ce qui veut dire que si tu souhaites utiliser la fonction mysql_fetch_assoc, je te conseille la requête suivante :

$query = "SELECT MAX(statut_1) as statut FROM T_caracteres WHERE table_ ='$table' ";
$result = mysql_query($query) or die ("Exécution de la requête impossible");
$row = mysql_fetch_assoc($result);
echo $row["statut"];

Si tu souhaites utiliser mysql_fetch_row, voici la requête à utiliser :

$query = "SELECT MAX(statut_1) as statut FROM T_caracteres WHERE table_ ='$table' ";
$result = mysql_query($query) or die ("Exécution de la requête impossible");
$row = mysql_fetch_row($result);
echo $row[0];

Désolé je ne suis pas doué pour expliquer, je te conseille d'aller te renseigner sur le site www.php.net.
3
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
25 juil. 2005 à 11:40
C'est bon en fait, j'ai trouvé un moyen totalement différent d'arriver au même résultat :

$query = "SELECT * FROM liens ORDER BY lien_id DESC LIMIT 20";


Merci pour tout.
2
Le meilleur moyen que j'ai découvert, est de traiter toutes les valeur et lui demander la maximum a chaque fois, j'en ai marre que les 9 soient plus grand que les 11 --', alors je vais vous passer un bout de code très utile que j'ai mis au point..

$sqlmax = mysql_query('SELECT * FROM membre order by id asc');
//onselectionne tout de la db
$lastid = "0";
//on défini lastid (celui calculé avec la nouvelle valeur exemple: 1ere boucle: si 1>2
//alors $maxid=2 et $lastid=2, 2ème boucle si 3>2(=$lastid) alors lastid=3 et
//maxid=3, apres il reproduira ca autant de fois que vous aurez de lignes ..
while ($datamax = mysql_fetch_array($sqlmax)){
$id = $datamax['id'];
if($id > $lastid){
$lastid = $id;
$maxid = $id;
}
}
$id = $maxid+1;
//+1 equivaut a une nouvelle valeur ex, pour un nombre de membres, l'id du nouveau sera de +1
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Et j'ai oublié d'indiquer d'où venait ton erreur...

donc ton code était :

$query = "SELECT MAX(statut_1) FROM T_caracteres WHERE table_ ='$table' ";
$result = mysql_query($query) or die ("Exécution de la requête impossible");
$row = mysql_fetch_assoc($result);
echo $row[6];

Il y a 2 erreurs dans ton code :

- Tu utilises mysql_fetch_assoc au lieu de mysql_fetch_row

- Tu utilises l'indexe 6 dans ton echo $row[6] ... Le problème, c'est que dans ton SELECT, tu ne récupère qu'une seule donnée ( MAX(statut_1) ). Donc si tu veux afficher cette donnée, écris plutôt : echo $row[0]

Bon courage pour la suite :)
1
roukmouth Messages postés 26 Date d'inscription mercredi 13 décembre 2000 Statut Membre Dernière intervention 10 mars 2010 2
25 juil. 2005 à 11:26
Autant pour moi la requête est :
$query = "SELECT MAX(lien_id) FROM liens ORDER BY lien_id ASC";
0
Moi qui cherchais compliqué... Tu as trouvé simple. merci beaucoup :)
0
Lorsque je souhaite afficher $row j'obtiens "Array" alors que je souhaiterai afficher un nombre. Je comprends rien.
Aidez-moi SVP. Merci d'avance. Roukmouth...


C'est surement un peu tard mais si ça peut aider quelqu'un dans le futur. Je crois que la question initiale n'a pas été répondue. Si tu place le résultat de cette dernière requête dans $row avec la commande mysql_fetch_assoc($result); il faudra écrire quelque chose comme :

echo $row[0] pour voir le résultat ! Sinon ça écrit ARRAY puisque $row est un tableau de tout les résultats de la requête. le [x] va pointer un index en particulier.

C'est tout !

@+ et bonne chance !
0
sergentegarcia Messages postés 2 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 1 novembre 2007
1 nov. 2007 à 12:53
Pas si simple
Quand j'écris:
$query = "SELECT MAX(statut_1) FROM T_caracteres WHERE table_ ='$table' ";
$result = mysql_query($query) or die ("Exécution de la requête impossible");
$row = mysql_fetch_assoc($result);
echo $row[6];

rien n'est affiché !!!

Où est l'erreur?
-1