Script de gestion d'horaires
Résolu/Fermé
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
-
14 oct. 2013 à 17:39
a70m Messages postés 2763 Date d'inscription jeudi 21 mai 2009 Statut Contributeur Dernière intervention 2 février 2014 - 20 oct. 2013 à 00:53
a70m Messages postés 2763 Date d'inscription jeudi 21 mai 2009 Statut Contributeur Dernière intervention 2 février 2014 - 20 oct. 2013 à 00:53
A voir également:
- Script de gestion d'horaires
- Script vidéo youtube - Guide
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Gestion autorisation application android - Guide
- Logiciel gestion cave à vin gratuit - Télécharger - Cuisine & Gastronomie
5 réponses
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 14/10/2013 à 18:21
Modifié par JooS le 14/10/2013 à 18:21
Salut,
Si debut_am est NULL, et debut_pm ne l'est pas, le commerce ouvre l'aprés midi.
Si le contraire, le commerce ouvre la matinée seulement.
Si debut_am et fin_pm ne sont pas NULL, mais fin_am et debut_pm le sont, alors le commerce ouvre ses portes en continu.
Voila, il ne te reste qu'a jouer avec le IF dans tes requêtes SQL.
Pour la modification des horaires, je ne vois pas ou est le problème.
Mettez en résolu quand c'est résolu -.- ...
id | id_commerce | jour | debut_am | fin_am | debut_pm| fin_pm | nous_consulter |Si debut_am et debut_pm sont NULL, le commerce est fermé.
Si debut_am est NULL, et debut_pm ne l'est pas, le commerce ouvre l'aprés midi.
Si le contraire, le commerce ouvre la matinée seulement.
Si debut_am et fin_pm ne sont pas NULL, mais fin_am et debut_pm le sont, alors le commerce ouvre ses portes en continu.
Voila, il ne te reste qu'a jouer avec le IF dans tes requêtes SQL.
Pour la modification des horaires, je ne vois pas ou est le problème.
Mettez en résolu quand c'est résolu -.- ...
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
14 oct. 2013 à 18:28
14 oct. 2013 à 18:28
Salut,
Merci pour ta réponse rapide !
L'idée me semble pas mal, mais là où ça coince encore, c'est sur ma page admin, j'ai mes 4 select pour selectionner mes horaires pour chaque jour.
Lorsque je liste mes horaires pour les modifier j'ai un formulaire de la forme :
Ce formulaire je l'ai 3 fois, un pour chaque commerce, mais une fois envoyé, je ne sais pas comment gérer tous mes select. En fonction des jours ? des id ? des id_commerce ?
Je bute sur un truc con je sais, mais je suis un peu pommé là
Merci encore.
a70m
Merci pour ta réponse rapide !
L'idée me semble pas mal, mais là où ça coince encore, c'est sur ma page admin, j'ai mes 4 select pour selectionner mes horaires pour chaque jour.
Lorsque je liste mes horaires pour les modifier j'ai un formulaire de la forme :
<form ...>
Lundi [debut_am][fin_am][debut_pm][fin_pm] (4 select)
Mardi [debut_am][fin_am][debut_pm][fin_pm] (4 select)
...
Enregistrer
</form>
Ce formulaire je l'ai 3 fois, un pour chaque commerce, mais une fois envoyé, je ne sais pas comment gérer tous mes select. En fonction des jours ? des id ? des id_commerce ?
Je bute sur un truc con je sais, mais je suis un peu pommé là
Merci encore.
a70m
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 14/10/2013 à 23:23
Modifié par JooS le 14/10/2013 à 23:23
Tu dois avoir quelque chose dans ce genre ...
Affichage du formulaire :
Et dans le script de traitement, si le formulaire en envoyé ...
PS : L'id du commerce doit également exister, soit sous forme de champs caché, soit dans une variable de session ou GET.
PS : Non testé, je l'ai écris directement sur CCM, donc aucune garantie que ça fonctionne de premier coup, mais bon, c'est supposé te donner une idée sur comment procéder pour traiter le formulaire.
Mettez en résolu quand c'est résolu -.- ...
Affichage du formulaire :
<?php
$days = array(
1 => 'Samedi',
2 => 'Dimanche',
3 => 'Lundi',
4 => 'Mardi',
5 => 'Mercredi',
6 => 'Jeudi',
7 => 'Vendredi');
$parts = array('debut_am', 'fin_am', 'debut_pm', 'fin_pm');
foreach($days AS $id => $name) {
echo '<p>' . $name . '</p>';
foreach($parts AS $val) {
echo '<select name="day_' . $id . '_' . $val . '">';
if(substr($val, 0, 3) == 'fin') echo '<option value="closed"></option>';
else echo '<option value="closed">Fermé</option>';
for($h = 0; $h < 24; $h++)
for($m = 0; $m < 60; $m++) {
$val = str_pad($h, 2, '0', STR_PAD_LEFT) . ':' . str_pad($m, 2, '0', STR_PAD_LEFT);
echo '<option value="' . $val . '">' . $val . '</option>';
}
echo '</select>';
}
}
Et dans le script de traitement, si le formulaire en envoyé ...
PS : L'id du commerce doit également exister, soit sous forme de champs caché, soit dans une variable de session ou GET.
// Vérification que le formulaire est complet et correct
$correctForm = true;
foreach($days AS $id => $name) {
foreach($parts AS $val) {
$field = 'day_' . $id . '_' . $val;
if(!isset($_POST[$field]) OR empty($_POST[$field])) {
$correctForm = false;
break;
}
}
$debut = $_POST['day_' . $id . '_debut_am'];
$fin = $_POST['day_' . $id . '_debut_am'];
if(!compare($debut, $fin)) {
$correctForm = false;
break;
}
$debut = $_POST['day_' . $id . '_debut_pm'];
$fin = $_POST['day_' . $id . '_debut_pm'];
if(!compare($debut, $fin)) {
$correctForm = false;
break;
}
}
if($correctForm) {
$req = 'INSERT INTO table (id_commerce, jour, debut_am, fin_am, debut_pm, fin_pm) VALUES ';
foreach($days AS $id => $name) {
$req .= '(' . $id_commerce . ',' . $id . ',';
$debut_am = ($_POST['day_' . $id . '_debut_am'] != 'closed') ? $_POST['day_' . $id . '_debut_am'] : null;
$fin_am = ($debut_am == null) ? $debut_am : $_POST['day_' . $id . '_fin_am'];
$debut_pm = ($_POST['day_' . $id . '_debut_pm'] != 'closed') ? $_POST['day_' . $id . '_debut_pm'] : null;
$fin_pm = ($debut_pm == null) ? $debut_pm : $_POST['day_' . $id . '_fin_pm'];
$req .= ($debut_am == null) ? 'NULL,' : '\'' . $debut_am . '\',';
$req .= ($fin_am == null) ? 'NULL,' : '\'' . $fin_am . '\',';
$req .= ($debut_pm == null) ? 'NULL,' : '\'' . $debut_pm . '\',';
$req .= ($fin_pm == null) ? 'NULL,' : '\'' . $fin_pm . '\',';
}
$req = rtrim($req, ', ');
var_dump($req);
}
PS : Non testé, je l'ai écris directement sur CCM, donc aucune garantie que ça fonctionne de premier coup, mais bon, c'est supposé te donner une idée sur comment procéder pour traiter le formulaire.
Mettez en résolu quand c'est résolu -.- ...
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
14 oct. 2013 à 22:29
14 oct. 2013 à 22:29
Waou, merci de ta réponse et du temps que tu as passé là dessus. Je testerai ça le week end prochain, je ne peux pas cette semaine.
Je donnerai des nouvelles sur ce post.
Merci encore
a70m
Je donnerai des nouvelles sur ce post.
Merci encore
a70m
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 14/10/2013 à 23:29
Modifié par JooS le 14/10/2013 à 23:29
De rien.
PS : Edité.
--------------------------------------------------------------------------------------------------------
Mettez en résolu quand c'est résolu -.- ...
PS : Edité.
<?php
$days = array(
1 => 'Samedi',
2 => 'Dimanche',
3 => 'Lundi',
4 => 'Mardi',
5 => 'Mercredi',
6 => 'Jeudi',
7 => 'Vendredi');
$parts = array('debut_am', 'fin_am', 'debut_pm', 'fin_pm');
foreach($days AS $id => $name) {
echo '<p>' . $name . '</p>';
foreach($parts AS $val) {
echo '<select name="day_' . $id . '_' . $val . '">';
if(substr($val, 0, 3) == 'fin') echo '<option value="closed"></option>';
else echo '<option value="closed">Fermé</option>';
for($h = 0; $h < 24; $h++)
for($m = 0; $m < 60; $m++) {
$val = str_pad($h, 2, '0', STR_PAD_LEFT) . ':' . str_pad($m, 2, '0', STR_PAD_LEFT);
echo '<option value="' . $val . '">' . $val . '</option>';
}
echo '</select>';
}
}
--------------------------------------------------------------------------------------------------------
// Vérification que le formulaire est complet et correct
$correctForm = true;
foreach($days AS $id => $name) {
foreach($parts AS $val) {
$field = 'day_' . $id . '_' . $val;
if(!isset($_POST[$field]) OR empty($_POST[$field])) {
$correctForm = false;
break;
}
}
$debut = $_POST['day_' . $id . '_debut_am'];
$fin = $_POST['day_' . $id . '_debut_am'];
if(!compare($debut, $fin)) {
$correctForm = false;
break;
}
$debut = $_POST['day_' . $id . '_debut_pm'];
$fin = $_POST['day_' . $id . '_debut_pm'];
if(!compare($debut, $fin)) {
$correctForm = false;
break;
}
}
if($correctForm) {
$req = 'INSERT INTO table (id_commerce, jour, debut_am, fin_am, debut_pm, fin_pm) VALUES ';
foreach($days AS $id => $name) {
$req .= '(' . $id_commerce . ',' . $id . ',';
$debut_am = ($_POST['day_' . $id . '_debut_am'] != 'closed') ? $_POST['day_' . $id . '_debut_am'] : null;
$fin_am = ($debut_am == null) ? $debut_am : $_POST['day_' . $id . '_fin_am'];
$debut_pm = ($_POST['day_' . $id . '_debut_pm'] != 'closed') ? $_POST['day_' . $id . '_debut_pm'] : null;
$fin_pm = ($debut_pm == null) ? $debut_pm : $_POST['day_' . $id . '_fin_pm'];
$req .= ($debut_am == null) ? 'NULL,' : '\'' . $debut_am . '\',';
$req .= ($fin_am == null) ? 'NULL,' : '\'' . $fin_am . '\',';
$req .= ($debut_pm == null) ? 'NULL,' : '\'' . $debut_pm . '\',';
$req .= ($fin_pm == null) ? 'NULL), ' : '\'' . $fin_pm . '\'), ';
}
$req = rtrim($req, ', ');
var_dump($req);
}
Mettez en résolu quand c'est résolu -.- ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
19 oct. 2013 à 22:07
19 oct. 2013 à 22:07
Salut,
Super ton script, je l'ai un peu modifié à ma sauce et quand j'affiche ma requête tout m'a l'air correct, mais dès que je veux l'exécuter, j'ai une erreur.
j'ai pas mal cherché mais je ne vois pas d'où ça pourrai venir.
Voici la requête que j'ai :
Et l'erreur :
Si tu penses savoir d'où ça peut provenir ...
Merci d'avance
a70m
Super ton script, je l'ai un peu modifié à ma sauce et quand j'affiche ma requête tout m'a l'air correct, mais dès que je veux l'exécuter, j'ai une erreur.
j'ai pas mal cherché mais je ne vois pas d'où ça pourrai venir.
Voici la requête que j'ai :
INSERT INTO horaires (id, id_salle, jour, debut_am, fin_am, debut_pm, fin_pm) VALUES ('', '2','Lundi','NULL','NULL','NULL','NULL'), ('', '2','Mardi','00:15','closed','NULL','NULL'), ('', '2','Mercredi','NULL','NULL','NULL','NULL'), ('', '2','Jeudi','NULL','NULL','NULL','NULL'), ('', '2','Vendredi','NULL','NULL','NULL','NULL'), ('', '2','Samedi','NULL','NULL','NULL','NULL'), ('', '2','Dimanche','NULL','NULL','NULL','NULL'), ('', '2','Jours Fériés','NULL','NULL','NULL','NULL')
Et l'erreur :
Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''INSERT INTO horaires (id, id_salle, jour, debut_am, fin_am, debut_pm, fin_pm) V' at line 1' in horaires.php(62): PDO->exec(''INSERT INTO ho...') #1 {main} thrown in horaires.php on line 62
Si tu penses savoir d'où ça peut provenir ...
Merci d'avance
a70m
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 19/10/2013 à 23:03
Modifié par JooS le 19/10/2013 à 23:03
C'est quoi les quotes dans le exex ?!
Postes la partie d'exécution de la requête.
PS : si id est en auto increment, supprime le de la requête, ça valeur sera affecté automatiquement.
Concernant les valeurs NULL, je te conseille d'utiliser la deuxième version du script que j'ai posté, parce que dans la première, les NULL sont interprétés en tant que chaines de caractères !
Postes la partie d'exécution de la requête.
PS : si id est en auto increment, supprime le de la requête, ça valeur sera affecté automatiquement.
Concernant les valeurs NULL, je te conseille d'utiliser la deuxième version du script que j'ai posté, parce que dans la première, les NULL sont interprétés en tant que chaines de caractères !
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
19 oct. 2013 à 23:11
19 oct. 2013 à 23:11
Ah voilà, c'était effectivement ces quotes que j'avais pas vu dans le exec !
Merci beaucoup de ton aide, je vais encore modifier quelques trucs pour que ce soit comme il faut.
Merci beaucoup
a70m
Merci beaucoup de ton aide, je vais encore modifier quelques trucs pour que ce soit comme il faut.
Merci beaucoup
a70m
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
19 oct. 2013 à 23:23
19 oct. 2013 à 23:23
De rien !
Je n'ai pas précisé le rôle de la fonction compare.
Elle est supposé vérifier que la valeur des deux paramètres est correcte, et que le premier temps(premier paramètre) est inférieur au second(second paramètre), vu que l'heure de début est supposée être inférieur a l'heure de fin.
Je n'ai pas précisé le rôle de la fonction compare.
Elle est supposé vérifier que la valeur des deux paramètres est correcte, et que le premier temps(premier paramètre) est inférieur au second(second paramètre), vu que l'heure de début est supposée être inférieur a l'heure de fin.
a70m
Messages postés
2763
Date d'inscription
jeudi 21 mai 2009
Statut
Contributeur
Dernière intervention
2 février 2014
217
19 oct. 2013 à 23:26
19 oct. 2013 à 23:26
Ah oui en effet, je l'ai supprimée du coup puisque la fonction posait problème et qu'il peut y'avoir des horaires comme 20:00 - 02:00 donc avec le chevauchement de minuit, c'est délicat à gérer donc je l'ai viré.
Mais merci des précisions
Mais merci des précisions
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
19 oct. 2013 à 23:53
19 oct. 2013 à 23:53
Ok.
Mais il faut vérifier quand même les valeurs, vu que l'utilisateur peut les changer dans le formulaire et peut y mettre n'importe quoi !
Mais il faut vérifier quand même les valeurs, vu que l'utilisateur peut les changer dans le formulaire et peut y mettre n'importe quoi !