Probléme de vérification d'heure
Marlocq
-
le père -
le père -
Bonjour,
Je vous explique le topo. Je fais un calendrier pour des locaux avec insertion de date dans la base de donnée via un formulaire.
J'ai un soucis que je ne comprend pas trop bien au niveau des vérifications des heures. Le soucis est le suivant: j ai un local qui est occupé de 8h à 12h et je veux inséré une heure d'occupation de 15h a 18h. La 15h 18h est bloqué. C'est l'avant dernière vérification qui bloque alors qu'elle devrait juste bloqué celle qui englobe les heures d'occupation (genre 7:00 13:00)
Voici le code de vérification
nhd= nouvelle heure de départ
hd= heure de départ (ancienne)
nhf= nouvelle heure de fin
hf= heure de fin
if ( $nhd >= $hd && $nhd <= $hf ) {
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} elseif ( $nhd == $hd ) {
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} elseif ( $nhf >=$hd && $nhf <= $hf ){
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} elseif ( $nhd <=$hd && $nhf >= $hf ) {
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} elseif ( $nhf == $hf ) {
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} else {...
Je vous explique le topo. Je fais un calendrier pour des locaux avec insertion de date dans la base de donnée via un formulaire.
J'ai un soucis que je ne comprend pas trop bien au niveau des vérifications des heures. Le soucis est le suivant: j ai un local qui est occupé de 8h à 12h et je veux inséré une heure d'occupation de 15h a 18h. La 15h 18h est bloqué. C'est l'avant dernière vérification qui bloque alors qu'elle devrait juste bloqué celle qui englobe les heures d'occupation (genre 7:00 13:00)
Voici le code de vérification
nhd= nouvelle heure de départ
hd= heure de départ (ancienne)
nhf= nouvelle heure de fin
hf= heure de fin
if ( $nhd >= $hd && $nhd <= $hf ) {
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} elseif ( $nhd == $hd ) {
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} elseif ( $nhf >=$hd && $nhf <= $hf ){
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} elseif ( $nhd <=$hd && $nhf >= $hf ) {
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} elseif ( $nhf == $hf ) {
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
} else {...
A voir également:
- Probléme de vérification d'heure
- Changement d'heure - Guide
- Heure de connexion whatsapp qui ne changé pas - Accueil - WhatsApp
- Verification lien internet - Guide
- Verification windows 11 - Guide
- 2go internet = combien d'heure - Forum Opérateurs & Réseaux mobiles
15 réponses
Bonjour
Si j'ai bien compris ton problème, tu as
As-tu bien vérifié avec un echo que tu as les bonnes valeurs ? Parce que chez moi, le test marche.
Si j'ai bien compris ton problème, tu as
$nhd= 15; // nouvelle heure de départ $hd= 8; // heure de départ (ancienne) $nhf= 18; // nouvelle heure de fin $hf= 12; // heure de fin
As-tu bien vérifié avec un echo que tu as les bonnes valeurs ? Parce que chez moi, le test marche.
essayes comme ça:
if( ($nhd <= $hd && $nhf >=$hd) || ($nhd >= $hd && $nhd < $hf) || ($nhf < $hf) ){
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
}else{
}
j ai testé ta solution Alain chez moi ça ne bloque pas les cas
nhd:7:00
hd:8:00
nhf: 18:00
hf: 12:00
nhd:7:00
hd:8:00
nhf: 18:00
hf: 12:00
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ton programme marche chez moi avec les valeurs que j'ai indiquées, il n'y a aucune raison qu'il ne marche pas chez toi.
As-tu vérifié les valeurs des variables avec un echo immédiatement avant ta série de comparaisons ? Sinon, comment les as-tu vérifiées ?
Comment as tu établi que c'est la 4ème comparaison qui bloque ?
As-tu vérifié les valeurs des variables avec un echo immédiatement avant ta série de comparaisons ? Sinon, comment les as-tu vérifiées ?
Comment as tu établi que c'est la 4ème comparaison qui bloque ?
J'ai vérifier en faisant un echo avant les vérifications et après on ne sais jamais...
J'ai testé en mettant la 4ie vérification en commentaire et après ça les heures passait marchait après. Sinon pour la trouvé je suis partit du principe simple que c'est la seule qui parle de $nhf>= $hf.
Ce qui me semble louche c'est que la première fois que je l'avais testé ça avait marché et plus maintenant...
J'ai testé en mettant la 4ie vérification en commentaire et après ça les heures passait marchait après. Sinon pour la trouvé je suis partit du principe simple que c'est la seule qui parle de $nhf>= $hf.
Ce qui me semble louche c'est que la première fois que je l'avais testé ça avait marché et plus maintenant...
Peux-tu refaire un essai sans mettre le 4ème test en commentaire, mais en mettant 5 messages différents ("1 - Impossible..." "2 - Impossible...") etc... ?
question bête quel format pour les heures testées (celles enregistrées $hd $hf) et celles reçues du formulaire ?
j ai testé ta solution Alain chez moi ça ne bloque pas les cas
nhd:7:00
hd:8:00
nhf: 18:00
hf: 12:00
j'ai unj peu plus de temps ce soir et j'ai regardé ton pb de plus près et fait ce petit bout de code de test:
il fonctionne si on saisi les heures sous le format numérique 7 8 18 12
par contre et c'est normal qu'il ne fonctionne pas si on saisit 7:00 8:00 12:00 car ce ne sont pas des formats numériques donc pas comparables
Je répète ma question ci dessus quels sont les formats de tes heures ?
nhd:7:00
hd:8:00
nhf: 18:00
hf: 12:00
j'ai unj peu plus de temps ce soir et j'ai regardé ton pb de plus près et fait ce petit bout de code de test:
<?php
if(isset($_POST['envoyer'])){
$hd=$_POST['hd'];
$hf=$_POST['hf'];
$nhd=$_POST['nhd'];
$nhf=$_POST['nhf'];
if( ($nhd <= $hd && $nhf >=$hd) || ($nhd >= $hd && $nhd < $hf) || ($nhf < $hf) ){
echo '<div id="forminserdatelocaux">';
echo "<p class=\"red\">Impossible d'envoyer votre demande. Le local n'est pas disponible pour aux heures demandées.</p>";
}else{
echo "Possible";
}
}else{
$hd="";
$hf="";
$nhd="";
$nhf="";
}
?>
<html>
<form name="form1" method="post" action="">
HD<input type="text" name="hd" value="<?php echo $hd; ?>" />
HF<input type="text" name="hf" value="<?php echo $hf; ?>" /><br />
NHD<input type="text" name="nhd" value="<?php echo $nhd; ?>" />
NHF<input type="text" name="nhf" value="<?php echo $nhf; ?>" />
<input type="submit" name="envoyer" value="Envoyer" />
</form>
</html>
il fonctionne si on saisi les heures sous le format numérique 7 8 18 12
par contre et c'est normal qu'il ne fonctionne pas si on saisit 7:00 8:00 12:00 car ce ne sont pas des formats numériques donc pas comparables
Je répète ma question ci dessus quels sont les formats de tes heures ?
Bonjour Alain_42
Tu as certainement raison sur le fait que Marlocq travaille avec des heures au format 8:00 et non pas simplement 8.
Par contre, ta formule de comparaison est certainement fausse. La seule condition ($nhf < $hf) empêche de définir une nouvelle occupation qui se termine avant la fin de l'ancienne, même si elle se termine avant de début !
Je pense qu'il faut :
négation de : les nouvelles heures de début et de fin sont toutes les deux avant l'ancien début ou toutes les deux après l'ancienne fin
Tu as certainement raison sur le fait que Marlocq travaille avec des heures au format 8:00 et non pas simplement 8.
Par contre, ta formule de comparaison est certainement fausse. La seule condition ($nhf < $hf) empêche de définir une nouvelle occupation qui se termine avant la fin de l'ancienne, même si elle se termine avant de début !
Je pense qu'il faut :
if (!($nhd <= $hd) && ($nhf <= $hd) || ($nhd >= $hf) && ($nhf >=$hf))) {...
négation de : les nouvelles heures de début et de fin sont toutes les deux avant l'ancien début ou toutes les deux après l'ancienne fin
Si tu as bien TOUJOURS 1 ou 2 chiffres pour les heures, puis le caractère : puis 2 chiffres pour les minutes, il te suffit de rajouter un '0' à gauche si la chaîne ne fait que 4 caractères. Ensuite, Tu peux comparer tes valeurs comme si elles étaient des nombres.
Sinon, il faut que tu convertisses ton heure en un nombre, mais là la conversion dépend de ce qui est permis dans les données entrées
Sinon, il faut que tu convertisses ton heure en un nombre, mais là la conversion dépend de ce qui est permis dans les données entrées