plusieurs valeurs pour une variable?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 09:59

@ouckileou : OK excuse moi, je pensais que tu voulais différencier le cas ou une imprimante n'a qu'une référence de cartouche des autres cas
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 10:01

@ cyrano

Dans la table intermediare je suis pas oblige d avoir un id_correspond, si ?

Sinon une autre question la qui me turlupine,
avant dans mon traitement php j'avais reussit a faire (a force de galeres :() des listes deroulantes liees ou quand je selectionais une imprimante la liste deroulante des cartouche en dessous ce mettais a jour tout seule et ne me donnais que cartouche possible pour l imprimante choisie. Or maintenant que je n ai plus la cle etrangere imprimante dans la table cartouche il devenu impossible de retrouver les cartouche possible par imprimante ?
Il faut mieux toujours mettre un ID dans une table, même si tu ne t'en sers pas

Ensuite, au lieu de sélectionner toutes les cartouches dont la référence correspond à l'imprimante, tu sélectionne toutes les cartouches qui sont associé à la référence de l'imprimante dans la table intermédiaire
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 10:02

Or maintenant que je n ai plus la cle etrangere imprimante dans la table cartouche il devenu impossible de retrouver les cartouche possible par imprimante ?
bien sur que si, tes imprimantes et tes cartouches sont toujours liées, mais via une table relation, il suffit de changer la requête

exemple :
pour avoir les infos d'une imprimante précise (la 15) :

imprimantes(Num_imprimante, imprimante, service#);
cartouches(reference,libelle,prix,stock,compatible);
convient(Num_imprimante#,reference#);

Code : Tout sélectionner

SELECT ca.reference, ca.libelle, ca.prix FROM imprimantes i, cartouches ca, convient co WHERE i.Num_imprimante = 15 AND i.Num_imprimante = co.Num_imprimante AND co.reference = ca.reference
Modifié en dernier par ouckileou le 28 juin 2005, 10:04, modifié 1 fois.

Eléphant du PHP | 419 Messages

28 juin 2005, 10:03

bah non t'est pas obligé de mettre id_correspond vu que les deux clés étrangéres font offices de clés primaires composés

Eléphant du PHP | 55 Messages

28 juin 2005, 10:11

hein hein

je vais encore galerer. et dire tout marchais pk on viens de m apprendre ce matin qu'une meme cartouche pouvait alle dans differente imprimante....... :'(((((

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 10:12

sort ta propre cartouche et tente de l'imposer comme standard universel... je ne vois que ça :lol:

enfin blague à part, c'est pas si compliqué, au lieux d'avoir une jointure, tu en as deux... c'est pas la mer à boire encore ;)

Eléphant du PHP | 55 Messages

28 juin 2005, 10:30

^^ c est jamais bien complique sur le papier quoique ^^

Autre question (ouais suis relou je sais :D) je donne a mes utilisateur la possiblite de renter des imprimante via un une interface html / php et donc il on un menu pour rentrer une nouvelle imprimante, la pas de soucis
il rentre le nom de l imprimante, il selectionne le service dans une liste et le numero d imprimante est auto incremente la pas de soucis ca ca ne bouge pas.

Apres il on un autre lien pour rentrer les cartouches et c est la que j ai besoin d une precision avant il rentrait la reference le libelle le prix le stock la compatibilite et il avait un menu deroulant avec les differente imprimante dispo.
la il en choisissait une et ca rattachait la nouvelle cartouche a l imprimante.

maintenant comment je fais pour que les utilisateur puisse me preciser l imprimante a laquelle elle est ratachee et quand il y a plusieurs imprimantes :shock: . . . . :cry:

Eléphant du PHP | 91 Messages

28 juin 2005, 10:31

bein tu fais un systeme qui permet d'ajouter des imprimantes pour une cartouche (genre un popup et quand il ajoute une imprimante, ca raffraichit ta page source) et dans ta page source tu affiche les imprimantes ajoutées sous la forme d'un tableau par exemple
YaTTa :D

Mammouth du PHP | 19672 Messages

28 juin 2005, 10:32

Mets leur un menu déroulant avec "multiple" pour en sélectionner plusieurs à la fois si nécessaire, tu récupères le tout dans un tableau.

Après, tu génères tes requêtes d'insertion.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 10:32

il suffit de proposer toutes les imprimantes disponibles, avec des cases à cocher ou liste déroulante à choix multiples

et de récupérer toutes les valeurs choisies et insérer une ligne pour chaque dans la relation

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 10:36

3 solutions plus ou moins viables en l'espace de 1minutes

freebug, fait ton marché
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 55 Messages

28 juin 2005, 11:22

ouais,

en fait mon probleme est avant :)

disons que l utulisateur me donne les données suivantes :

-reference = test
-libelle = essai
-prix = 15
-stock = 1
-compatible = oui
imprimante = hp 1220c

ma requete d'insertion pour l imprimante:

INSERT INTO cartouche(reference,libelle,prix,stock,compatible)
VALUES ('test','essai',15,1,'oui');

mais pour relier ma cartouche a mon imprimante je fais comment (sachant que mon formulaire travail avec le numero dimprimante mais affiche le nom de l imprimante) ?
il me refaut une insertion ? nan et si oui quoi comme insertion

sinon je suis oblige d avoir un formulaire a choix multiple si l utilsateur remplie autant de fois que d imprimante le menu pour la nouvelle cartouche ca marchera ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 11:31

j'ai pas compris la dernière phrase
(tu veux dire que tu veux faire remplir le formulaire plusieurs fois ? moi ça me saoulerait de faire ça...)

sinon tu gardes ton formulaire de base, sauf pour l'imprimante

tu enregistres les premières infos avec ton insert que tu avais

tu rajoutes des checkbox pour chaque imprimante, tu récupères le numéro d'imprimante liée à chaque case cochée

et pour chaque valeur tu fais un insertion dans ta table relation avec id_cartouche insérée/id_imprimante sélectionnée

Eléphant du PHP | 55 Messages

28 juin 2005, 11:39

ok mais ca va pas marcher si je leur fait remplir 3 fois le formulaire,
car ca va faire faire declarer 3 fois la meme cle primaire (dans le cas ou la cartouche aille pour 3 imprimante differente).

d autre par les checkbox ca va pas alle pk il va falloir que je cree tout les checkbox a la main or si l utilisateur viens juste rentre une nouvelle imprimante, elle n apparaiterai pas dan sles chekbox.

D'autre part vous m avez parlez de luiste a choix multiple vous pouvez m en dire plus dessus ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

28 juin 2005, 11:45

ok mais ca va pas marcher si je leur fait remplir 3 fois le formulaire,
car ca va faire faire declarer 3 fois la meme cle primaire (dans le cas ou la cartouche aille pour 3 imprimante differente).
oui, et en plus c'est un bizarre comme manipulation
d autre par les checkbox ca va pas alle pk il va falloir que je cree tout les checkbox a la main or si l utilisateur viens juste rentre une nouvelle imprimante, elle n apparaiterai pas dan sles chekbox.
ben non, tu crées tes checkbox dynamiquement, en sélectionnant toutes les entrées de ta table imprimante
D'autre part vous m avez parlez de luiste a choix multiple vous pouvez m en dire plus dessus ?
c'est simplement une liste déroulante dans laquelle tu peux choisir plusieurs options, en faisant Ctrl+clic