[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
Benmax - 9 avril 2013 à 10:17
A voir également:
- Select max mysql php
- I14 pro max - Accueil - Guide téléphones
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Max maillot avis - Forum Consommation & Internet
- Avis - Football-max.net - Forum Consommation & Internet
9 réponses
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 !
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 !
- 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.
- 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.
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
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 :
Merci pour tout.
$query = "SELECT * FROM liens ORDER BY lien_id DESC LIMIT 20";
Merci pour tout.
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
$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
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 :)
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 :)
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
25 juil. 2005 à 11:26
Autant pour moi la requête est :
$query = "SELECT MAX(lien_id) FROM liens ORDER BY lien_id ASC";
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 !
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 !
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
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?
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?
30 juin 2008 à 10:46
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
30 mars 2009 à 16:46
$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
23 mai 2012 à 00:23
6 juil. 2012 à 23:41
while ($donnees=$reponse->fetch())
{ $no_mission=$donnees['test'];
}
print "no_mission=".$no_mission."<br />";