IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Filtrage Tableau par Liste deroulante.


Sujet :

PHP & Base de données

  1. #21
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Parce que sinon comment peut-on créer les liaison entre les tables? Je ne comprends pas.

    Pour moi le fichier SQL ressemblerait à ceci (j'ai mis mes hypothèses en commentaire) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    CREATE TABLE t_type_produit (
    id_type_produit int(10) NOT NULL AUTO_INCREMENT,
    type_produit varchar(30) NOT NULL,
    PRIMARY KEY ( id_type_produit ),
    );
     
    CREATE TABLE t_client (
    id_client int(10) NOT NULL AUTO_INCREMENT,
    client varchar(30) NOT NULL,
    PRIMARY KEY ( id_client ),
    );
     
    CREATE TABLE t_ros (
    id_ros int(10) NOT NULL AUTO_INCREMENT,
    nom_ros varchar(30) NOT NULL,
    PRIMARY KEY ( id_ros ),
    );
     
    CREATE TABLE t_ville (
    id_ville int(10) NOT NULL AUTO_INCREMENT,
    cp_ville varchar(30) NOT NULL,
    nom_ville varchar(30) NOT NULL,
    PRIMARY KEY ( id_ville ),
    );
     
    CREATE TABLE t_produit (
    id_produit int(10) NOT NULL,
    adresse_produit varchar(50) NOT NULL,
    id_type_produit varchar(30) NOT NULL,
    -- id_client varchar(30) NOT NULL,
    -- id_ros varchar(30) NOT NULL,
    -- id_ville varchar(30) NOT NULL,
    PRIMARY KEY ( id_produit ),
    FOREIGN KEY ( id_type_produit ) references t_type_produit(id_type_produit),
    -- FOREIGN KEY ( id_client ) references t_client(id_client),
    -- FOREIGN KEY ( id_ros ) references t_ros(id_ros),
    -- FOREIGN KEY ( id_ville ) references t_ville(id_ville)
    );
     
    ALTER TABLE t_produit ADD CONSTRAINT id_produit_unique UNIQUE(id_produit);

  2. #22
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par stevenP Voir le message
    Il n'y a pas plus de clé étrangère ?
    Probablement, mon schéma n'est qu'une ébauche faite à la va-vite sur un coin de mon clavier.

    Citation Envoyé par stevenP Voir le message
    Il n'y a pas plus de clé étrangère ?
    Juste id_type_produit ? Parce que comme je disais chaque dossier (donc chaque "id_produit" est considéré comme totalement autonome, et c'est pour ça que je disais qu'un "id_produit", possede un "cp_ville", un "nom_ville", une "adresse_produit", un "client", et un "nom_ros".
    En gros, l'identifiant du Produit est au centre, et on vient lui ajouter les informations.
    C'est pour ça que j'aurais ajouté d'autre clé étrangère à la table "t_produit".
    Ce n'est pas possible ?
    Non, tu vas verrouiller la base de données et les évolutions seront quasi impossibles à faire : voici comment j'ai perçu ta problématique à partir de tes infos :
    Le produit existe par lui-même et est identifié : id, adresse, id_ville, id_type_produit
    Ensuite, il est affecté à un client
    Un produit ne peut être affecté qu'à un seul et unique client
    Pour chaque affectation il y a un seul gestionnaire
    Le produit peut être réaffecté à un autre client
    Un client peut consommer de 0 à n produits
    Le gestionnaire peut changer au cours du temps mais l'affectation ne peut avoir à chaque moment qu'un seul et unique gestionnaire.
    Chaque gestionnaire peut gérer de 0 à n affectations.

    J'ai vu juste ?

  3. #23
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Dans ton schéma, tu verrouilles tes évolutions en mettant tout dans la table t_produit. Déportes ces liens dans d'autres tables.

  4. #24
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    C'est presque ça !

    Je me permet de corriger ton texte :

    Le produit existe par lui-même et est identifié : id, adresse, id_ville, id_type_produit
    => C'est le client qui a adresse et id_ville .
    Le client est localisé à une adresse, et c'est à cette adresse que la production doit arriver à l'extremité finale de la liaison.
    Je lierait donc "adresse" à "t_client" ? et j'ajoute une clé etrangère "id_ville" à "t_client" ?

    Ensuite, il est affecté à un client
    Pour chaque affectation il y a un seul gestionnaire.
    Le produit peut être réaffecté à un autre client
    Un client peut consommer de 0 à n produits
    Le gestionnaire peut changer au cours du temps mais l'affectation ne peut avoir à chaque moment qu'un seul et unique gestionnaire.
    => Oui voila Chaque "id_produit" est affecté à UN gestionnaire.
    Chaque gestionnaire peut gérer de 0 à n affectations (0 à n "id_produit").

    Je me rends donc compte avec cette synthèse que je me suis trompé aussi. je vais essayé de corriger mon SQL là.

  5. #25
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    J'ai fais mon schéma comme ça.
    Images attachées Images attachées

  6. #26
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    et mon SQL modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    CREATE TABLE t_type_produit (
    id_type_produit int(10) NOT NULL,
    type_produit varchar(30) NOT NULL
    PRIMARY KEY ( id_type_produit )
    );
     
    CREATE TABLE t_client (
    id_client int(10) NOT NULL,
    client varchar(30) NOT NULL,
    id_ville varchar(30) NOT NULL,
    PRIMARY KEY ( id_client )
    );
     
    ALTER TABLE t_client ADD FOREIGN KEY (id_ville) REFERENCES t_ville(id_ville);
     
    CREATE TABLE t_ros (
    id_ros int(10) NOT NULL,
    nom_ros varchar(30) NOT NULL,
    PRIMARY KEY ( id_ros )
    );
     
    CREATE TABLE t_ville (
    id_ville int(10) NOT NULL,
    cp_ville varchar(30) NOT NULL,
    nom_ville varchar(30) NOT NULL,
    PRIMARY KEY ( id_ville )
    );
     
    CREATE TABLE t_produit (
    id_produit int(10) NOT NULL,
    adresse_produit varchar(50) NOT NULL,
    id_type_produit varchar(30) NOT NULL,
    PRIMARY KEY ( id_produit )
    );
     
    ALTER TABLE t_produit ADD FOREIGN KEY (id_type_produit) REFERENCES t_type_produit(id_type_produit);
     
    ALTER TABLE t_produit ADD CONSTRAINT id_produit_unique UNIQUE(id_produit);

  7. #27
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ok, il faut bien que tu vois que la philosophie de ta problématique change en fonction du point de vue :
    De ton post précédent, je peux en déduire que le produit n'existe pas en tant que tel. Le produit n'existe que parce qu'il est affecté à un client (avec une adresse) et sans client plus de produit.
    Cela revient à dire que ta société offre un service qui se transforme en produit à condition qu'il soit consommé (ou affecté). Et ben, c'est pas pareil. Tes ROS gèrent des produits donc des affectations. Et tes produits sont des services affectés. Je pense que tu peux modifier en conséquence le schéma.

  8. #28
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Allez je vais faire de la pub pour un super produit gratuit qui mériterait d'être plus connu avec lequel je fais mes graphs : yEd.

  9. #29
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Dans mon schéma j'ai bien séparé en 3 :
    -> t_client et t_ville d'un coté Autonome.
    -> t_produit et t_type produit de l'autre que l'on peut lier à un client.
    -> t_ros qui gère le produit.

    mon schéma me semble bon.

    EDIT: Ton logiciel est vraiment bon !
    Images attachées Images attachées

  10. #30
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tu y es presque je pense :
    Images attachées Images attachées

  11. #31
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Je viens de m'entretenir avec mon maitre d'apprentissage au sujet de mon schéma. Il m'a fait part d'un point que j'ai oublié.
    En fait, je ne peux pas lié "addresse_produit" à "t_client", car Dans la cas d'une tour hebergeur par exemple, une adresse physique correspond à x clients.

    Il suffirait, je pense, de créer une table t_adresse entre t_client et t_ville.

    "t_ville"
    -> id_ville
    -> cp_ville
    -> nom_ville

    "t_adresse"
    -> id_adresse
    -> adresse
    -> id_ville (clé etrangère car une adresse appartient à une ville)

    "t_client"
    -> id_client
    -> nom_client
    -> id_adresse (clé etrangère car une adresse appartient à une adresse)

    Dans ton schéma, pourquoi des tables t_service et Gestion ? Je ne vois pas leurs intérets. On ne peut pas faire le lien directement ?
    Images attachées Images attachées

  12. #32
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    CREATE TABLE t_ville (
    id_ville int(10) NOT NULL,
    cp_ville varchar(30) NOT NULL,
    nom_ville varchar(30) NOT NULL,
    PRIMARY KEY ( id_ville )
    );
     
    CREATE TABLE t_adresse (
    id_adresse int(10) NOT NULL,
    adresse varchar(50) NOT NULL,
    id_ville varchar(30) NOT NULL,
    PRIMARY KEY ( id_adresse )
    );
     
    ALTER TABLE t_adresse ADD FOREIGN KEY (id_ville) REFERENCES t_ville(id_ville);
     
    CREATE TABLE t_client (
    id_client int(10) NOT NULL,
    client varchar(30) NOT NULL,
    id_adresse varchar(30) NOT NULL,
    PRIMARY KEY ( id_client )
    );
     
    ALTER TABLE t_client ADD FOREIGN KEY (id_adresse) REFERENCES t_adresse(id_adresse);
     
    CREATE TABLE t_ros (
    id_ros int(10) NOT NULL,
    nom_ros varchar(30) NOT NULL,
    PRIMARY KEY ( id_ros )
    );
     
    CREATE TABLE t_type_produit (
    id_type_produit int(10) NOT NULL,
    type_produit varchar(30) NOT NULL
    PRIMARY KEY ( id_type_produit )
    );
     
    CREATE TABLE t_produit (
    id_produit int(10) NOT NULL,
    id_type_produit varchar(30) NOT NULL,
    id_ros varchar(30) NOT NULL,
    id_client varchar(30) NOT NULL,
    PRIMARY KEY ( id_produit )
    );
     
    ALTER TABLE t_produit ADD FOREIGN KEY (id_type_produit) REFERENCES t_type_produit(id_type_produit);
    ALTER TABLE t_produit ADD FOREIGN KEY (id_ros) REFERENCES t_ros(id_ros);
    ALTER TABLE t_produit ADD FOREIGN KEY (id_client) REFERENCES t_client(id_client);
     
    ALTER TABLE t_produit ADD CONSTRAINT id_produit_unique UNIQUE(id_produit);

  13. #33
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bon avec tout ça on en revient à mon 1er schéma
    L'intérêt de séparer la production de la gestion réside dans le fait qu'il est possible de changer de ros en cours de route sans modifier pour autant la production.
    Images attachées Images attachées

  14. #34
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Effectivement oui on y revient

    D'accord, je comprends mieux le fait que tu l'ai scinder donc.
    Mais le ROS ne change jamais en cours de production ! Celui ci est fixe.
    Est-il donc vraiment necessaire de créer "t_gestion" si le ROS ne change jamais ?
    Le ROS est affecté au départ à la signature du contrat et il pilote tout le long de la production. (Le poste d'un ROS c'est "Pilotage Production Trés Haut Débit")

    Et je pense que la table service n'est pas nécéssaire, car je te l'accorde que ce n'est pas simple à comprendre, même moi j'ai eu du mal au départ.. Mais le produit est une liaison haut débit, et le type de produit, c'est comme le modele, ici ça correspond à un type de contrat. Comme pour les voitures, le produit c'est renault, et le type de produit c'est Clio. Tu vois le genre ?
    Donc, on ne peut pas l'assimiler à un service je pense. Le produit est considéré comme un produit fini.

    J'en ai refait un schéma que je pense correct !
    Images attachées Images attachées

  15. #35
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    CREATE TABLE t_ville (
    id_ville int(10) NOT NULL,
    cp_ville varchar(30) NOT NULL,
    nom_ville varchar(30) NOT NULL
    );
     
    ALTER TABLE t_ville ADD CONSTRAINT pkt_ville PRIMARY KEY (id_ville);
     
    CREATE TABLE t_client (
    id_client int(10) NOT NULL,
    client varchar(30) NOT NULL
    );
     
    ALTER TABLE t_client ADD CONSTRAINT pkt_client PRIMARY KEY (id_client);
     
    CREATE TABLE t_ros (
    id_ros int(10) NOT NULL,
    nom_ros varchar(30) NOT NULL
    );
     
    ALTER TABLE t_ros ADD CONSTRAINT pkt_ros PRIMARY KEY (id_ros);
     
    CREATE TABLE t_type_produit (
    id_type_produit int(10) NOT NULL,
    type_produit varchar(30) NOT NULL
    );
     
    ALTER TABLE t_type_produit ADD CONSTRAINT pkt_type_produit PRIMARY KEY (id_type_produit);
     
    CREATE TABLE t_produit (
    id_produit int(10) NOT NULL,
    adresse varchar(50) NOT NULL,
    id_type_produit int(10) NOT NULL,
    id_ros int(10) NOT NULL,
    id_client int(10) NOT NULL,
    id_ville int(10) NOT NULL
    );
     
    ALTER TABLE t_produit ADD CONSTRAINT pkt_produit PRIMARY KEY (id_produit);
     
    ALTER TABLE t_produit ADD CONSTRAINT fkt_produit_type_produit FOREIGN KEY (id_type_produit) REFERENCES t_type_produit(id_type_produit);
    ALTER TABLE t_produit ADD CONSTRAINT fkt_produit_ros FOREIGN KEY (id_ros) REFERENCES t_ros(id_ros);
    ALTER TABLE t_produit ADD CONSTRAINT fkt_produit_client FOREIGN KEY (id_client) REFERENCES t_client(id_client);
    ALTER TABLE t_produit ADD CONSTRAINT fkt_produit_ville FOREIGN KEY (id_ville) REFERENCES t_ville(id_ville);

  16. #36
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par stevenP Voir le message
    D'accord, je comprends mieux le fait que tu l'ai scinder donc.
    Mais le ROS ne change jamais en cours de production ! Celui ci est fixe.
    Est-il donc vraiment necessaire de créer "t_gestion" si le ROS ne change jamais ?
    Le ROS est affecté au départ à la signature du contrat et il pilote tout le long de la production. (Le poste d'un ROS c'est "Pilotage Production Trés Haut Débit"
    Alors là je pense que tu t'avances un peu, imagine toi qu'à chaque changement de ROS tu sois obligé de re-signer tous les contrats supervisés par le ROS sur le départ.
    Inepte. La supervision d'un contrat doit pouvoir être transférée à un autre ROS.

    Citation Envoyé par stevenP Voir le message
    Et je pense que la table service n'est pas nécéssaire, car je te l'accorde que ce n'est pas simple à comprendre, même moi j'ai eu du mal au départ.. Mais le produit est une liaison haut débit, et le type de produit, c'est comme le modele, ici ça correspond à un type de contrat. Comme pour les voitures, le produit c'est renault, et le type de produit c'est Clio. Tu vois le genre ?
    Donc, on ne peut pas l'assimiler à un service je pense. Le produit est considéré comme un produit fini.
    Tu fais un abus de langage. Tu ne peux pas dire que le produit c'est Renault.
    Comme tu ne peux pas dire non plus que ton produit c'est Orange ou SFR.

    C'est plus subtil que ça :
    le produit n'existe pas en tant que tel. Le produit n'existe que parce qu'il est affecté à un client (avec une adresse) et sans client plus de produit. Cela revient à dire que ta société offre un service qui se transforme en produit à condition qu'il soit consommé (ou affecté).
    Donc si tu te place d'emblée dans l'optique d'une évolution de cette base, je te déconseille de trop simplifier la sémantique et surtout la réalité. Faut toujours bien peser les raccourcis...

    Voici comment je vois les choses :
    Service = Ligne haut débit
    Type de service = ADSL | Fibre | 3G
    Production : Abonnement du client X au service "Ligne haut débit"... à compter du 2012-01-01...
    ROS : Pierre du 2012-01-01 -> 2012-01-31
    ROS : Paul du 2012-02-01 -> 9999-12-31

    Et si tu restes malgré tout avec ton design, t'embêtes pas à créer une base de données. Colles toutes tes données à partir d'Excel dans une table qui reprend exactement la même structure et roules avec (rapide et pas cher)
    Il ne restera qu'à tripatouiller un peu le SQL mais ça devrait gazer.

  17. #37
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Alors là je pense que tu t'avances un peu, imagine toi qu'à chaque changement de ROS tu sois obligé de re-signer tous les contrats supervisés par le ROS sur le départ.
    Inepte. La supervision d'un contrat doit pouvoir être transférée à un autre ROS.
    C'est plus subtil que ça encore. Il n'y a pas de changement de ROS car, il y a un ROS défini (et définitif) par numéroID de produit. Il ne transfert jamais sa prod' à un autre ROS (sauf en cas d'absence, mais même dans ce cas là le ROS ne change pas, c'est juste son Backup qui prend le relai sans se positionner sur le contrat)


    Citation Envoyé par rawsrc Voir le message
    Tu fais un abus de langage. Tu ne peux pas dire que le produit c'est Renault.
    Comme tu ne peux pas dire non plus que ton produit c'est Orange ou SFR.

    C'est plus subtil que ça :
    Donc si tu te place d'emblée dans l'optique d'une évolution de cette base, je te déconseille de trop simplifier la sémantique et surtout la réalité. Faut toujours bien peser les raccourcis...

    Voici comment je vois les choses :
    Service = Ligne haut débit
    Type de service = ADSL | Fibre | 3G
    Production : Abonnement du client X au service "Ligne haut débit"... à compter du 2012-01-01...
    ROS : Pierre du 2012-01-01 -> 2012-01-31
    ROS : Paul du 2012-02-01 -> 9999-12-31
    En fait, oui mon exemple n'étais pas judicieux. j'aurais du plutot dire, que le produit c'est "CLIO" et le type c'est "Dynamique" ou "Privilège".
    Pour etre encore plus clair, par exemple :
    Produit = Liaison Fibre Optique (Toujours ! Il n'y a que le numéro ID du produit qui change pour l'identifier)
    Type de produit = Fibre Securisé intra batiment / Fibre Securisé Inter-Site / ...
    Production : Abonnement du client X au service "Liaison Fibre Optique"... à compter du 2012-01-01...
    ROS : Pierre du 2012-01-01 -> 2012-01-31 (un fois que la production est terminée, le ROS n'entre plus jamais en compte, la liaison est produite et mise à disposition donc elle change de service et pars en "SAV" si j'puis dire)

    Citation Envoyé par rawsrc Voir le message
    Et si tu restes malgré tout avec ton design, t'embêtes pas à créer une base de données. Colles toutes tes données à partir d'Excel dans une table qui reprend exactement la même structure et roules avec (rapide et pas cher)
    Il ne restera qu'à tripatouiller un peu le SQL mais ça devrait gazer.
    Comme j'avais fait au tout début avec ma table "Base" ?



    en utilisant par exemple que des "base.adresse" / "base.ville" ?

  18. #38
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ok, j'ai beaucoup mieux compris où tu voulais en venir, merci.
    Je pense du coup que le schéma du message 34 est parfait.

    Vu la simplicité de ce que tu dois gérer, tu peux aussi utiliser ta table unique Base.
    Il te suffira de jouer avec le SQL pour t'en sortir : SELECT DISTINCT...

  19. #39
    Membre du Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Novembre 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    Bon je vais déja démarrer ce projet par une unique base d'historique.
    Je modifierai si besoin en est !

    Donc, en prenant en compte une seule base.

    J'ai essayé d'importer depuis ma base Excel, ça marche très bien.
    J'ai mis que 15 entrées pour pouvoir faire mes tests correctement ^^

    J'ai 7 colonnes :
    -> id_produit
    -> type_produit
    -> ros
    -> client
    -> adresse
    -> ville
    -> codepostal

    J'me suis créé un petit script pour faire l'affichage de ma base sur une page, ça marche bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
     
    $requete = 'SELECT * FROM histo';
     
    mysql_connect('localhost', 'root', '');
    mysql_select_db('xls_db');
     
    /***********************************************************************************/
     
    $res = mysql_query($requete) or exit(mysql_error());
     
    echo '<table border="1"><tr>';
     
    for ($i = 0; $i < mysql_num_fields($res); $i++) {
        echo '<th>';
        echo mysql_field_name($res, $i);
        echo '</th>';
    }
     
    echo '</tr>';
     
    while ($row = mysql_fetch_row($res)) {
        echo '<tr>';
     
        for ($j = 0; $j < count($row); $j++) {
            echo '<td>';
            echo ($row[$j] == NULL) ? '<i>NULL</i>' : $row[$j];
            echo '</td>';
        }
     
        echo '</tr>';
    }
     
    ?>
    Mais en reprenant le tutoriel de départ.. Je ne vois pas comment l'adapter !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected T_SL in C:\wamp\www\ROS\Copie de Liste\index.php on line 88


    Le fichier :

    J'ai essayé de le faire juste par ROS au départ.. mais j'suis perdu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
    <html> 
    <head> 
      <meta http-equiv="Cache-Control" content="no-cache"> 
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
      <title>Projet ROS</title> 
      <link rel="stylesheet" type="text/css" href="my.css"> 
      <script type="application/javascript" charset="utf-8" src="http://code.jquery.com/jquery-1.6.3.min.js"></script> 
      <script type="application/javascript"> 
     
      function filterLists() { 
      // ici on récupère les valeurs sélectionnées pour chaque liste avec les sélecteurs de jQuery 
     
      var ros = $('#ros option:selected').val(); 
     
      // on fait notre appel ajax paramétré (pas besoin de s'occuper de l'implémentation du XMLHttpRequest, jQuery le fait pour toi) 
      $.ajax({ 
      type: 'POST', // méthode de transmission des données 
      url: 'filterLists.php', // script à exécuter sur le serveur 
      data: 'ros='+ros, // données à passer au script via le tableau $_POST 
      dataType: 'xml', // type des données attendues en retour : ici xml 
      cache: false, 
      success: function(response) { // traitement du résultat (= données reçues du serveur) une fois l'appel ajax réussi 
      var code; 
      // vu que la réponse est au format xml, on demande à jquery de trouver des noeuds spécifiques 
      // et si ces noeuds contiennent des données alors on remplace les données des listes liées par celles renvoyées par le serveur 
      // en clair : on remplace si nécessaire l'ensemble des lignes <option value=""></option> pour chaque liste qui n'a pas encore de sélection 
     
    	if ((code = $(response).find('ros').text()).length) $('#ros').html(code); 
     
      } 
      }); 
      } 
     
      </script> 
     
      <style type="text/css"> 
      body { font-family: "arial"; } 
      table { width: 600px;;} 
      table, tr, th, td { border: 1px solid black; border-collapse: collapse; padding: 4px;} 
      .alignr { text-align: right; } 
      .alignc { text-align: center; } 
      </style> 
    </head> 
     
    <body> 
      <?php 
     
      // ICI MODIFIEZ LE PARAMETRAGE 
      // Connexion à la base de données 
      $server = 'localhost'; 
      $user = 'root'; 
      $pwd = ''; 
      $dbName = 'xls_db'; 
      $cnx = mysql_connect($server, $user, $pwd); 
      $db = mysql_select_db($dbName); 
     
      // Au démarrage, aucune sélection : on extrait toutes les données individuellement pour chaque liste 
     
      // ROS 
      $sql = 'SELECT DISTINCT histo.ros FROM histo ORDER BY histo.ros;'; 
      $qry = mysql_query($sql); 
      while($row = mysql_fetch_row($qry)) { 
      $ROS[$row[0]] = $row[1]; 
      }
     
      // DONNES DE LA TABLE 
      $sql = <<<SQL 
    SELECT histo.ros FROM histo ORDER BY histo.ros ASC;
    SQL; 
      $qry = mysql_query($sql); 
      while($row = mysql_fetch_assoc($qry)) { 
      $data[] = $row; 
      } 
     
      // pour chaque liste il faut prévoir leur retrait du filtre  
      // en insérant une ligne vide en début de liste : <option value=""></option> 
      ?> 
     
      <p><strong>PILOTE PROD</strong></p> 
      <p>Sélectionnez de un à plusieurs critères de recherche.</p> 
      <form id="frmRecherche"> 
     
      <!-- Liste des ROSs --> 
      <label for="ROS">ROS</label> 
      <select id="ROS" onchange="filterLists();"> 
      <option value=""></option> 
      <?php foreach($ROS as $id => $ROS): ?> 
      <option value="<?php echo $id; ?>"><?php echo $ROS; ?></option> 
      <?php endforeach; ?> 
      </select> 
     
     
      </form> 
     
      <!-- Données de la table --> 
      <table> 
      <thead> 
      <tr> 
      <th>ROS</th> 
     
      </tr> 
      </thead> 
     
      <tbody id="table"> 
      <?php foreach($data as $row): ?> 
      <tr> 
      <td><?php echo $row['ROS']; ?></td> 
     
      </tr> 
      <?php endforeach; ?> 
      </tbody> 
      </table> 
    </body> 
    </html>
    et le "filterlists.php" , Je suis un peu perdu à l'interieur aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    <?php 
     
    // Ce script est appelé à chaque sélection d'un élément d'une liste 
     
    // suivi du critère 
    $where = array(); 
    $data = array(); 
     
    // données sélectionnées => filtres 
    $ROS = NULL; 
     
     
    /** 
     * CE SCRIPT ANALYSE LES SELECTIONS ET RENVOIE DES DONNEES AU FORMAT XML  
     * La structure correspond à ce que jQuery attend pour mettre à jour la page 
     * <?xml version="1.0" encoding="utf-8"?>  
     * <xml>  
     * <jours></jours>  
     * <mois></mois>  
     * <annees></annees>  
     * <villes></villes>  
     * <matieres></matieres>  
     * <table></table>  
     * </xml>  
     * 
     * @var SimpleXMLElement 
     */ 
    $xml = simplexml_load_string('<?xml version="1.0" encoding="utf-8"?><xml></xml>'); 
     
    // on parcourt le tableau $_POST et on vérifie quelles sont les listes qui ont une sélection 
     
    // ROS 
    if (isset($_POST['ROS']) && (ctype_digit("{$_POST['ROS']}"))) { 
      $ROS = $_POST['ROS']; 
      $where[] = 'histo.ROS = ' . intval($ROS); 
    } 
     
    ### FILTRAGE DES DONNÉES DES LISTES (SSI RIEN N'A DÉJÀ ÉTÉ SÉLECTIONNÉ)  
    $where = ( ! empty($where)) ? 'WHERE ' . implode(' AND ', $where) : NULL; 
     
    // ICI MODIFIEZ LE PARAMETRAGE 
    // Connexion à la base de données 
    $server = 'localhost'; 
    $user = 'root'; 
    $pwd = ''; 
    $dbName = 'xls_db'; 
    $cnx = mysql_connect($server, $user, $pwd); 
    $db = mysql_select_db($dbName); 
     
     
    // on définit le code SQL commun à toutes les requêtes 
    // voir la chaine SQL d'extraction des données de la table (plus bas) 
    $fromAndWhere = <<<SQL 
    t_session_matiere  
      INNER JOIN t_matiere ON t_session_matiere.idMatiere = t_matiere.idMatiere 
      INNER JOIN t_session ON t_session_matiere.idSession = t_session.idSession 
      INNER JOIN t_ville ON t_session.idVille = t_ville.idVille 
    $where 
    SQL; 
     
    /** 
     * Crée le code HTML pour les liste relatives aux dates : Jours Mois Années 
     * @param mixed $sql 
     * @return string 
     */ 
    function filtrageDates($sql) { 
      $data = array(); 
      $qry = mysql_query($sql); 
      $data[] = '<option value=""></option>'; // ligne vide 
      while($row = mysql_fetch_row($qry)) { 
      $data[] = '<option value="' . $row[0] . '">' . $row[0] . '</option>'; 
      } 
      return implode("\n", $data); 
    } 
     
    /** 
     * Crée le code HTML pour les liste relatives aux villes et matières 
     * @param mixed $sql 
     * @return string 
     */ 
    function filtrageVillesMatieres($sql) { 
      $data = array(); 
      $qry = mysql_query($sql); 
      $data[] = '<option value=""></option>'; // ligne vide 
      while($row = mysql_fetch_row($qry)) { 
      $data[] = '<option value="' . $row[0] . '">' . $row[1] . '</option>'; 
      } 
      return implode("\n", $data); 
    } 
     
    // si aucun where -> on repart sur l'extraction de toutes les données possibles (pareil qu'au 1er appel index.php) 
    $fromDates = (NULL === $where) ? 't_session' : $fromAndWhere; 
     
    // si le jour n'a pas déjà été sélectionné -> filtrage de la liste 
    if (NULL === $jour) { 
      $sql = "SELECT DISTINCT DAY(t_session.date_) FROM $fromDates ORDER BY DAY(t_session.date_);"; 
      $xml->addChild('jours', filtrageDates($sql)); 
    } 
     
    // si le mois n'a pas déjà été sélectionné -> filtrage de la liste 
    if (NULL === $mois) { 
      $sql = "SELECT DISTINCT MONTH(t_session.date_) FROM $fromDates ORDER BY MONTH(t_session.date_);"; 
      $xml->addChild('mois', filtrageDates($sql)); 
    } 
     
    // si l'année n'a pas déjà été sélectionnée -> filtrage de la liste 
    if (NULL === $annee) { 
      $sql = "SELECT DISTINCT YEAR(t_session.date_) FROM $fromDates ORDER BY YEAR(t_session.date_);"; 
      $xml->addChild('annees', filtrageDates($sql)); 
      $data = array(); 
    } 
     
    // si la ville n'a pas déjà été sélectionnée -> filtrage de la liste 
    if (NULL === $ville) { 
      // si aucun where -> on repart sur l'extraction de toutes les données possibles (pareil qu'au 1er appel index.php) 
      $from = (NULL === $where) ? 't_ville' : $fromAndWhere; 
      $sql = "SELECT DISTINCT t_ville.idVille, t_ville.ville FROM $from ORDER BY t_ville.ville;"; 
      $xml->addChild('villes', filtrageVillesMatieres($sql));  
      $data = array(); 
    } 
     
    // si la matière n'a pas déjà été sélectionnée -> filtrage de la liste 
    if (NULL === $matiere) { 
      // si aucun where -> on repart sur l'extraction de toutes les données possibles (pareil qu'au 1er appel index.php) 
      $from = (NULL === $where) ? 't_matiere' : $fromAndWhere; 
      $sql = "SELECT DISTINCT t_matiere.idMatiere, t_matiere.matiere FROM $from ORDER BY t_matiere.matiere;"; 
      $xml->addChild('matieres', filtrageVillesMatieres($sql)); 
      $data = array(); 
    } 
     
     
    // données de la table 
    $sql = <<<SQL 
    SELECT  
      t_ville.ville,  
      t_session.date_,  
      t_matiere.matiere,  
      t_session_matiere.nbInscrit  
    FROM  
      $fromAndWhere 
    ORDER BY 
      t_ville.ville ASC,  
      t_session.date_ DESC,  
      t_matiere.matiere ASC; 
    SQL; 
     
    $data = array(); 
    $qry = mysql_query($sql); 
    // mise en forme des données 
    // ici on reconstruit les données de la table 
    while($row = mysql_fetch_assoc($qry)) { 
      $data[] = <<<HTML 
    <tr> 
      <td>{$row['ville']}</td> 
      <td class="alignc">{$row['date_']}</td> 
      <td>{$row['matiere']}</td> 
      <td class="alignr">{$row['nbInscrit']}</td> 
    </tr> 
    HTML; 
    } 
     
    if (empty($data)) { // pas de données correspondant au filtre 
      $data[] = '<tr></tr>'; 
    } 
     
    $xml->addChild('table', implode("\n", $data)); # noeud attendu par jQuery dans filterLists() 
     
     
    // Envoi du header et des données 
    header('content-type: text/xml'); 
    echo $xml->asXML(); 
     
    ?>

  20. #40
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Je ne vois pas où tu t'es embarqué
    Allez je te mets sur la voie :
    Script de démarrage (sans la fonction de rappel, à rajouter) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?php
    // Au démarrage, aucune sélection : on extrait toutes les données individuellement pour chaque liste
    // Tu as 4 listes : Raison sociale | ROS | Code postal | Produit
     
    mysql_connect('localhost', 'root', '');
    mysql_select_db('xls_db');
     
    // raison sociale
    $sql = 'SELECT DISTINCT client FROM histo ORDER BY client';
    $qry = mysql_query($sql);
    while($row = mysql_fetch_assoc($qry)) {
       $dataClient[] = $row[];
    }
     
    // ROS
    $sql = 'SELECT DISTINCT ros FROM histo ORDER BY ros';
    $qry = mysql_query($sql);
    while($row = mysql_fetch_assoc($qry)) {
       $dataRos[] = $row[];
    }
     
    // code postal
    $sql = 'SELECT DISTINCT codepostal FROM histo ORDER BY codepostal';
    $qry = mysql_query($sql);
    while($row = mysql_fetch_assoc($qry)) {
       $dataCp[] = $row[];
    }
     
    // produit
    $sql = 'SELECT DISTINCT id_produit FROM histo ORDER BY id_produit';
    $qry = mysql_query($sql);
    while($row = mysql_fetch_assoc($qry)) {
       $dataProduit[] = $row[];
    }
     
    // historique non filtré
    // produit
    $sql = 'SELECT * FROM histo';
    $qry = mysql_query($sql);
    while($row = mysql_fetch_assoc($qry)) {
       $dataHisto[] = $row[];
    }
     
    $hsc = function($p) { return htmlspecialchars($p, ENT_QUOTES); }
     
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
       <meta http-equiv="Cache-Control" content="no-cache">
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
       <title>Projet ROS</title>
       <style type="text/css">
          body { font-family: "arial"; }
          table { width: 600px;;}
          table, tr, th, td { border: 1px solid black; border-collapse: collapse; padding: 4px;}
          .alignr { text-align: right; }
          .alignc { text-align: center; }
       </style>
    </head>
    <body>
    <?php
       // pour chaque liste il faut prévoir leur retrait du filtre
       // en insérant une ligne vide en début de liste : <option value=""></option>
    ?>
       <p><strong>PROJET ROS</strong></p>
       <p>Sélectionnez de un à plusieurs critères de recherche.</p>
       <form id="frmRecherche">
     
          <!-- Liste des clients -->
          <label for="clients">Clients</label>
          <select id="clients" onchange="filterLists();">
             <option value=""></option>
             <?php foreach($dataClient as $client): ?>
             <option value="<?php echo $hsc($client); ?>"><?php echo $hsc($client); ?></option>
             <?php endforeach; ?>
          </select>
     
          <!-- Liste des ROS-->
          <label for="ros">ROS</label>
          <select id="ros" onchange="filterLists();">
             <option value=""></option>
             <?php foreach($dataRos as $ros): ?>
             <option value="<?php echo $hsc($ros); ?>"><?php echo $hsc($ros); ?></option>
             <?php endforeach; ?>
          </select>
     
          <!-- TU PEUX CONTINUER -->
       </form>
     
       <!-- Données de la table -->
       <table>
          <thead>
             <tr>
                <th>Produit</th>
                <th>Type</th>
                <th>ROS</th>
                <th>Client</th>
                <th>Adresse</th>
                <th>Ville</th>
                <th>CP</th>
             </tr>
          </thead>
          <tbody id="table">
             <?php foreach($dataHisto as $row): ?>
             <tr>
                <td><?php echo $hsc($row['id_produit']); ?></td>
                <td><?php echo $hsc($row['type_produit']); ?></td>
                <td><?php echo $hsc($row['ros']); ?></td>
                <td><?php echo $hsc($row['client']); ?></td>
                <td><?php echo $hsc($row['adresse']); ?></td>
                <td><?php echo $hsc($row['ville']); ?></td>
                <td><?php echo $hsc($row['codepostal']); ?></td>
             </tr>
             <?php endforeach; ?>
          </tbody>
       </table>
    </body>
    </html>

Discussions similaires

  1. [AJAX] Filtre tableau par liste deroulante
    Par stevenP dans le forum AJAX
    Réponses: 1
    Dernier message: 22/12/2011, 12h00
  2. Réponses: 9
    Dernier message: 07/08/2007, 14h36
  3. filtre par liste deroulante
    Par Flo4594 dans le forum IHM
    Réponses: 2
    Dernier message: 08/12/2006, 08h51
  4. Texte affiché par liste deroulante
    Par dynxd dans le forum Access
    Réponses: 20
    Dernier message: 30/09/2005, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo