par
street51 » 26 janv. 2017, 14:48
Merci pour ta réponse.
Oui, en gros j'ai :
- une première table "calendrier" contenant la date (un id unique, la date en format US, le jour de la semaine, le mois, etc. pour extraire facilement ces infos quand j'ai besoin de les afficher), l'id de la personne qui travaille le jour correspondant (champ "astreinte"), mais aussi les id des gens qui ne peuvent pas travailler ce jour-là (champ "indispo").
- une seconde table "personnes" contenant la liste des personnes susceptibles de travailler (un id unique, un champ "astreintes" pour savoir s'il est susceptible d'être tiré au sort, et d'autres infos)
Du coup, je ne vois pas comment récupérer en une seule requête SQL l'id d'une personne qui soit différent de l'id de la personne ayant bossé la veille, sachant que ces deux informations sont stockées dans deux tables différentes. C'est pourquoi je passais par un array.
Je souhaiterais donc :
- Sélectionner au hasard l'id d'une personne réalisant des astreintes
- Vérifier que cette personne ne travaillait pas déjà la veille
- Vérifier que cette personne n'est pas indisponible ce jour
- Si ces conditions sont remplies, je peux modifier la BDD pour mettre l'id de la personne à la date correspondante ; sinon, effectuer un nouveau tirage au sort et vérifier à nouveau ces conditions (qui sont à nouveau susceptibles de ne pas être remplies, etc.)
Pour l'histoire des personnes choisies selon le jour de la semaine (untel ne souhaitant pas travailler le lundi, par exemple) , je pense qu'il est plus simple de passer par mon champ "indispo" plutôt que par une règle à l'intérieur de la boucle (du genre if($id_personne == '1' && $jour == 'lundi')...).
J'espère avoir été plus clair...
Merci pour ta réponse.
Oui, en gros j'ai :
- une première table "calendrier" contenant la date (un id unique, la date en format US, le jour de la semaine, le mois, etc. pour extraire facilement ces infos quand j'ai besoin de les afficher), l'id de la personne qui travaille le jour correspondant (champ "astreinte"), mais aussi les id des gens qui ne peuvent pas travailler ce jour-là (champ "indispo").
- une seconde table "personnes" contenant la liste des personnes susceptibles de travailler (un id unique, un champ "astreintes" pour savoir s'il est susceptible d'être tiré au sort, et d'autres infos)
Du coup, je ne vois pas comment récupérer en une seule requête SQL l'id d'une personne qui soit différent de l'id de la personne ayant bossé la veille, sachant que ces deux informations sont stockées dans deux tables différentes. C'est pourquoi je passais par un array.
Je souhaiterais donc :
- Sélectionner au hasard l'id d'une personne réalisant des astreintes
- Vérifier que cette personne ne travaillait pas déjà la veille
- Vérifier que cette personne n'est pas indisponible ce jour
- Si ces conditions sont remplies, je peux modifier la BDD pour mettre l'id de la personne à la date correspondante ; sinon, effectuer un nouveau tirage au sort et vérifier à nouveau ces conditions (qui sont à nouveau susceptibles de ne pas être remplies, etc.)
Pour l'histoire des personnes choisies selon le jour de la semaine (untel ne souhaitant pas travailler le lundi, par exemple) , je pense qu'il est plus simple de passer par mon champ "indispo" plutôt que par une règle à l'intérieur de la boucle (du genre if($id_personne == '1' && $jour == 'lundi')...).
J'espère avoir été plus clair...