CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

probleme de réflexion avec tableau

jacman
jacman
Niveau 11
04 novembre 2006 à 10:31:17

bonjour,
voila j´ai un petit probleme, je vous ai fais ce schéma la :
http://img180.imageshack.us/img180/864/mareflexionqt9.png

en fait, le "listage" seras tiré de ma BDD, seulement je ne voudrais pas faire une requete pour chaque colonne, j´ai alors réfléchis pour faire comme il faut, mais j´y arrive pas.

Ma structure :
1 table : tuto
5 champs : id, auteur, categorie, titre, message.

Donc, par exemple par la categorie 1 du tableau, je mettrais categorie 1 dans mon champ categorie, la c´est pas le probleme, mais c´est pour le codage que j´ai du mal.
Eviter de faire plein de requete pour chaque colonne, voici mon enigme :rire:

voila merci :-)

Thymotep
Thymotep
Niveau 10
04 novembre 2006 à 10:38:49

Effectivement, dans la table tu mets une catégorie ( 1, 2, 3 ... ) et tu affiche si cat = 1 alors t´affiche tous ceux ou c´est un elseif = 2 ... et ainsi de suite :)

deepblue
deepblue
Niveau 16
04 novembre 2006 à 10:50:31

http://sqlpro.developpez.com/cours/optimiser/

jacman
jacman
Niveau 11
04 novembre 2006 à 11:07:19

ok merci,
moi j´ai fais autrement et ca m´a l´air pas mal, je liste toutes mes infos, je fais (si categorie == ...) alors je rajoute une donnée dans un tableau qui correspond a la catégorie, ensuite a la fin j´affiche mes tableau dans les bonne cellule et c´est nikel :-)

jacman
jacman
Niveau 11
04 novembre 2006 à 12:19:41

:snif2: j´ai un probleme, comme j´utilise les tableaux et que je faire un lien pour chaque donnees que j´ai suivant son id, bin ca marche pas.

jai un WHILE qui enregsitre les infos de ma BDD dans un array auquel je rajoute une info a chaque fois (array_push), le probleme, c´est qu´il me faudrait son id, alors j´enregistre son id dans un autre tableau, mais au moment de l´afficher, bien mes 2 colonnes se confonde, ce qui fait que j´ai 2 id = 1 et ca va pas ...

http://www.geneweb.fr/wall-DCUVhfpU-php.htm

voila si vous pouviez encore m´aidez :-)

jacman
jacman
Niveau 11
04 novembre 2006 à 12:58:21

bin non c´est bon, j´ai fait autrement, j´ai rajouté 2 requêtes pour avoir l´id appartenant aux donnee du tableau et ca fonctionne, sa me fait 3 requête en tout, je pense que c´est correct :-)

deepblue
deepblue
Niveau 16
04 novembre 2006 à 13:18:45

Question : tes categories proviennent du bd ?
Si oui, 2 requetes suffisent, si non, une seul requete suffit

jacman
jacman
Niveau 11
04 novembre 2006 à 13:40:42

oui elle viennent de la bdd, tu peux m´expliquer comment ?

_WatzaKamikaze_
_WatzaKamikaze_
Niveau 10
04 novembre 2006 à 13:48:59

En fait, je fais tout bosser au max sur le serveur mysql moi :/

Je sais pas si c´est bien, mais en tout cas les résultats sont améliorés.

Genre pour un if, je le foux dans une clause mysql :rire:

personne ne saît si c´est nocif ? =E

deepblue
deepblue
Niveau 16
04 novembre 2006 à 13:57:31

WatzaKamikaze > loool, quand tu as un paquet de visiteurs...ça doit ramer lol

jacman >
- 1 requete pour selectionner tt les categories
- 1 requete pour selectionner ts les forums

Une boucle pour afficher tt les categories avec dedans :
- une boucle pour tous les forums si et ssi la categorie du forum == categoerie parcourue

_WatzaKamikaze_
_WatzaKamikaze_
Niveau 10
04 novembre 2006 à 14:20:50

Nan au contraire, parce que dans mon blog par ex y a que 2 requetes mysql en tout.

Bon ok c´est requêtes elles durent longtemps :rire2: Mais tout en un :content:

deepblue
deepblue
Niveau 16
04 novembre 2006 à 14:41:05

Tu peux les montrer stp :p)

jacman
jacman
Niveau 11
04 novembre 2006 à 14:42:59

hmm deepblue, mon truc fonctionne je vais le garder, de plus je fais pas un forum :rire:

deepblue
deepblue
Niveau 16
04 novembre 2006 à 14:53:06

mais le principe est le meme...

_WatzaKamikaze_
_WatzaKamikaze_
Niveau 10
04 novembre 2006 à 15:23:06

Je t´en montre une de la page index.. xP,
y en a que je préfère garder pour moi tellement elles sont bien :cool:

SELECT COUNT(co.id_post) as nb_commentaire,
nom_categorie,
p.id_post,
titre,
p.contenu,
DATE_FORMAT(p.date,´%e/%m/%Y <center>%k h %i</center>´) as date2,
nom_admin
FROM admin as a, categorie as c, post as p
LEFT OUTER JOIN commentaire as co
ON co.id_post = p.id_post
WHERE id_admin = id_posteur
AND c.id_categorie = p.id_categorie
GROUP BY p.id_post
ORDER BY p.id_post DESC
LIMIT $location,$nb_afficher

jehuty21
jehuty21
Niveau 10
04 novembre 2006 à 18:03:17

Au lieu de faire un count() à chaque fois, rajoute une colonne dans ta table des catégorie ( et update quand on ajoute )
C´est plus ´rapide´ vu qu´on affiche bien plus souvent la page qu´on n´ajoute des commentaires

Et ton limit, il est pas portable.
Le limit, selon la norme sql, ce n´est pas limit x, y mais limit y offset x

_WatzaKamikaze_
_WatzaKamikaze_
Niveau 10
04 novembre 2006 à 18:36:28

:rire: J´ai demandé aucun conseil.

Le fait est que je préfère avoir une table claire.
Et la jointure externe est tout autant rapide, surtout que j´utilise un index.

limit par portable et pas à la norme ? :rire: je suis en isam alors je vois pas pourquoi je rajouterais des clauses pour rien. La norme MySQL ne le spécifie pas.

"Pour être compatible avec PostgreSQL, MySQL supporte aussi la syntaxe : LIMIT row_count OFFSET offset."
http://dev.mysql.com/doc/refman/5.0/fr/select.html

Si je voulais réellement optimiser ma requette je ferais des left joins au lieu de jointure interne.

jehuty21
jehuty21
Niveau 10
04 novembre 2006 à 23:31:42

Je vois pas le rapport ~~
Pourquoi tu parles de jointures internes?
Avec la ´méthode´ que j´ai décrite, pas besoin de jointure, c´est un champs comme les autres, et la table ne perds pas une once de clarté Oo

Et oui, ca fonctionne, j´ai pas dit le contraire, et oui, limit x, y est la syntaxe de base de MySQL, mais vois-tu, je préfère de loin suivre la syntaxe SQL qui assurera une plus grande compatibilité avec la plupart des sgbdr ( ou au pire, ca facilitera la migration )

Mais bien sur si tu te cantonnes à MySQL et que tu te fous de la portabilité de tes scripts, utilise donc ce que tu veux. Mais dans ce cas tu peux aussi utiliser <? ?> au lieu de <?php ?> , ou toute autre abréviation/norme peu protable qui fonctionne chez toi. ( et pour 5 caractère, y a pas quoi casser trois pattes à canard :-) ( sans compter que c´ets plus logique de dire: "prend x ligne à partir de l´offset y" plutôt que de dire: "prend, à partir de l´offset y, x lignes" ) )

Et au fait, avant de parler d´optimiser ses requêtes, ne faudrait-il pas parler d´optimiser le modèle, les tables, les bases? Choisir les bons types de table, de champs, indexer comme il faut, toussa quoi :-°

( même si on demande pas de conseil, une critique, un commentaire, .. n´as jamais tué personne quand elle est argumentée et justifiée )

elle est ou la porte? :[

_WatzaKamikaze_
_WatzaKamikaze_
Niveau 10
05 novembre 2006 à 10:23:24

"Pourquoi tu parles de jointures internes? "

jointure interne < LEFT JOIN

"Et oui, ca fonctionne, j´ai pas dit le contraire, et oui, limit x, y est la syntaxe de base de MySQL, mais vois-tu, je préfère de loin suivre la syntaxe SQL qui assurera une plus grande compatibilité avec la plupart des sgbdr ( ou au pire, ca facilitera la migration ) "

:o)) Oui oui.

"Et au fait, avant de parler d´optimiser ses requêtes, ne faudrait-il pas parler d´optimiser le modèle, les tables, les bases? Choisir les bons types de table, de champs, indexer comme il faut, toussa quoi :-°"
:cool: Ouai mais ça je sais le faire.

jehuty21
jehuty21
Niveau 10
05 novembre 2006 à 13:53:07

Ah?
Bin tu sais quoi, en ajoutant une colonne qui contient le nombre de commentaire, ta jointure, elle disparait.

Juste par curiosité, tu sais me dire quelle est la différence entre ces deux requête ( une des deux est plus performante quel´autre, tu sais me dire laquelle et pourquoi? )
SELECT
t1.col1, t1.col2, t2.col1, t2.col2
FROM table1 t1, table2 t2
WHERE t1.col1 = t2.col1

SELECT
t1.col1, t1.col2, t2.col1, t2.col2
FROM table1 t1
LEFT JOIN table2 t2 ON t2.col1 = t1.col1

Ca devrait être facile pour toi vu que tu sais tout opimiser :-)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment