Requête SQL avec php besoin d'aide

Fermé
am88 Messages postés 9 Date d'inscription lundi 30 avril 2012 Statut Membre Dernière intervention 28 mai 2012 - Modifié par am88 le 28/05/2012 à 21:13
donniecent Messages postés 19 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 1 juin 2012 - 31 mai 2012 à 09:15
Bonjour,

j'ai un problème avec la requête SQL j'aimerai avoir votre aide

la table operation suivante :

id_op ----- date_op ------------ id_articl ---- prix ----- duree
1 --------- 2012-04-10 -------- 512 -------- 2100 ------ 5
2 --------- 2012-04-17 -------- 324 -------- 900 ------- 2
3 --------- 2012-04-23 -------- 214 -------- 8900 ----- 48
4 --------- 2012-04-27 -------- 512 -------- 1100 ----- 36
5 --------- 2012-05-27 -------- 512 -------- 850 ------ 20

je veut sélectionner le prix et la duree WHERE date_op = max

voici le code php
<?php
$connexion = mysql_connect('localhost','root','','maintenance');

if(mysql_error($connexion)){
die('Ereur de connexion : '.mysql_error());
}

$sql= "SELECT MAX(date_op) AS date FROM maintenance.operation";

if($resultats = mysql_query($sql, $connexion)){
$ligne = mysql_fetch_assoc($resultats);
$date_max = $ligne['date'];
}
echo $date_max;
//ici j'ai la date qui s'affiche sont problème le problème c'est quand j'utilise cette variable dans le deuxième SELECT comme suit :

$sql = "SELECT id_op, prix, duree FROM maintenance.operation WHERE date_op = $date_max ";

if($resultats = mysql_query($sql, $connexion)){
$ligne = mysql_fetch_assoc($resultats);
$prix_op = $ligne['prix'];
$duree_op = $ligne['duree'];
}
?>

y-a-t-il une autre façon pour avoir le même résultat

j'ai essayer la même chose en remplaçant date_op par id_op et sa a marcher sont problème

j'aimerer aussi faire des traitement comme :
2012-04-01'<date_op<'2012-05-01 (pour le dessin des graphe)
si possible des lien utile sure comment faire ces traitement

2 réponses

donniecent Messages postés 19 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 1 juin 2012 27
Modifié par donniecent le 30/05/2012 à 22:37
Bonsoir personnellement je code en PDO, mais il me semble que vous n'avez pas besoin de deux requêtes pour récupérer le prix et la durée de l'entrée ayant la date la plus ancienne :

Voici le code que je proposes :

<?php
$connexion = mysql_connect('localhost','root','','maintenance');

if(mysql_error($connexion)){
die('Ereur de connexion : '.mysql_error());
}

$sql= "SELECT id_op, date_op, prix, duree FROM operation ORDER by id_op LIMIT 0, 1";/** cette requête vous récupère toutes les informations concernantl'article le plus ancien.**/

if($resultats = mysql_query($sql, $connexion)){

$prix = $ligne['prix'];
$duree = $ligne['duree'];

//AFFICHAGE DU PRIX ET DE LA DURÉE DE VOTRE ARTICLE LE PLUS ANCIEN

echo 'Prix = '.$prix.'<br/>';
echo 'Durée = '.$duree.'';

}

?>

Admin de : http://b2geek.com à vôtre service.

b2geek.com | Site communautaire d'entraide domaine informatique, jeux vidéos, et bien plus
1
donniecent Messages postés 19 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 1 juin 2012 27
31 mai 2012 à 09:15
Juste une petite faute de frappe (que je n'arrives pas a modifier) , j'ai oublié deux apostrophes au niveau des actions suivantes :

echo 'Prix = '.$prix.'<br/>';
echo 'Durée = '.$duree.'';

Veuillez juste remplacer cette partie par :

echo 'Prix = ''.$prix.'<br/>';
echo 'Durée = ''.$duree.'';
1