Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 23h54   #1
Membre du Club
 
Inscription : avril 2011
Messages : 91
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 91
Points : 40
Points : 40
Par défaut Présentation des données

Bonsoir.

Je sais que le titre n'est pas clair mais je ne savais pas vraiment comment résumer mon problème.
Je vais essayer d'expliquer le plus clairement possible.

J'ai fait un script de "missions" formées d'étapes.
J'ai donc une table "missions" et une table "etapes" ayant un champ "id_mission".

Un exemple sera plus parlant pour commencer.
- J'ai 1 mission composée de 3 étapes.
- Pour l'étape n°1 je dois aller au point A.
- Pour l'étape n°2 je dois aller au point B et en plus avoir l'objet X.
- Pour l'étape n°2 je dois aller au point B, avoir l'objet X et avoir 200€.

Si je n'avais comme condition que "aller à un point" j'aurais juste mis un champ "position" mais avec cet exemple on voit que j'ai besoin de faire un SELECT sur les tables "users" (position, argent) et "inventaire" (objet).

A l'heure actuelle je fais un beau truc de brute en insérant directement les requêtes dans un champs "conditions" de ma table "etapes" et en plus d'être moche c'est pas pratique mais je ne trouve pas de solution.

Quelqu'un aurait-il déjà eu un problème similaire ou aurait un début de piste ?

Merci.
p4ndore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 00h02   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
dans ta table étape tu rajoute un champs pour objet et un champs pour utilisateurs qui sont des clé étrangères (id user et id objet) qui peuvent être null, t'as plus qu'à faire une jointure...après sans le mcd je ne suis pas sur de répondre à ta question...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 00h11   #3
Membre du Club
 
Inscription : avril 2011
Messages : 91
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 91
Points : 40
Points : 40
Merci de ta réponse.

Dans mon cas cela ne va pas être possible.
J'ai 3 types d'objets donc il me faudrait un id_objet et un id_type.

A la rigueur ça pourrait marcher mais si j'ai besoin de 2 objets ou plus ? Il faudrait que je sépare les valeurs par des virgules et que j'associe tous les id_objet avec les bons id_type.
Même si j'aime pas trop cette solution je pourrais m'en contenter.

Comment faire pour demander la position X et en même temps la somme d'argent Y ?
L'autre inconvénient est que si je rajoute une condition je dois modifier les champs :/
p4ndore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 00h27   #4
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
j'ai du mal à cerner ton problème sans détails...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 10h59   #5
Membre du Club
 
Inscription : avril 2011
Messages : 91
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 91
Points : 40
Points : 40
J'avoue que je ne vois pas trop comment l'expliquer.

Tu ne comprends pas quoi ?

Ce qu'il faut savoir c'est que je dois pouvoir tester n'importe quel champ de n'importe quelle table.

Je dois pouvoir tester le champ "position", le champ "argent" de la table "users" mais peut-être que demain j'aurai besoin de tester le champ "groupe".
p4ndore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 11h36   #6
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
t'as pas un mcd ?
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 22h39   #7
Membre du Club
 
Inscription : avril 2011
Messages : 91
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 91
Points : 40
Points : 40
Je n'en n'ai pas sous la main et à dire vrai il n'y en a pas besoin.

Il faut que je puisse tester n'importe quel champ de n'importe quelle table.
p4ndore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 16h44   #8
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Tu peux créer les tables :
- condition
- type_condition
- etape_condition

Condition contiendrait les champs :
- id_condition : clé primaire
- valeur : (Coordonée de point, prix, ce que tu veux)
- id_type : (clé étrangère de type_condition)

type_condition contiendrait les champs :
- id_type : clé_primaire
- valeur : type de condition (Argent, Etape,...)

Etape_condition contiendrait les champs :
- id_etape : clé étrangère d'une étape
- id_condition : clé étrangère d'une condition

Cela te permettrait d'avoir autant de condition que tu veux par étape de n'importe quel type.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 19h59   #9
Membre du Club
 
Inscription : avril 2011
Messages : 91
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 91
Points : 40
Points : 40
En voilà une solution qu'elle est bonne et dont j'étais à des milles de trouver.

Il va juste falloir que je la mette en pratique pour bien m'en imprégner

Merci beaucoup Marc3001
p4ndore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 09h56   #10
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 028
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 028
Points : 18 321
Points : 18 321
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par vorace Voir le message
t'as pas un mcd ?
Citation:
Envoyé par p4ndore Voir le message
Je n'en n'ai pas sous la main et à dire vrai il n'y en a pas besoin.
C'est sans doute là que ce situe le premier problème !
C'est une grosse erreur d'implanter une BDD un tant soit peu complexe sans avoir modélisé les données en se basant sur des règles de gestion claires.

Pour apprendre à modéliser les données, regarde le cours de SQLPro.
Si tu as besoin d'aide pour la modélisation, adresse-toi au forum Schéma.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 10h04   #11
Membre du Club
 
Inscription : avril 2011
Messages : 91
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 91
Points : 40
Points : 40
Désolé la fin de ma phrase est incomplète

"Il n'y en a pas besoin pour cet exemple"

Mais je te remercie pour les liens

Je voulais que cela fonctionne sans connaître les données à l'avance.

Pour le moment je suis en train d'adapter la solution de Marc3001.
Si tout fonctionne bien je passe en RESOLU
p4ndore est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h32.


 
 
 
 
Partenaires

Hébergement Web