Sa change rien
C'est étrange ce que tu me dis , la première requête est (entre autre) responsable de la sélection de toutes les catégories (via les articles et un join) , il y a normalement 2 manières de procéder :
- Mettre un limit pour sélectionner seulement la dernière rubrique
- Mettre un distinct pour sélectionné LES dernières rubriques
En parlant de "dernière rubrique" je parle évidemment des rubriques dont les articles sont les plus vieux.
Que ni l'une ni l'autre ne marche (surtout celle du LIMIT) je comprends pas bien la ....
en modifiant le limit :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $rep = "select DISTINCT article.numrubrique as 'numrubrique', article.numart as 'numart', article.titreart as 'titreart', rubrique.librubrique as 'librubrique' From article join rubrique where rubrique.numrubrique = article.numrubrique order by article.dateart desc LIMIT 0,1";
Sa m'affiche bien une rubrique:
TEST (24)
Mais le probleme c'est le 24 il devrait y avoir 10 a la place
RE voila j'ai un probleme en faite le code affiche les articles les plus anciens que d'UNE rubrique et il faudrait qu'elle affiche les articles les plus anciens peu importe leur rubrique.
Voila
Bonne fin de journée
Donne la structure de tes tables , on va surement changer les requêtes parce que la ça devient de la bidouille crade
oki lool
Voici mes tables :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243 - phpMyAdmin SQL Dump -- version 2.11.9.3 -- http://www.phpmyadmin.net -- -- Serveur: MySQL5.hebergement.com -- Généré le : Jeu 18 Juin 2009 à 15:41 -- Version du serveur: 5.0.45 -- Version de PHP: 5.2.6 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Base de données: `db_bloggaly2_1` -- -- -------------------------------------------------------- -- -- Structure de la table `archives` -- CREATE TABLE IF NOT EXISTS `archives` ( `numart` bigint(4) default NULL, `titreart` tinytext, `librubrique` char(32) default NULL, `numrubrique` bigint(4) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `article` -- CREATE TABLE IF NOT EXISTS `article` ( `NUMART` bigint(4) NOT NULL auto_increment, `NUMRUBRIQUE` bigint(4) NOT NULL, `TITREART` tinytext character set latin1, `TEXTEART` text character set latin1, `DATEART` char(32) character set latin1 default NULL, PRIMARY KEY (`NUMART`), KEY `NUMRUBRIQUE` (`NUMRUBRIQUE`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=66 ; -- -------------------------------------------------------- -- -- Structure de la table `envoyer` -- CREATE TABLE IF NOT EXISTS `envoyer` ( `NUMNEWS` bigint(4) NOT NULL, `Date_envoi` datetime NOT NULL, `NUMMAIL` bigint(4) NOT NULL, PRIMARY KEY (`NUMNEWS`,`NUMMAIL`), KEY `FK_ENVOYER_MAIL` (`NUMMAIL`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `lien` -- CREATE TABLE IF NOT EXISTS `lien` ( `NUMLIEN` bigint(4) NOT NULL auto_increment, `NUMTYPE` bigint(4) NOT NULL, `ADRESSE` text, PRIMARY KEY (`NUMLIEN`), KEY `FK_LIEN_TYPE` (`NUMTYPE`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=59 ; -- -------------------------------------------------------- -- -- Structure de la table `lien_img` -- CREATE TABLE IF NOT EXISTS `lien_img` ( `NUMLIEN` bigint(4) NOT NULL, `IMAGE` text character set utf8 collate utf8_unicode_ci, `INFO` text character set utf8 collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`NUMLIEN`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `lien_txt` -- CREATE TABLE IF NOT EXISTS `lien_txt` ( `NUMLIEN` bigint(4) NOT NULL, `TEXTE` char(32) default NULL, PRIMARY KEY (`NUMLIEN`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `mail` -- CREATE TABLE IF NOT EXISTS `mail` ( `NUMMAIL` bigint(4) NOT NULL auto_increment, `MAIL` char(32) default NULL, PRIMARY KEY (`NUMMAIL`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; -- -------------------------------------------------------- -- -- Structure de la table `newsletter` -- CREATE TABLE IF NOT EXISTS `newsletter` ( `NUMNEWS` bigint(4) NOT NULL auto_increment, `NUMERO` int(11) NOT NULL, `SUJET` char(32) default NULL, `CONTENU` text, PRIMARY KEY (`NUMNEWS`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; -- -------------------------------------------------------- -- -- Structure de la table `parametre` -- CREATE TABLE IF NOT EXISTS `parametre` ( `txt_present` text NOT NULL, `txt_contact` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `question` -- CREATE TABLE IF NOT EXISTS `question` ( `NUMQUEST` bigint(4) NOT NULL auto_increment, `NUMREP` bigint(4) default NULL, `NUMMAIL` bigint(4) NOT NULL, `DATE` char(32) default NULL, `SUJET` text, `TEXTE` text, PRIMARY KEY (`NUMQUEST`), KEY `FK_QUESTION_UTIL_QUEST` (`NUMMAIL`), KEY `NUMREP` (`NUMREP`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=42 ; -- -------------------------------------------------------- -- -- Structure de la table `reponse` -- CREATE TABLE IF NOT EXISTS `reponse` ( `NUMREP` bigint(4) NOT NULL auto_increment, `DATE` char(32) default NULL, `QUESTION` text, `REPONSE` text, PRIMARY KEY (`NUMREP`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Structure de la table `rubrique` -- CREATE TABLE IF NOT EXISTS `rubrique` ( `NUMRUBRIQUE` bigint(4) NOT NULL auto_increment, `LIBRUBRIQUE` char(32) default NULL, PRIMARY KEY (`NUMRUBRIQUE`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ; -- -------------------------------------------------------- -- -- Structure de la table `trigger_answer` -- CREATE TABLE IF NOT EXISTS `trigger_answer` ( `trigger_name` varchar(50) NOT NULL, `TS` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `result` text, PRIMARY KEY (`trigger_name`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `trigger_request` -- CREATE TABLE IF NOT EXISTS `trigger_request` ( `trigger_name` varchar(50) NOT NULL, `trigger_body` text, `ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `done` int(11) default '0', PRIMARY KEY (`trigger_name`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Structure de la table `type` -- CREATE TABLE IF NOT EXISTS `type` ( `NUMTYPE` bigint(4) NOT NULL auto_increment, `TYPE` char(32) default NULL, PRIMARY KEY (`NUMTYPE`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; -- -------------------------------------------------------- -- -- Structure de la table `utilisateur` -- CREATE TABLE IF NOT EXISTS `utilisateur` ( `NUMUT` bigint(4) NOT NULL auto_increment, `LOGIN` char(32) default NULL, `MDP` char(32) default NULL, PRIMARY KEY (`NUMUT`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Structure de la table `util_quest` -- CREATE TABLE IF NOT EXISTS `util_quest` ( `NUMMAIL` bigint(4) NOT NULL, `NOM` char(32) default NULL, `PRENOM` char(32) default NULL, PRIMARY KEY (`NUMMAIL`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Hum , dernière bidouille après je ferais les tests chez moi ce soir avec un serveur et tes schémas...(bah ouais a l'aveugle au taff spa pratique)
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT `article`.`NUMART` AS `numart`, `article`.`TITREART` AS `titreart`, `rubrique`.`LIBRUBRIQUE` AS `librubrique`, `article`.`NUMRUBRIQUE` AS `numrubrique` FROM (`article` JOIN `rubrique`) WHERE (`rubrique`.`NUMRUBRIQUE` = `article`.`NUMRUBRIQUE`) ORDER BY `article`.`DATEART` DESC GROUP BY `numrubrique` LIMIT 10,30;
En enlevant les cotes sa donne:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $rep = "SELECT article.NUMART AS `numart`, article.TITREART AS `titreart`, rubrique.LIBRUBRIQUE AS 'librubrique`, article.NUMRUBRIQUE AS `numrubrique` FROM (article JOIN rubrique) WHERE (rubrique.NUMRUBRIQUE = article.NUMRUBRIQUE) ORDER BY article.DATEART DESC GROUP BY numrubrique LIMIT 10,30";
Cela m'affiche une erreur:
L'insertion a echouée car
En tout cas merci encore pour ton aide précieuseYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''librubrique`, article.NUMRUBRIQUE AS `numrubrique` FROM (article JOIN rubrique' at line 3.
l'erreur est la , c'est pas la bonne quote lolrubrique.LIBRUBRIQUE AS 'librubrique`,
Et ça continu lool
L'insertion a echouée car You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY numrubrique LIMIT 10,30' at line 8.
Il faut inverser group by et order by
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT `article`.`NUMART` AS `numart`, `article`.`TITREART` AS `titreart`, `rubrique`.`LIBRUBRIQUE` AS `librubrique`, `article`.`NUMRUBRIQUE` AS `numrubrique` FROM (`article` JOIN `rubrique`) WHERE (`rubrique`.`NUMRUBRIQUE` = `article`.`NUMRUBRIQUE`) GROUP BY `numrubrique` ORDER BY `article`.`DATEART` DESC LIMIT 10,30
Re
Désolé de répondre tardivement mais je n'étais pas chez moi.
Donc en ce qui concerne le code il marche mais il y a un probleme.
Je m'explique.
Ce code:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $reqart = "SELECT numart,titreart FROM article WHERE numrubrique=".$numrub." ORDER BY DATEART LIMIT 0,1";
Selectionne les articles de chaque rubriques .
Mais le probleme est que imaginons je créer une nouvelle rubrique, je crée un titre d'article .
Eh ben cette rubrique apparaitra dans archive car c'est l'article le plus ancien de la rubrique comme il est le seul!!!
Alors qu'il faut sélectionner les articles les plus anciens peu importe leur rubrique.
Je ne s'ai pas si j'ai étais clair .
MErciiii mec pour tout
bah après ça parait evident .....faut quand meme que tu analyse ce que tu fais , si encore au lieu de faire un limit , tu prenais comme critere la date (genre date < 10 jours) bah tu aurais pas de probleme d'article tout neuf dans les archives ....hors la tu fais une limite et tu ne tiens pas compte des dates donc les articles seuls dans des rubriques y apparaissent.Eh ben cette rubrique apparaitra dans archive car c'est l'article le plus ancien de la rubrique comme il est le seul!!!
On ne peut pas non plus tout te coder , il faut quand meme que tu prenne un moment pour reflechir a ce que tu fais et ce que tu veux.
je comprends mais bon j'ai du mal à me debuger seul. bref
Sa donnerait:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part WHERE ADDDATE(article.DATEART,INTERVAL 10 DAY)<CURDATE()
ça se comprends tout a fait , donc il faut faire comme tu viens de le faire , proposer ce que tu pense faire , et on valide/corrige et non pas l'inverse , montrer des bouts de code erroné et nous devons derriere trouver la solution.
ça c'est une bonne idee en effet.
tu as aussi cette solution :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part WHERE DATEDIFF(article.DATEART,CURDATE())>10
Je vais essayer d'évoluer
Je dois l'ajouter à la premiere "grosse" requete ou à la deuxieme requete???
Je dirais dans la grosse...mais je suis pas dans ton projet
Moi aussi je pensait cela.
Mais le probleme lorsque que je fais cela:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $rep = "SELECT article.NUMART AS `numart`, article.TITREART AS `titreart`, rubrique.LIBRUBRIQUE AS `librubrique`, article.NUMRUBRIQUE AS `numrubrique` FROM (article JOIN rubrique) WHERE (rubrique.NUMRUBRIQUE = article.NUMRUBRIQUE) AND DATEDIFF(article.DATEART,CURDATE())>10 GROUP BY numrubrique ORDER BY article.DATEART DESC LIMIT 0,10";
Rien ne s'affiche
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager