afficher des heures avec un zero devant

Eléphant du PHP | 71 Messages

22 nov. 2006, 01:24

bonsoir,

je desire tester l'egalité entre la variable $_POST["heureDebut"] du script suivant, et une sous-chaine stocké dans $heureDebut.

or, $heureDebut etant une sous-chaine, 8h est stocker sous la forme 08:00, et $_POST["heureDebut"] comme ceci 8:00, l'egalité n'est donc pas vrai :(

comment puis-je parer à ce probleme ?
<select name="heureDebut">
<?php
for($heure=06;$heure<=22;$heure++)
{
	$minutes = array("00","30");
	foreach($minutes as $cle => $demiHeure)
	{
		echo "<option value=\"".$heure.":".$demiHeure."\" ".($heureDebut==$heure.":".$demiHeure?"SELECTED":null).">".$heure.":".$demiHeure."</option>";
	}
}
?>
</select>
merci à vous !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 nov. 2006, 01:35

Salut,

En concaténant ce qu'il manque, c'est à dire le "0" à la variable $_POST["heureDebut"].

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 1961 Messages

22 nov. 2006, 01:36

Bonsoir,

Si je comprends bien ton PB c'est d'avoir les heures sur deux caractères
Essaie QQ chose du style
<?php
	for($i = 6; $i <= 22; $i++){
		echo $heure = ($i < 10 ? '0' . $i : $i);
	}
?>
Pour le reste à toi de l'adapter en fonction de tes besoins
EDIT : C'est quoi votre carburant ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 nov. 2006, 01:48

EDIT : C'est quoi votre carburant ?
La vue des [Résolu] rapides :lol:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 1961 Messages

22 nov. 2006, 03:14

Re,

J'ai regardé le code plus en détail, je ne suis pas sur qu'il face ce à quoi tu t'attends.
Ceci serait plus proche
<select name="heureDebut">
<?php
	// Ligne à supprimer ( elle sert aux tests)
	$heureDebut = '08:30';
	/*
	** Définition des variables
	*/
	// Heure de départ
	$start = 6;
	
	// Heure de fin
	$end = 22;
	
	// Définit les intervales
		// Pour afficher les options par 1/4 d'heure
		// il suffit de modifier le tableau comme ceci 
		// $interval = Array('00', '15', '30', '45'); Sana toucher au reste du code
	$interval = Array('00', '30');
	
	// La ligne suivante permet d'avoir autant d'intervales que souhaités (en fonction de $interval
	$repeter = count($interval);
	/*
	** Coeur du PGM
	*/
	// Calcul de l'heure
   for($i = $start; $i <= $end; $i++){
   	// Ajout des intervales (choix)
		for($j = 0; $j < $repeter; $j++){
			$heure = ($i < 10 ? '0' . $i : $i) . ':' . $interval[$j];
			echo '<option value="' . $heure . '"' . ($heure == $heureDebut ? ' selected="selected" ' : ' ') . '>' . $heure . "</option>\n";
		} 
	}
?>
</select>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 nov. 2006, 08:42

A priori, si le problème ne se pose que pour le premier '0' de la chaine, un simple test sur la longueur de la chaine devrait suffir :
if(strlen($heure) < 2) 
  $heure = '0' . $heure;
on peut éventuellement le faire également avec str_pad(), mais quand on connait la taille initiale, c'est pas vraiment interessant :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 1961 Messages

22 nov. 2006, 13:24

Bonjour,

C'est un choix, perso je n'aime pas mélanger les types (int - chaîne).

Il écrit
for($heure=06;$heure<=22;$heure++)
Ce qui me fais croire qu'il estime avoir '06'.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 71 Messages

22 nov. 2006, 14:46

woaw merci à tous :wink:

je me permet d'utiliser ton code Ajoloca, je n'aurait jamais reussit à coder ca aussi proprement.

merci aussi à toute la comunauté c'est grace à vous que j'ai apprit le php, vos explications sont trés claire, c'est ce qui m'as permit d'avancer dans le developpement !

longue vie à phpfrance :love5:

ViPHP
ViPHP | 1961 Messages

22 nov. 2006, 14:58

Bonjour,

Pas de PB pour la réutilisation,c'est fait pour, même si c'était pas mon but premier.
Je voulai te donner à comprendre qu'il faut une grande pratique pour jongler avec les types dans un language faiblement typé comme PHP et aussi qu'il faut coder en pensant aux évolutions métier, voir à la réutilisation du code.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein