Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4096 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  308  309  310  ..  1454  1455  1456  1457  1458  1459
Auteur Sujet :

blabla@web

n°1583036
koskoz
They see me trollin they hatin
Posté le 05-07-2007 à 23:33:31  profilanswer
 

Reprise du message précédent :

theredled a écrit :

bon ok :o

Code :
  1. $sql = "SELECT t1.pseudo, t1.section, t2.avatar, t3.id, t3.titre FROM roster AS t1, membres AS t2, roster_cat AS
  2.         t3 WHERE t1.pseudo LIKE t2.pseudo AND t1.section LIKE t3.id ORDER BY t3.titre ASC";
  3. $sql = mysql_query($sql) or die (mysql_error());
  4.  
  5. $infos = mysql_fetch_array($sql);
  6. $tab[] = $infos;
  7.  
  8. $last_cat = '';
  9. foreach($tab as $info) {
  10.     if($info['id'] != $last_cat){
  11.         echo "<h2>".$info['titre']."</h2>";
  12.     }
  13.     $last_cat = $info['id'];
  14.     echo "<a href=\"index.php?rub=membres&page=membre&pseudo=".$infos['pseudo']."\">Voir la fiche</a>";
  15. }


logiquement ça devrait être mieux :o
j'ai juste changé $info['section'] en $info['id']... ou alors j'ai pas compris, mais je vois pas ce que le ($info['section']!=$last_cat) foutrait là sinon.


 
Ca ne change rien [:spamafote]


---------------
Twitter
mood
Publicité
Posté le 05-07-2007 à 23:33:31  profilanswer
 

n°1583038
theredled
● REC
Posté le 05-07-2007 à 23:39:00  profilanswer
 

koskoz a écrit :

Ca ne change rien [:spamafote]


Autant pour moi, je vois que tu n'as pas du tout fait ce que je te disais pour mettre la requete dans un tableau :/

 

TOUTE la requete doite être dans un tableau AVANT d'arriver sur le foreach.
'fin relis bien mes posts et ceux de DJ Yell, ya tout ce qu'il faut, après seulement si t'as un pb ou que tu piges pas ok, mais on s'est un peu cassé les fesses à te faire des scripts que t'as visiblement pas lus... :/

Message cité 2 fois
Message édité par theredled le 05-07-2007 à 23:41:11

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1583041
The-Shadow
T'as été voir dans ton profil?
Posté le 05-07-2007 à 23:47:57  profilanswer
 

theredled a écrit :

Autant pour moi, je vois que tu n'as pas du tout fait ce que je te disais pour mettre la requete dans un tableau :/
 
TOUTE la requete doite être dans un tableau AVANT d'arriver sur le foreach.  
'fin relis bien mes posts et ceux de DJ Yell, ya tout ce qu'il faut, après seulement si t'as un pb ou que tu piges pas ok, mais on s'est un peu cassé les fesses à te faire des scripts que t'as visiblement pas lus... :/


mmmm, mettre une requête dans un tableau pour ensuite la parser avec un foreach qui est la méthode la plus lente pour faire une boucle en PHP (et là pour l'avoir testé je peux t'assurer que c'est loin d'être du pinaillage de quelques ms), c'est pas forcément une bonne idée.

n°1583043
theredled
● REC
Posté le 05-07-2007 à 23:52:39  profilanswer
 

The-Shadow a écrit :

mmmm, mettre une requête dans un tableau pour ensuite la parser avec un foreach qui est la méthode la plus lente pour faire une boucle en PHP (et là pour l'avoir testé je peux t'assurer que c'est loin d'être du pinaillage de quelques ms), c'est pas forcément une bonne idée.


On en a déja parlé page précédente :o enfin pas pour le foreach, mais perso je me permet de privilégier le physique du code aux perfs, c'est un choix et j'attend de m'en prendre plein la tête pour changer d'avis :o Et je crois pas que koskoz en soit à la micro-optimisation.

 

Sinon tu peux m'en dire plus sur tes test avec le foreach ?

Message cité 1 fois
Message édité par theredled le 05-07-2007 à 23:53:29

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1583046
The-Shadow
T'as été voir dans ton profil?
Posté le 05-07-2007 à 23:55:47  profilanswer
 

theredled a écrit :

Tu peux m'en dire plus sur tes test avec le foreach ?


Une liste de 2000 chiens, stockés en BDD, je stocke dans un tableau, je fais un foreach, temps de gen sur mon dédié, 8 secondes, je suis passé par une boucle for, 2 secondes, je suis passé par un affichage directe de la bdd, la moitié de seconde. J'ai plus les chiffres exactes, mais depuis ce jour, j'évite un maximum les foreachs, je les utilises uniquement pour les glob ou les choses du genre.
Quand tu multiplies pas + de 10 la vitesse, même si tu n'as pas à traiter 2000 entrés, faut commencer à se poser la question sur la conception, c'est ce que j'ai fait. :D

Message cité 1 fois
Message édité par The-Shadow le 05-07-2007 à 23:57:39
n°1583048
theredled
● REC
Posté le 06-07-2007 à 00:06:46  profilanswer
 

The-Shadow a écrit :

Une liste de 2000 chiens, stockés en BDD, je stocke dans un tableau, je fais un foreach, temps de gen sur mon dédié, 8 secondes, je suis passé par une boucle for, 2 secondes, je suis passé par un affichage directe de la bdd, la moitié de seconde. J'ai plus les chiffres exactes, mais depuis ce jour, j'évite un maximum les foreachs, je les utilises uniquement pour les glob ou les choses du genre.
Quand tu multiplies pas + de 10 la vitesse, même si tu n'as pas à traiter 2000 entrés, faut commencer à se poser la question sur la conception, c'est ce que j'ai fait. :D


Perso ça va rarement à plus de 200 entrées, et c'est généralement 20... A voir avec le nb de connexions/BP/util mémoire/util CPU, j'y connais pas gd-chose encore...
 
C'est bon à savoir cela dit, mais je pense garder le foreach pour les petits tableaux (plus joli :o)
 
Dites, si, pour optimiser sans melanger SQL et php, je me fais une fonction genre nextRow($ressourceSQL), (qui contient le mysql_fetch_array()) est-ce que le fait de mettre une fonction en intermédiaire ne me fait pas perdre en perfs ce que je gagne en mémoire ? j'ai aucune idée des ordres de grandeurs...


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1583057
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 03:24:17  profilanswer
 

Si dans ma table j'ai quelque chose de ce genre :
 


id | user_id | name | premium
1  |    5    | TOTO |    0
2  |    5    | TATA |    1
3  |    7    | TUTU |    0
4  |    5    | TITI |    0


 
Quel est le moyen le plus performant pour faire passer le flag premium de l'id 2 à l'id 4 par exemple, pour un user_id de 5 ?
 
Obligé de faire 2 requêtes ?
UPDATE matable SET premium = 0 WHERE user_id = 5;
UPDATE matable SET premium = 1 WHERE id = 4;
 
 
Faux edit 1 :
Y'a peut-être possibilité d'utiliser IF non ? Je verrais bien un truc du genre :
UPDATE matable SET premium = IF(id = 4, 1, 0) WHERE user_id = 5;
 
Ça me semble mieux non ?
 
Faux edit 2 :
Bon ben je viens de tester la 2 et ça marche \o/ J'ai pas encore le réflexe des conditions en MySQL :D
 
Bon ben merci pour votre aide ^^


---------------
Gamertag: CoteBlack YeLL
n°1583059
SekYo
Posté le 06-07-2007 à 05:34:50  profilanswer
 

T'as pu le tester au niveau des perfs ? Je veux dire, deux requetes simples sont plus longues que ton unique requete avec condition ?

n°1583062
koskoz
They see me trollin they hatin
Posté le 06-07-2007 à 07:26:08  profilanswer
 

theredled a écrit :

Autant pour moi, je vois que tu n'as pas du tout fait ce que je te disais pour mettre la requete dans un tableau :/
 
TOUTE la requete doite être dans un tableau AVANT d'arriver sur le foreach.  
'fin relis bien mes posts et ceux de DJ Yell, ya tout ce qu'il faut, après seulement si t'as un pb ou que tu piges pas ok, mais on s'est un peu cassé les fesses à te faire des scripts que t'as visiblement pas lus... :/


 
Toute la requete est dans le tableau là non :heink: ?


---------------
Twitter
n°1583073
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 08:49:17  profilanswer
 

SekYo a écrit :

T'as pu le tester au niveau des perfs ? Je veux dire, deux requetes simples sont plus longues que ton unique requete avec condition ?


 
Non je peux pas vraiment le tester au niveau des perfs vu qu'on a jamais + de 5 fois le même id.
 
Bon sinon ça fait 1h que je me prends la tête sur un problème à la con. J'ai bcp de mal avec les jointures, donc disons que j'ai ces 2 tables :


TABLE_1
 
ID | NAME
1  | A
2  | B
3  | C
4  | D
5  | E



TABLE_2
 
ID | TABLE_1_ID | NAME_2
1  |     2      |  U
2  |     5      |  V
3  |     2      |  W
4  |     2      |  X
5  |     3      |  Y


Je voudrais sélectionner TOUS les éléments de ma 1ère table, avec une jointure pour obtenir pour chacun 1 SEUL élément de la table 2 + le nombre d'élément de la table 2 pour chaque ID, en gros je voudrais un résultat comme ça :


ID | NAME | NAME_2 | COUNT
1  |  A   |  NULL  |   0
2  |  B   |   U    |   3
3  |  C   |   Y    |   1
4  |  D   |  NULL  |   0
5  |  E   |   V    |   1


 
J'ai essayé plein de trucs, mais je n'obtiens jamais le résultat que je veux :cry:
 
J'avais pensé à quelque chose qui ressemble à ça :
 

SELECT T1.ID, T1.NAME, T2.NAME_2, COUNT(*) FROM TABLE_1 AS T1 LEFT JOIN TABLE_2 AS T2 ON T2.TABLE_1_ID = T1.ID GROUP BY T2.TABLE_1_ID


 
Donc j'ai tourné autour de quelque chose dans le genre mais je n'arrive à rien. Ce truc me retourne quelque chose comme ça :
 

ID | NAME | NAME_2 | COUNT
1  |  A   |  NULL  |   27  <== en gros ça cumule tout le reste
2  |  B   |   U    |   3
3  |  C   |   Y    |   1
5  |  E   |   V    |   1


---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le 06-07-2007 à 08:49:17  profilanswer
 

n°1583075
ratibus
Posté le 06-07-2007 à 08:52:17  profilanswer
 

GROUP BY T1.ID plutôt ;)

n°1583077
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 08:58:33  profilanswer
 

ratibus a écrit :

GROUP BY T1.ID plutôt ;)


 
Rhaaaaaa mais quel c.... :cry:
 
Ça marche, merci :jap:
 
PS: Il est bien ce bouquin pour se perfectionner : http://www.eyrolles.com/Informatiq [...] ysql-5.php ? Sinon quelqu'un a mieux à me proposer ?
 
Merci.


---------------
Gamertag: CoteBlack YeLL
n°1583078
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-07-2007 à 09:02:33  profilanswer
 

faut grouper sur tous les champs remontés par ton select et qui ne sont pas dans un fonction d'aggregation, donc: T1.ID, T1.NAME, T2.NAME_2
 
Mais la remarque de ratibus est également importante ( mais insuffisante :o) ! Vu que tu fais une jointure externe, tu ne garantis la présence d'une valeur dans la table t2.

n°1583081
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-07-2007 à 09:05:17  profilanswer
 

Dj YeLL a écrit :

Rhaaaaaa mais quel c.... :cry:
Ça marche, merci :jap:
PS: Il est bien ce bouquin pour se perfectionner : http://www.eyrolles.com/Informatiq [...] ysql-5.php ? Sinon quelqu'un a mieux à me proposer ?
Merci.


Moi je conseillerai celui-la: http://www.amazon.com/Art-SQL-Step [...] 0596008945

n°1583084
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 09:11:51  profilanswer
 

Merci pour le bouquin, je vais regarder ça.
 
Sinon j'ai encore un souci en fait, au lieu d'avoir ça :


ID | NAME | NAME_2 | COUNT
1  |  A   |  NULL  |   0
2  |  B   |   U    |   3
3  |  C   |   Y    |   1
4  |  D   |  NULL  |   0
5  |  E   |   V    |   1


 
J'ai ça :
 

ID | NAME | NAME_2 | COUNT
1  |  A   |  NULL  |   1
2  |  B   |   U    |   3
3  |  C   |   Y    |   1
4  |  D   |  NULL  |   1
5  |  E   |   V    |   1


 
J'ai aussi essayé de suivre les conseils d'anapajari, mais si je rajoute des élément au GROUP BY ça ne marche plus, j'ai mes éléments de la table 1 qui se répètent autant de fois qu'ils apparaissent dans la table 2 :(


---------------
Gamertag: CoteBlack YeLL
n°1583086
ratibus
Posté le 06-07-2007 à 09:17:04  profilanswer
 

anapajari a écrit :

faut grouper sur tous les champs remontés par ton select et qui ne sont pas dans un fonction d'aggregation, donc: T1.ID, T1.NAME, T2.NAME_2
 
Mais la remarque de ratibus est également importante ( mais insuffisante :o) ! Vu que tu fais une jointure externe, tu ne garantis la présence d'une valeur dans la table t2.


C'est un peu old school ;)
http://dev.mysql.com/tech-resource [...] myths.html

n°1583088
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 09:21:42  profilanswer
 

Bon en fait j'ai réussi en remplaçant le COUNT(*) par COUNT(TABLE_1_ID)


---------------
Gamertag: CoteBlack YeLL
n°1583089
ratibus
Posté le 06-07-2007 à 09:24:19  profilanswer
 

Dj YeLL a écrit :

Merci pour le bouquin, je vais regarder ça.
 
Sinon j'ai encore un souci en fait, au lieu d'avoir ça :


ID | NAME | NAME_2 | COUNT
1  |  A   |  NULL  |   0
2  |  B   |   U    |   3
3  |  C   |   Y    |   1
4  |  D   |  NULL  |   0
5  |  E   |   V    |   1


 
J'ai ça :
 

ID | NAME | NAME_2 | COUNT
1  |  A   |  NULL  |   1
2  |  B   |   U    |   3
3  |  C   |   Y    |   1
4  |  D   |  NULL  |   1
5  |  E   |   V    |   1


 
J'ai aussi essayé de suivre les conseils d'anapajari, mais si je rajoute des élément au GROUP BY ça ne marche plus, j'ai mes éléments de la table 1 qui se répètent autant de fois qu'ils apparaissent dans la table 2 :(


http://dev.mysql.com/doc/refman/5. [...] tion_count
 
Ca t'explique la diff (comme tu as pu t'en rendre compte) entre un COUNT(*) et un COUNT(mon_champ)

n°1583090
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 09:25:45  profilanswer
 

:jap:


---------------
Gamertag: CoteBlack YeLL
n°1583096
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-07-2007 à 09:48:38  profilanswer
 


Le pire c'est que je suis d'accord avec le début  de son article, particulierement:

Citation :

Disadvantages ?
First of all, many rdbms products will only allow a full GROUP BY clause anyway, so in those cases there really is no choice. In MySQL however, we do have the choice as long as we are not using ONLY_FULL_GROUP_BY in the sql_mode.

 

Another reason for always writing the GROUP BY clause in full is that other developers might not understand under which circumstances it is ok to use a partial GROUP BY clause. [...]

 

Of course, it is impossible to distinguish between a query that intentionally omits columns from the GROUP BY clause and one that accidentally forgot to include them. When it is the intention to always write a full GROUP BY clause, it is easy to verify whether the column references in the GROUP BY clause and the the SELECT list match.


Mais après il part grave en choucroute :o

 

Dans les inconvénients du full group il dit:

Citation :

Another argument I have heard is that it is somehow 'more clear', 'cleaner' or 'prettier' to repeat all columns referenced in the SELECT list in the GROUP BY clause. Personally, I think this is a bogus argument too. At the very least, these are all a matter of opinion.


Et la seule avantage qu'il donne au full group c'est:

Citation :

Personally, I feel it is more clear and prettier to GROUP BY only on key columns where possible. I argued that it is a matter of opinion what is 'clear' or 'pretty', so I must discard this argument likewise.


Trop terrible l'argumentaire  [:roane]

 

Mais perso, vu que je travaille sur des environnements hétérogènes en termes de DBs c'est toujours "full group"


Message édité par anapajari le 06-07-2007 à 09:48:52
n°1583103
theredled
● REC
Posté le 06-07-2007 à 10:00:14  profilanswer
 

koskoz a écrit :

Toute la requete est dans le tableau là non :heink: ?


Ben non, là tu n'as que la première ligne  [:airforceone]


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1583104
ratibus
Posté le 06-07-2007 à 10:01:19  profilanswer
 

Tout à fait d'accord, par contre dans le cas de DJ Yell c'est à mon sens la meilleure solution de ne pas faire de full group (du moment qu'il est conscient que le nom de sa seconde table n'est pas garanti d'être le même et que ça marche pas forcément sur d'autre SGBD). ;)

n°1583105
Proov
Art & Science
Posté le 06-07-2007 à 10:03:12  profilanswer
 

c'est bon mon script d'upload remarche, c'est mon hébergeur qui avait supprimé le dossier tmp :pfff:  :pfff: on va changer de toute façon, on va prendre infomaniak.ch ils ont l'air bon, et leur offre est super alléchante :love:

n°1583107
flo850
moi je
Posté le 06-07-2007 à 10:05:49  profilanswer
 

koskoz a écrit :

Toute la requete est dans le tableau là non :heink: ?


mysql_fetch_array ne te retourne qu'un seul resultat ( sous la forme d'un tableau )  ( idem pour mysql_fetch_row ou mysql_fetch_assoc )  
 
donc sur ce coup , tu devrai vraiment lire la doc et les exemples pour faire une requete  basique en php/mysql

n°1583108
LePhasme
Les Belges domineront le monde
Posté le 06-07-2007 à 10:06:41  profilanswer
 

Dites ya moyen de coller un HR à une div ?

 

Parce que j'ai mis tous les padding/margin à 0 et j'ai toujours un espace de 10px en haut et en bas du HR.

 

J'ai bien tenté ça : http://forum.alsacreations.com/faq [...] lorer.html mais contrairement à ce qu'il dit ca me nique l'affichage sous FF et sous IE il y a toujours une petit marge entre les 2.

 

Edit :  vive les border.

Message cité 1 fois
Message édité par LePhasme le 06-07-2007 à 10:17:43
n°1583114
Proov
Art & Science
Posté le 06-07-2007 à 10:18:43  profilanswer
 

LePhasme a écrit :

Dites ya moyen de coller un HR à une div ?
 
Parce que j'ai mis tous les padding/margin à 0 et j'ai toujours un espace de 10px en haut et en bas du HR.
 
J'ai bien tenté ça : http://forum.alsacreations.com/faq [...] lorer.html mais contrairement à ce qu'il dit ca me nique l'affichage sous FF et sous IE il y a toujours une petit marge entre les 2.
 
Edit :  vive les border.


 

Citation :


Mozilla et Netscape: hr = une ligne de 1px de haut + une bordure de 1px
Internet Explorer : hr = une ligne de 1px de haut
Opéra et Safari : hr = une bordure de 2px


 
http://www.nanoum.net/blog/4_apparence_hr.html

n°1583122
theredled
● REC
Posté le 06-07-2007 à 10:37:17  profilanswer
 

C'est moi qui sait pas m'en servir, ou DbDesigner est un peu limité, ou certaines choses ne sont pas possibles :??:
En reverse ingeneering, il ne chope ni mes valeurs par défaut, ni mes "auto-increment", et je ne trouve aucune option qui semble faire ça...

 

Et lorsque j'exporte en script SQL, pas moyen qu'il me mettre explicitement les Charset et les type de tables etc (genre ENGINE=MyISAM toussa)...

 

Et MySQL ne veut pas du script qu'il me génère et je sais pas pourquoi :( (j'en ai fait un topic :o)


Message édité par theredled le 06-07-2007 à 10:40:40

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1583160
koskoz
They see me trollin they hatin
Posté le 06-07-2007 à 12:12:42  profilanswer
 

theredled a écrit :

Ben non, là tu n'as que la première ligne  [:airforceone]


 

flo850 a écrit :

mysql_fetch_array ne te retourne qu'un seul resultat ( sous la forme d'un tableau )  ( idem pour mysql_fetch_row ou mysql_fetch_assoc )  
 
donc sur ce coup , tu devrai vraiment lire la doc et les exemples pour faire une requete  basique en php/mysql


 
Merci je vais regarder ça :jap:


---------------
Twitter
n°1583225
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 15:04:37  profilanswer
 

Quand on fait une jointure ... est-ce possible de définir un tri sur la table qu'on joint ?
 
Parce que pour en revenir à mon cas de tout à l'heure, je ne garde qu'un seul résultat de la table que je joins, seulement comment choisir le résultat qui est gardé ? Il y a dans cette table un champ booléen, et je voudrais que lors de la jointure il sélectionne en priorité la ligne où le champ est à 1.
 
J'ai essayé en ajoutant un ORDER BY le_champ_en_question DESC ... mais c'est pour trier le résultat... une fois la jointure effectuée.


---------------
Gamertag: CoteBlack YeLL
n°1583226
flo850
moi je
Posté le 06-07-2007 à 15:06:05  profilanswer
 

si tu veux faire ca, tu n'aurai pas interet a faire une sous requete ?  

n°1583230
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 15:13:00  profilanswer
 

Aucune idée, j'ai vraiment besoin de m'améliorer au niveau requêtes :/
 
Bon j'explique le truc en gros :
 
- On a une table d'annonces, certaines avec le champ "premium" à 0, d'autres à 1
 
- On a une table qui contient les infos sur les images de l'utilisateur. Cette table contient entre autres le nom du fichier image, l'id de l'annonce et également un champ "premium" à 0 ou 1
 
1 user peut avoir plusieurs annonces
1 annonce peut avoir plusieurs images
1 annonce ne peut avoir qu'une seul image "premium"
 
Le but est de récupérer la liste des annonces, les annonces premium d'abord, puis les classiques. Il faut comme info le nombre d'image total de chaque annonce, mais également le nom du fichier image qui a le statut "premium"
 
Tout ça pour au final afficher une table des annonces, avec les annonces premium en haut, et les classique en dessous, et que pour chaque annonce premium la vignette de l'image choisi pour le mode premium soit affiché.
 
Suis-je assez clair ? Ou faut que je développe encore plus ?
 
:jap:


---------------
Gamertag: CoteBlack YeLL
n°1583236
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 15:25:53  profilanswer
 

Et me requête ressemble à ça (je l'ai francisée, pour ce que ce soit peut être plus clair pour certains :D ) :


SELECT annonces.id,
       annonces.category_id,
       annonces.category_concat,
       annonces.title,
       UNIX_TIMESTAMP(annonces.last_update) AS last_update,
       annonces.premium,
       villes.departement,
       images.filename,
       images.width,
       images.height,
       COUNT(images.annonce_id) AS nombre_images
           FROM annonces
           LEFT JOIN villes ON ville.id = annonce.ville_id
           LEFT JOIN images ON image.annonce_id = annonce.id
           WHERE annonce.validation = 1
           GROUP BY annonces.id
           ORDER BY annonces.premium DESC, images.premium DESC, annonces.last_update DESC
           LIMIT 50

 

H.S. : "Bitsream Vera Sans Mono" da best fixed font ever :love:


Message édité par Dj YeLL le 06-07-2007 à 15:26:03

---------------
Gamertag: CoteBlack YeLL
n°1583265
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-07-2007 à 15:41:39  profilanswer
 

suis pas sur de tout comprendre ... :o
Mais j'aurais tendance à faire un truc dans le genre:

Code :
  1. SELECT annonces.id,
  2.        annonces.category_id,
  3.        annonces.category_concat,
  4.        annonces.title,
  5.        UNIX_TIMESTAMP(annonces.last_update) AS last_update,
  6.        annonces.premium,
  7.        villes.departement,
  8.        imgp.filename,
  9.        impg.width,
  10.        impg.height,
  11.        COUNT(imgn.annonce_id) + CASE WHEN imgp.id is null then 0 else 1 END AS nombre_images
  12. FROM
  13.                     annonces
  14.     LEFT JOIN villes                 ON ville.id = annonce.ville_id
  15.     LEFT JOIN images   as imgp       ON imgn.annonce_id = annonce.id and imgp.premium = 1
  16.     LEFT JOIN images   as imgn       ON imgn.annonce_id = annonce.id and imgn.premium = 0
  17.   WHERE
  18.     annonce.validation = 1
  19.   GROUP BY
  20.     annonces.id
  21.    ORDER BY
  22.        annonces.premium DESC,
  23.        imgp.premium DESC,
  24.        annonces.last_update DESC
  25. LIMIT 50


Message édité par anapajari le 06-07-2007 à 15:43:15
n°1583318
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 16:24:25  profilanswer
 

Han ! Koman té tro for ! Kan C kon fé du saikse ? :love:
 
Merci :jap:


---------------
Gamertag: CoteBlack YeLL
n°1583320
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-07-2007 à 16:27:33  profilanswer
 

y'a une erreur dans la requete fait gaffe !!!
La 1ere jointure sur images as imgp utilises imgn dans le on au lieu de imgp...
Et en y reflechissant on peut simplifier le truc en faisant:

Code :
  1. SELECT annonces.id,
  2.           annonces.category_id,
  3.           annonces.category_concat,
  4.           annonces.title,
  5.           UNIX_TIMESTAMP(annonces.last_update) AS last_update,
  6.           annonces.premium,
  7.           villes.departement,
  8.           imgp.filename,
  9.           impg.width,
  10.           impg.height,
  11.           COUNT(imgn.annonce_id) AS nombre_images
  12.     FROM
  13.                        annonces
  14.        LEFT JOIN villes                 ON ville.id = annonce.ville_id
  15.        LEFT JOIN images   as imgp       ON imgp.annonce_id = annonce.id and imgp.premium = 1
  16.        LEFT JOIN images   as imgn       ON imgn.annonce_id = annonce.id
  17.      WHERE
  18.        annonce.validation = 1
  19.      GROUP BY
  20.        annonces.id
  21.       ORDER BY
  22.           annonces.premium DESC,
  23.           imgp.premium DESC,
  24.           annonces.last_update DESC
  25.     LIMIT 50


Vu que tu ne cherches qu'à compter les images et pas leurs informations , ça evite le case when à la con,


Message édité par anapajari le 06-07-2007 à 16:27:52
n°1583326
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 16:37:36  profilanswer
 

Pour l'erreur je l'avais corrigée oui ;) Y compris là où tu as écris "impg" au lieu de "imgp" :D
 
Je viens d'adapter ta nouvelle version ça marche nickel (tjs après corrections :whistle: ) :)
 
Encore merci !


---------------
Gamertag: CoteBlack YeLL
n°1583372
koskoz
They see me trollin they hatin
Posté le 06-07-2007 à 17:23:37  profilanswer
 

flo850 a écrit :

mysql_fetch_array ne te retourne qu'un seul resultat ( sous la forme d'un tableau )  ( idem pour mysql_fetch_row ou mysql_fetch_assoc )  
 
donc sur ce coup , tu devrai vraiment lire la doc et les exemples pour faire une requete  basique en php/mysql


 
La seule solution trouvée est celle-ci :
 

Code :
  1. $tab = array();
  2. while ($infos = mysql_fetch_array($sql)) {
  3. $tab[] = $infos;
  4. }
  5.  
  6. $last_cat = '';
  7. foreach($tab as $info) {
  8.     if($info['id'] != $last_cat){
  9.         echo "<h2>".$info['titre']."</h2>";
  10.     }
  11.     $last_cat = $info['id'];
  12.     echo "<a href=\"index.php?rub=membres&page=membre&pseudo=".$info['pseudo']."\">Voir la fiche</a>";
  13. }


 
Mais je ne comprend dans ce cas pas l'interêt d'utiliser un foreach si c'est pour avant utiliser un while :/


---------------
Twitter
n°1583374
flo850
moi je
Posté le 06-07-2007 à 17:26:16  profilanswer
 

tu as tout compris , ca n'a ( pour moi ) pas d'interet si ce n'est de bouffer un peu plus de ram  
 
mais prenom un autre cas ou le foreach est plus utile
 
tu as un site marchand, sur la page de modification du panier tu recupere un tableau dont tu ne connait pas la taille a priori  
quelque chose du genre  
$_POST['panier'][$idArticle] = $quantite  
 
pour traiter les résultats tu fais  
foreach($_POST['panier'] as $id => $quantite)
{
  et voila, ici , tu as l'id de l'article et la quantite  
}

n°1583415
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 18:40:55  profilanswer
 

Quelqu'un à déjà essayé de faire tourner un serveur web sur une clé USB ?
 
(Sinon y'a des solutions toutes faites, genre WAMP MSS http://www.uni-d.net/index.php?s=proj&id=3 )


---------------
Gamertag: CoteBlack YeLL
n°1583420
flo850
moi je
Posté le 06-07-2007 à 19:05:02  profilanswer
 

J'avais utilisé wamp mss pour pouvoir faire une demo chez un client , ca à marché :d

n°1583422
Dj YeLL
$question = $to_be || !$to_be;
Posté le 06-07-2007 à 19:15:04  profilanswer
 

Je suis en train de l'installer ... Par contre je suis sur le cul tellement c'est lent une clé USB :/


---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  308  309  310  ..  1454  1455  1456  1457  1458  1459

Aller à :
Ajouter une réponse
 

Sujets relatifs
blabla 3blabla 2
PUTAIN HARKO TU AS FERM2 BLABLA ![Beaucoup de blabla pour rien : post à effacer] Compiler .bat
variable1="blabla + variable2 +blala : c'est possible ??[PHP & regex] "blabla blabla file.ext?point=444 blabla" Recupérer 444
mail("celine@hotmail.com"," sujet","blabla"); pose une err ! Help[MySQL] WHERE 'blabla' compris dans le champ truc
[blabla@olympe] Le topic du modo, dieu de la fibre et du monde[PHP / BlaBla - limite]
Plus de sujets relatifs à : blabla@web


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)