Page 1 sur 1
PHP - Requête MySQL
Posté : 15 janv. 2011, 13:17
par Geo3304
Bonjour à tous;
Alors j'ai une petit question ou je bloque, je vous explique.
Coté MySQL tout d'abord;
J'ai une table MySQL composé de la sorte ;
id - saison - datedeb - datefin - prix - prix2
Le champ saison est soit 1 soit 2.
Coté PHP;
Je souhaiterais dans ma page prix deux tableaux; un pour la saison 0 avec 'prix' et un pour la saison 1 avec 'prix2'
Pour ce faire j'ai fait ma requête SQL, implanté un "while", et tout va très bien SAUF que je n'arrive pas à faire mes deux tableaux.
Voila la structure;
Si saison = 0 , on affiche while premier tableau avec 'prix', et si saison = 1 , on affiche le deuxième avec 'prix2', sinon, erreur.
Donc ma question ; comment d'un point de vu SQL/PHP, mettre en place ce " si saison=0 " ?
Désolé j'ai essayé de simplifier au maximum,
Merci d'avance,
GeoGe.
Re: PHP - Requête MySQL
Posté : 15 janv. 2011, 14:26
par xTG
Tout d'abord il faut ordonner tes données dans le retour de la requête afin de pouvoir avoir deux groupes.
La fonction SQL "GROUP BY" est faite pour cela :
SELECT ......
FROM table
GROUP BY saison;
Cela va te donner quelque chose de la sorte :
id - saison - datedeb - datefin - prix - prix2
x - 1 - x - x - x - x
y - 1 - y - y - y - y
z - 2 - z - z - z - z
Ensuite partant de ce principe il faut dans ta boucle détecter le changement de saison entre l'enregistrement précédent et l'actuel.
echo "<table>" // début tableau saison = 1
$saison = 1; // saison actuelle à afficher
while( $row = ...)
{
if( $row['saison'] != $saison ) // détection du changement de saison
{
echo "</table>"; // fermeture tableau saison = $saison
echo "<table>"; // ouverture tableau saison suivante
$saison = $row['saison']; // mise à jour de la saison
}
echo "<tr><td>...</td></tr>"; // ton enregistrement
}
echo "</table>"; // fermeture dernière saison
Re: PHP - Requête MySQL
Posté : 15 janv. 2011, 17:01
par Geo3304
Ah super, merci pour cette réponse si rapide.
Le code marche impeccable, par contre;
Il me retourne uniquement le premier résultat par tableau, ( 1 ligne pour saison '0', et 1 ligne pour saison '1' ), alors que je voudrais qu'il me retourne l'ensemble, d'ou vient ce problème ?
Re: PHP - Requête MySQL
Posté : 15 janv. 2011, 17:12
par moogli
salut,
quel est ta requête complète ?
n'a tu pas une limite ?
@+
Re: PHP - Requête MySQL
Posté : 15 janv. 2011, 17:34
par Geo3304
Non aucune limite, uniquement un classement ascendant dans ma requête.
SELECT ID,saison, DATE_FORMAT(datedeb, '%d-%m-%Y') as datedeb ,DATE_FORMAT(datefin, '%d-%m-%Y') as datefin,prix,prix2 FROM $T_prix GROUP BY saison ORDER BY $T_prix.datedeb ASC
Re: PHP - Requête MySQL
Posté : 15 janv. 2011, 21:38
par Geo3304
Bonsoir,
Alors le problème viendrait apparemment de la partie SQL et non du coté PHP.
J'ai essayer de lancer la requête (ci-dessus) directement dans p.m.a , et le résultat obtenu est le même:
Ma requête m'affiche uniquement les premiers résultats de chaque saison, j'entend par là; le premier résultat correspondant à saison = 1 et le premier résultat correspondant à saison = 0.
Ci-dessous la structure de ma base SQL, si cela peut vous aider ;
CREATE TABLE IF NOT EXISTS `prix` (
`ID` smallint(11) unsigned NOT NULL AUTO_INCREMENT,
`saison` tinyint(1) NOT NULL,
`datedeb` date NOT NULL,
`datefin` date NOT NULL,
`prix` decimal(6,2) NOT NULL,
`prix2` decimal(6,2) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
Merci d'avance pour votre aide.
Re: PHP - Requête MySQL
Posté : 15 janv. 2011, 22:50
par xTG
Quelle boulette...
Grouper ne veut pas forcement dire GROUP BY, j'ai pas réfléchi sur le moment désolé...
Un ORDER BY saison ASC devrait suffire avec le code que je t'ai donné.

Re: PHP - Requête MySQL
Posté : 15 janv. 2011, 23:06
par Geo3304
Aaah je me disais

Donc, en virant le GROUP BY, tout marche impeccable.
Par contre, avant, mes résultats étaient affichés en fonction de la date début or maintenant, du coup, cet ordre n'est plus valable.
Est-il possible de combiner un ORDER BY datedeb ASC et un ORDER BY saison ASC par la requête ou d'une manière détournée?
Re: PHP - Requête MySQL
Posté : 16 janv. 2011, 00:21
par moogli
ouep order by datedeb asc,saison asc
@+
Re: PHP - Requête MySQL
Posté : 16 janv. 2011, 00:26
par Geo3304
Tout fonctionne impeccable

Merci beaucoup à vous !!
Re: PHP - Requête MySQL
Posté : 16 janv. 2011, 10:07
par xTG
Attention cependant, il faut mettre plutôt :
ORDER BY saison ASC, datedeb ASC
Sinon tu risques d'avoir des saisons mélangées.
Re: PHP - Requête MySQL
Posté : 16 janv. 2011, 11:37
par Geo3304
Oui, c'est bien ce que je j'avais mis

Merci!