A voir également:
- Probléme de vérification d'heure
- 2go internet = combien d'heure - Forum Opérateurs & Réseaux mobiles
- 35 go internet équivalent en heure - Forum Mobile
- Vérification lien - Guide
- Convertir heure en centième excel ✓ - Forum Excel
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.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
21 sept. 2011 à 12:05
21 sept. 2011 à 12:05
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... ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 21/09/2011 à 19:47
Modifié par Alain_42 le 21/09/2011 à 19:47
question bête quel format pour les heures testées (celles enregistrées $hd $hf) et celles reçues du formulaire ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
21 sept. 2011 à 21:15
21 sept. 2011 à 21:15
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
Merci le père.
C'était bien juste ça qu'il fallait faire. Donc rajouter un zéro si on à 4 chiffre.
Merci a Alain aussi pour son aide.
C'était bien juste ça qu'il fallait faire. Donc rajouter un zéro si on à 4 chiffre.
Merci a Alain aussi pour son aide.