[MySQL] Sélection précise d'entrées dans l'ordre, et doubles

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

Re: [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par chrislabricole » 16 oct. 2009, 18:26

Ah :) Je ne connaissais pas cette méthode, ça marche aussi :)
Et, oui, je fais un array_unique() sur le panier, pour éviter que des code-barres y soit 2 fois dans la série des OR :P

Merci !

Re: [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par fab » 16 oct. 2009, 17:46

Ah ok :) Donc effectivement tu as pris une bonne méthode, dans ton WHERE tu as bien fais attention par contre à avoir qu'une seule fois chaque ID ? Au passage si tu dois faire :
WHERE id = 1 OR id = 2 OR id =3 etc...
c'est plus agréable d'avoir un :
WHERE id IN(1,2,3)

:)

Re: [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par chrislabricole » 16 oct. 2009, 17:35

Non, en fait mon panier est stocké en session, désolé d'avoir oublié de le préciser :)

Re: [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par fab » 16 oct. 2009, 17:28

Mais ton panier il est bien stocké quelque part en base non ? Et tu arrives bien à le récupérer dans l'ordre qui t'intéresse ?
Si oui dans cette requête tu peux ajouter un LEFT JOIN avec comme condition de jointure l'association produit code barre non?

Ainsi que tu auras une seule requête, pas besoin d'array et les résultats dans l'ordre que tu veux :)

Re: [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par chrislabricole » 16 oct. 2009, 17:09

Merci de ta réponse, à tête reposée, j'ai fini par trouver une solution, non, pas celle de la requête dans la boucle :mrgreen:

1) Je fais une requête avec le WHERE, et la série de OR à la suite...
2) Je fais une boucle avec le mysql_fetch_array(), et je stocke les données, bien organisées, dans un array.
3) Je fais un foreach sur le panier qui contient les codes barres (dans l'ordre et double possible)
4) Et je pioche les informations sur le produit associé au code-barres dans l'array crée à l'étape 2)

C'est peut-être pas la meilleure des solutions, mais ça fonctionne parfaitement sans prendre trop de ressources, et sans trop se casser la tête en changeant pas trop la structure pour ça ;)

Merci !

Re: [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par ouckileou » 15 oct. 2009, 23:30

C'est pas parfait mais c'est déjà mieux : tu devrais toujours expliquer ton but, et pas arriver avec un début de solution bancale. En sachantp ourquoi tu veux faire ça, on peut t'aider à trouver la meilleure solution :P

Parceque là on voit que ce que tu veux c'est compter plusieurs fois la même ligne, donc avoir une quantité quelque part. On ne sélectionne pas plusieurs fois une ligne dans un select. De même, ton order peut être conservé quelque part.

Donc tu devrais vraiment nous expliquer le contexte de ton appli, mais déjà là on pourrait voir un tableau de clé par exemple, à la fin tu connais le nombre de fois où est présente chaque clé, donc la quantité, et ton ordre si tu le veux. Si c'est un panier, tu peux stocker la clé étrangère vers ton produit, son ordre d'affichage et sa quantité.

1. Passage du code barre
2. Stockage code barre produit dans un tableau : clé = code barre, valeur = quantité. Si déjà présent, valeur incrémentée, sinon valeur initialisée.
3. Retour au 1. etc
4. Stockage du panier avec les codes barres stocké et leur quantité, calcul du prix etc.

Mais ton SELECT bizarre avec 2 fois la condition "id = 5" pour sélectionner deux fois la même ligne, tu peux oublier ça n'a pas de sens. D'ailleurs tu le sais bien, tu sais quand même que derrière le WHERE ce sont des conditions de filtrage... rien de plus. L'ordre non naturel et la quantité sont des informations, elles doivent correspondre à quelque chose dans ta base.

Re: [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par chrislabricole » 15 oct. 2009, 22:20

C'est qu'en fait, le produit (ou la news dans mon exemple) doit pouvoir être affichée 2 fois, et le tout dans l'ordre. C'est un peu difficile à expliquer dans le contexte de mon application ...
Si tu veux, c'est un peu comme une caisse de magasin :
Imagine que l'association des code barres, du nom du produit et de son prix se face avec MySQL.
Et qu'a chaque fois que la caissière scanne un produit, ça ne fasse pas une requête à chaque fois, mais que ça envoi une grosse requête à la fin.
Eh bien ça serait bien de pouvoir acheter plusieurs fois le même produit, et de garder l'ordre de scannage du produit, que ça soit pas tout mélanger, c'est-à-dire, classer dans l'ordre croissant du code-barres quoi ...

J'espère que c'est plus clair :)

Re: [MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par ouckileou » 15 oct. 2009, 22:05

Quel est le but de cette manœuvre ? En terme de fonctionnalité ?

[MySQL] Sélection précise d'entrées dans l'ordre, et doubles

par chrislabricole » 15 oct. 2009, 21:18

Bonsoir ! :)

Je bloque sur une requête: Je voudrais sélectionner des entrées précises, qui peuvent être sélectionnées 2 fois, et, tout en gardant l'ordre.

Exemple :
SELECT * FROM news WHERE id=18 OR id=5 OR id=50 OR id=5 OR id=3
Et je voudrais qu'elle me renvoie donc toutes les news (même les doubles), et le tout dans l'ordre où je l'ai énuméré dans la requête.

Merci d'avance ! ;)