Résultat requête vide

Petit nouveau ! | 5 Messages

22 oct. 2005, 19:26

Je cherche à afficher le contenu du champ "parfum" et "parfumeur" de la table "miniature" quand le champ "cote" a la valeur la plus grande.
Après bricolage de débutant, j'arrive à ceci :

Code : Tout sélectionner

<?php mysql_connect($host, $login,$passwd) or die("erreur de connexion au serveur"); mysql_select_db($base) or die("erreur de connexion a la base de donnees"); $result = mysql_query("SELECT parfum, parfumeur FROM miniature WHERE cote ='(SELECT MAX(cote) FROM mcgallery)'"); if (!$result) { echo 'Impossible d\'exécuter la requête : ' . mysql_error(); exit; } $row = mysql_fetch_row($result); echo $row[0]; echo ' - '; echo $row[1]; mysql_close(); ?>
Tout ceci me donne un résultat vide.
Le plus cher : 31.50 € ( - )
Alors que lors de mon premier essai en indiquant la valeur pour cote :

Code : Tout sélectionner

$result = mysql_query("SELECT parfum, parfumeur FROM miniature WHERE cote = '31.50'");
Il m'affiche bien mon résultat :
Le plus cher : 31.50 € (Habit rouge - GUERLAIN)
Je tourne en rond, pouvez vous me donner quelques éclairsissement, capte plus !
Merci :oops:
Modifié en dernier par luc_13 le 23 oct. 2005, 07:01, modifié 1 fois.

Mammouth du PHP | 19672 Messages

22 oct. 2005, 19:36

Attention: quelle version de MySQL : les requêtes imbriquées ne sont supportées qu'à partir de mysql 4.1.++
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1885 Messages

22 oct. 2005, 20:06

Je crois que ceci serait plus adéquat:

Code : Tout sélectionner

SELECT miniature.parfum, miniature.parfumeur FROM miniature, mcgallery WHERE mcgallery.cote=MAX(mcgallery.cote)
Solution à tester ;)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Petit nouveau ! | 5 Messages

22 oct. 2005, 21:01

J'ai fait une petite erreur à force de modifier mon code,
<?php
mysql_connect($host, $login,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($base) or die("erreur de connexion a la base de donnees");
$result = mysql_query("SELECT parfum, parfumeur FROM miniature WHERE cote ='(SELECT MAX(cote) FROM miniature)'");
if (!$result) {
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0];
echo ' - ';
echo $row[1];
mysql_close();
?>
Lire miniature au lieu de mcgallery, :oops: , tous les champs sont dans la même table.

J'ai fait un test avec le code de Xenon_54, en remplaçant mcgallery par miniature, j'ai le message suivant :
Le plus cher : 31.50 € (Impossible d'exécuter la requête : Table/alias: 'mcgallery' non unique
Côté matériel :
EasyPHP 1.7 - PHP 4.3.3 - PhpMyadmin 2.5.3 et MySQL 4.0.15, je vais essayer d'installer plus récent comme l'indique Cyrano et tester les 2 versions de code.

Grand merci pour vos réponses rapides

Mammouth du PHP | 19672 Messages

22 oct. 2005, 21:23

Procède différemment alors:

Code : Tout sélectionner

SELECT parfum, parfumeur FROM miniature ORDER BY cote DESC LIMIT 0,1
On recherche en triant sur la colonne "cote" du plus grand au plus petit et on limite la récupération à la première ligne.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

23 oct. 2005, 07:01

C'est beaucoup plus simple et celà fonctionne parfaitement. Merci.