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 :

N'afficher que les personnes disponibles [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    Par défaut N'afficher que les personnes disponibles
    Bonjour tout le monde,
    Je suis entrain de développer un programme pour réserver les chauffeurs.
    le principe est de faire la demande et ensuite c'est le responsable des chauffeurs qui affectera la demande au chauffeur disponible.
    Les résultats sont affichés sur un calendrier.
    Le programme avance plutôt bien, sauf que je bloque sur le fait d'afficher seulement les chauffeurs disponibles.
    La structure de ma table reservation est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id, demandeur, title, start, end, etat, proprio
    d'ou start et end sont de type datetime et le proprio c'est le chauffeur.
    Mon code de la page affectation est le suivant :
    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
     
    <?php
    require 'bootstrap.php';
    require 'Events.php';
    require 'Month.php';
    $pdo = get_pdo();
    $events = new Events($pdo);
    $errors= [];
    if (!isset($_GET['id'])) {
              header('location: /404.php');
             }
    try {
    $event = $events->find($_GET['id']);
        } catch (Exception $e) {
          e404();
          }
         $data = [
             'title'=> $event->getTitle(),
             'demandeur'=> $event->getDemandeur(),
             'date'=> $event->getStart()->format('Y-m-d'),
    	 'start'=> $event->getStart()->format('H:i'),
             'end'=> $event->getEnd()->format('H:i'),
    	 'proprio'=>$_POST['proprio'],
           ];
    if($_SERVER['REQUEST_METHOD'] === 'POST') {
     
    $data = $_POST;
        $event->setProprio($data['proprio']);
        $events->update($event);
        header("Location: calendrier.php?success=1");
        exit();
    }
    ?>
     <form action="" method="post" class="form">
                            <div class="row">
        <div class="col-sm-6">
           <div class="form-group">
    <label for="proprio"> Collaborateur</label>
    <select id="proprio" class="form-control" name="proprio" >
       <option value="Chauffeur1 ">Chauffeur1 </option>
       <option value="Chauffeur2 ">Chauffeur2 </option>
       <option value="Chauffeur3">Chauffeur1</option>
    </select>
    </div>
        </div>
     <div class="form-group">
     <br><button class="btn btn-primary">Affecter</button>
    </div>
     
      </form>
    Les méthodes find, update, getpdo ainsi que les getters sont définies dans les pages ou j'ai mis les requires.

    Y'a t-il moyen d'afficher seuelemnt les chauffeurs qui sont pas occupés entre le start et le end
    exepmple :
    Il y'a une demande entre 2019-07-10 08:00:00 et 2019-07-10 10:00:00, s'il ya une autre demande à 09h on affichera pas le chauffeur qui occupe la première demande.
    Merci d'avance

  2. #2
    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
    salut,

    je me pose la question comment tu peux déduire les disponibilités uniquement qu'à partir des réservations ?
    Tu as un postulat de départ qui dit que les chauffeurs sont disponibles 24/24h 365j/an tant qu'ils ne sont pas au planning de réservation ?

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    Par défaut
    Merci pour la résponse,
    lors de la demande, l'état de la demande est sur En cours.
    Quand il est affecté au chauffeur il se met à Affecté.
    Une fois que le chauffeur est revenu il se met à Clôs.
    Donc je compte vérifier la disponibilité en me basant sur l'heure de la réservation et l'état de la demande.
    Si c'est sur Clôs ça voudra dire qu'il est rentré plus tôt.
    Les réservations se gèrent par le responsable des chauffeurs et se font seulement dans les heures du bureau.

  4. #4
    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 être précis.

    Ton postulat de départ est que tout chauffeur est réputé être disponible pour une date donnée entre 8h et 18h par exemple sauf s'il est au planning de réservation.
    Est-ce que tes heures de bureau changent au cours de la semaine ?

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    Par défaut
    Non, à part des fois les week-end quand il ya beaucoup de travail

  6. #6
    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
    c'est là où je voulais en venir, il va falloir moduler la détermination des disponibilités en fonction du planning prévisionnel de travail (comme tu travailles sur les heures, va falloir en tenir compte).
    Et pour l'instant, je ne vois nulle part où tu en tiendrais compte.

    Après l'algorithme est somme tout simple : tu poses ta journée de travail par unité de découpage (par exemple tous les quart d'heure) ensuite tu extrais le planning de réservation et tu fais la différence entre les deux et hop tu as les disponibilités pour un chauffeur

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    @rawsrc
    J'ai l'impression que tu prends le problème à l'envers.

    Il ne cherche pas "les disponibilités d'un chauffeur" (en particulier"),
    mais "tous les chauffeurs qui NE SONT PAS EN COURS de réservation".

    D'après ce que je comprends :

    1- Pour trouver les chauffeurs DEJA affectés durant la période "start_de_la_reservation_a_tester" - "end_de_la_reservation_a_tester", la requête est :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id_chauffeur FROM reservation
          WHERE start >= :start_de_la_reservation_a_tester
          AND end <= :end_de_la_reservation_a_tester

    2- DONC, pour trouver ceux QUI NE SONT PAS affectés durant cette période, la requête devrait être du genre :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT id_chauffeur FROM chauffeur
    WHERE id_chauffeur NOT IN (
          SELECT id_chauffeur FROM reservation
          WHERE start >= :start_de_la_reservation_a_tester
          AND end <= :end_de_la_reservation_a_tester
       )
    Non ?

    3- A supposer qu'on ait une colonne is_actif (1/0) dans la table chauffeurs pour "ceux qui travaillent ou pas ce jour là", ça devient :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT C.id_chauffeur FROM chauffeur C
    WHERE id_chauffeur NOT IN (
          SELECT id_chauffeur FROM reservation
          WHERE start >= :start_de_la_reservation_a_tester
          AND end <= :end_de_la_reservation_a_tester
       )
    AND C.is_actif = 1

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    Par défaut
    En fait, lors de l'introduction d'une demande de réservation, on bloque les demandes qui ne rentrent pas dans la fourchette des heures de bureau.
    Effectivement je cherche à trouver tous le chauffeurs qui ne sont pas en cours de réservation pendant le temps de la demande.
    Pour cela, je pense que je dois créer une table chauffeur et faire une jointure avec la table reservation, c'est ça ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    1- Oui, il faut une table chauffeurs :
    • id_chauffeur
    • nom
    • prenom
    • ... (uniquement ce qui concerne ce chauffeur)


    2- Et dans la table reservation(s), remplace proprio par id_chauffeur : ce sera plus clair.

    N.B. Perso, j'utilise des noms (tables, colonnes,...) "significatifs" :
    • t_chauffeurs
    • t_reservations

    • id_chauffeur
    • id_reservation
    • ...


    3- Concernant leur "jours et horaires de travail" de chaque chauffeur, c'est une autre affaire (qui n'est pas traitée ici).

    4- Enfin, pour la requête SQL, je pense avoir répondu dans mon précédent message.

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    Par défaut
    J'essaierai ça et reviendrai vers vous si je bloque
    Merci beacoup

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    Par défaut
    J'ai créé la table chauffeurs
    et ai exécuté la requête suivante :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT id_chauffeur FROM chauffeur
    WHERE id_chauffeur NOT IN (
          SELECT id_chauffeur FROM reservation
          WHERE start >= 'start'
          AND end <= 'end'
       )

    sauf que ça m'affiche la totalité des chauffeurs même s'ils sont pas supposés être disponibles

  12. #12
    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
    La requête de jreaux62 est incomplète, pose tous les cas de figure et modifie le sql en conséquence, tu verras ta requête est bien plus complexe.

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 156
    Points : 95
    Points
    95
    Par défaut
    Exact. J'essaierai de faire ça.
    Merci pour les astuces

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. N'afficher que les données du mois en cours
    Par faiglon dans le forum Access
    Réponses: 5
    Dernier message: 25/07/2006, 13h17
  2. Réponses: 10
    Dernier message: 12/04/2006, 10h56
  3. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50
  4. n'afficher que les "print" dans query annalyser
    Par sky_perrinos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/12/2004, 10h58
  5. [XML] n'afficher que les 3 premiers!
    Par Little Sloth dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/06/2004, 10h59

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