OVH Cloud OVH Cloud

Raisonnement errone sur while et format date ?

11 réponses
Avatar
Dominique Ottello
Bonjour,

Soit une extraction de date depuis une table MySQL par :

SELECT DATE_FORMAT(h_date_deb,'%d-%m-%Y') AS da1

Nota : la colonne h_date_deb est bien déclaré comme champ date

Certains champs ne comprennent pas le quantième et sont retournés avec
des valeurs comme "00-12-1947" d'autres ne comprennent que l'année, par
exemple "00-00-1947" et d'autres sont "vides" donc avec la valeur
retournée "00-00-0000".

Pour ne garder que les valeurs significatives, j'ai le code php :

while(substr($da1,0,2) == "00") $da1 = substr($da1,3);

Je m'attendais à ce que le résultat final d'une chaîne "00-00-0000" soit
"0", or j'obtiens une chaîne vide.

En mettant un affichage de $da1 dans la boucle :

while(substr($da1,0,2) == "00") {
$da1 = substr($da1,3);
echo "<p>da1=\"".$da1."\"</p>\n";
}

j'obtiens :

da1="00-0000"
da1="0000"
da1="0"
da1=""

Où est mon erreur de raisonnement, puisque l'avant-dernière valeur est
"0" qui n'est pas égal à "00".
--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis

1 réponse

1 2
Avatar
Olivier Miakinen
Le 22/06/2008 15:59, Mickael Wolff a écrit :

Je vais aller me flageller. En espérant trouver des orties fraîches.



Même pas cap ! ;-)

En effet, je n'avais pas pensé à 08 et 09. Finalement, tu as raison,
transtyper '07' en 7 est moins attrape-nigaud que '010' en 8.



Merci. Je ne suis pas sûr d'avoir compris ce que tu avais alors en tête,
mais je ne cherche plus car là ce serait vraiment du pinaillage. Je suis
juste rassuré de voir que nous sommes finalement d'accord.
1 2