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 :

Requête sur plusieurs tables


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Par défaut Requête sur plusieurs tables
    Bonjour ou bonsoir a tous,

    J'ai une base de données sql qui contient deux tables.

    La première table contient des champs id, nom, adresse, tel.. etc...
    La seconde table, contient des champs qui seront remplis et conservés dans la base de données. Ils seront donc remplis via un formulaire. C'est en fait de l'information relative aux heures travaillées. Le membre devra remplir sa feuille de temps a chaque jour et pourra la reprendre pour continuer le jour suivant.

    Voici mon problème : Je veux récupérer le nom du membre dans un formulaire de façon a ce que ses informations qui ont été entrées le jour précédent soit disponible et deja entrées dans le formulaire pour qu'il puisse continuer sa feuille de temps.

    Exemple :
    Table 1
    id | nom | telephone | etc..

    Table 2
    id | nom de la Table 1 | champs formulaire | etc...

    Il s'agit probablement de requête croisée ? Merci de m'aider la dessus... je suis totalement bloqué.

    Php 5

    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
     
    <?php
    try
    {
        // On se connecte à MySQL
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=localhost;dbname=nomdlabase', 'root', '', $pdo_options);
     
        // On récupère tout le contenu de la table ma_feuille_temps
        $reponse = $bdd->query('SELECT * FROM ma_feuille_temps');
    	// On récupère le nom de l'utilisateur de la table mes_utilisateurs
    	$reponse2 = $bdd->query('SELECT * FROM mes_utilisateurs'); // ??
     
        // On affiche les informations
           ?>
            <p>
            <strong>Nom</strong> : <?php echo $nom_utilisateurs; ?><br />
            du : <?php echo $donnees['du']; ?>, au  <?php echo $donnees['au']; ?>   du mois<br />
            Courriel <?php echo $donnees['courriel']; ?> un peu de texte  <?php echo $donnees['texte']; ?> fin<br />
            </em>
            </p>
        <?php
        }
     
        $reponse->closeCursor(); // Termine le traitement de la requête
        $reponse2->closeCursor(); // Termine le traitement de la requête
    }
    catch(Exception $e)
    {
        // En cas d'erreur précédemment, on affiche un message et on arrête tout
        die('Erreur : '.$e->getMessage());
    }
     
     
    ?>

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 814
    Billets dans le blog
    14
    Par défaut
    Donne la structure exacte de tes tables parce que la seconde est incompréhensible !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re; idem que cill.
    apparemment c'est une relation 1==>N c.a.d q'un travailleur peut avoir un enregistrement ou plus selon l'heure de travaille si j'ai bien compris ; alors il faut faire une requête d'extraction des données d'un travailleur X selon son ID ou autre avec affichage de ces données dans un tableau ensuite s'il veut ajouté une donnée là tu fais appel a ton formulaire.
    en résumé :
    une interface d'affichage de données qui fait appel a un formulaire d'enregistrement en cas de besoin.
    excuse pour le tetoiment

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Par défaut
    Bon alors merci de prendre un peu de votre temps !

    Table 1

    Id | Nom | Téléphone | etc..

    La table 1 constitue les coordonnées du travailleur.


    Table 2

    Id | Nom | date début | date fin | heure travaillé le lundi | heure travaillé le mardi | etc.

    La table 2 contient le nom du travailleur, et tous les champs remplis par lui via un formulaire pour le calcul de ses heures travaillées.

    Actuellement, le travailleur s'identifie sur le site. Il a donc accès a une zone réservée. La table 1 est donc remplie lors de son inscription par l'administration.

    Ce que je désire faire, c'est qu'il puisse créer une feuille de temps avec son nom déja inscrit dans un formulaire et avoir la possibilité de la compléter et ou modifier tous les jours pour finalement l'imprimer et l'envoyer a l'administration à la fin de la semaine. J'ai donc créé une nouvelle table afin d'y placer les champs nécessaires.

    Ces travailleurs pourraient donc remplir la feuille de temps le lundi et la sauvegarder dans la base de données, la reprendre le mardi pour la modifier et la sauvegarder dans la base de données, la reprendre le mercredi etc .... pour finalement l'envoyer et l'imprimer a la fin de la semaine.

    La ou je bloque, c'est quand vient le temps de faire afficher et d'associer le bon nom a la bonne feuille de temps. Ce que j'aimerais donc, c'est que le nom de l'individu soit immédiatement associé avec SA feuille de temps. Donc, le champs Nom de la table 2 devrait être le même que celui de la table 1 en fait.

    Est-ce plus claire ??

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 814
    Billets dans le blog
    14
    Par défaut
    La grosse erreur de modélisation est là :
    Table 2

    Id | Nom | date début | date fin | heure travaillé le lundi | heure travaillé le mardi | etc.
    Il ne faut pas une colonne par jour !

    Tu prendras bien un peu de Merise ?

    Règle de gestion :
    Une personne peut travailler plusieurs jours et un jour peut voir travailler plusieurs personnes.

    MCD :
    personne -0,n----travailler----0,n- jour

    Tables :
    personne (prs_id, prs_nom...)
    jour (jr_id jr_date)
    prs_travailler_jr (ptj_id_personne, ptj_id_jour)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Par défaut
    holala... je ne comprends pas grand chose désolé.

    Je suis allé voir Merise, et c'est vraiment une mine d'informations intéressantes mais je ne comprends pas tout et je manque de temps pour l'instant. Je vais cependant bien lire quand j'aurais un peu de temps.

    Pour ce qui est du projet :

    En fait, les feuilles de temps actuelles sont déja utilisées et les travailleurs remplissent tous les champs, comme sur leurs feuilles de temps version papier. Je veux simplement que le travailleur ai accès a sa propre feuille de temps.

    Pour ce qui est de la table 2, je vois mal comment je pourrais ne pas mettre une colonne par jour... parce qu'en fait, ce n'est qu'un champs nombre qui sera calculé a la toute fin.

    Peut etre que je me fais mal comprendre... parce qu'il me semble que mes tables sont bien préparées.

    Par ailleurs, je programme depuis peu en PHP et MySql ( deux semaines en autodidacte...) Je peux t'envoyer en privé également le formulaire de la feuille de temps, ce qui pourrait peut etre t'aider ??

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 814
    Billets dans le blog
    14
    Par défaut
    Ne confonds pas le formulaire de saisie et les données enregistrées en base de données !

    Pas le temps d'expliquer en détail la démarche que tu dois adopter mais grosso-modo, l'utilisateur se connecte à ton application qui lui présente le formulaire de saisie pour les jours de la semaine en cours. Il saisit les données le concernant et tu le programme les enregistre dans la BDD.

    S'il a déjà des données enregistrées pour la semaine en cours, le formulaire lui redonne ces données.

    Tu as aussi plein de tutoriels PHP sur le site.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Par défaut
    Citation Envoyé par CinePhil Voir le message

    MCD :
    personne -0,n----travailler----0,n- jour

    Tables :
    personne (prs_id, prs_nom...)
    jour (jr_id jr_date)
    prs_travailler_jr (ptj_id_personne, ptj_id_jour)
    Donc, dans la table 2, je dois procéder autrement a ce que je vois...

    il faudrait vraiment que tu vois mon formulaire... je te l'envoie en message privé.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ne confonds pas le formulaire de saisie et les données enregistrées en base de données !

    Pas le temps d'expliquer en détail la démarche que tu dois adopter mais grosso-modo, l'utilisateur se connecte à ton application qui lui présente le formulaire de saisie pour les jours de la semaine en cours. Il saisit les données le concernant et tu le programme les enregistre dans la BDD.

    S'il a déjà des données enregistrées pour la semaine en cours, le formulaire lui redonne ces données.

    Tu as aussi plein de tutoriels PHP sur le site.
    C'est exactement ca, et je sais le faire. Par contre, je ne sais pas comment faire pour que le nom du travailleur puisse automatiquement se placer dans le formulaire .. car il est deja enregistré et a ouvert une session sur le site sécurisé.

Discussions similaires

  1. suite au problème de requête sur plusieur table
    Par michelGProuq dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/07/2006, 16h19
  2. [VB6] RecordSet, Oracle, requête sur plusieurs Tables
    Par pier* dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/04/2006, 10h19
  3. Requête sur plusieurs tables
    Par sta_schmitt dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/03/2006, 13h54
  4. Requéte sur plusieurs tables
    Par polux23 dans le forum Requêtes
    Réponses: 11
    Dernier message: 23/02/2006, 23h00
  5. Requête sur plusieurs tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/07/2005, 12h25

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