Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2008, 12h50   #1
Invité de passage
 
Inscription : septembre 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2
Points : 1
Points : 1
Par défaut Erreur de mktime

Bonjour,

Après plus d'une heure de recherche, je me résoud à demander de l'aide... J'utilise la fonction mktime dans quelques uns de mes scripts. Dans un cas, cela crée systématiquement une erreur sans que j'arrive à comprendre la raison. Le code est vraiment simple (j'ai ajouté le numéros de ligne entre parenthése):

/* Dans DateNaisanceBrute se trouve le string "19.11.1998" */

(15) $DateArray = explode ( "." , $DateNaissanceBrute);
(16) $Day = $DateArray[0];
(17) $Month = $DateArray[1];
(18) $Year = $DateArray[2];
(19) echo "Day: " . $Day . "\n";
(20) echo "Month: " . $Month . "\n";
(21) echo "Year: " . $Year . "\n";
(22) $test = mktime(0,*0,*0,*$Month,*$Day, $Year, -1);

Si j'exécute le script ci-dessus en commentant la ligne 22, j'obtient l'affichage attendu:

Day: 19
Month: 11
Year: 1998

Si j'exécute le script avec la ligne 22, j'obtient:

Parse error: syntax error, unexpected T_VARIABLE in /homez.41/jeunessc/www/verif_inscriptions_process.php on line 22

Si je remplace la ligne 22 par la ligne suivante:
$test = mktime(0, 0, 0, 11, 19, 1998, -1);

ça passe sans erreur...

Est-ce que quelqu'un arrive à expliquer un tel comportement ? Toute hypothèse est la bienvenue: je ne sais plus quoi faire ou quoi tester.

Salutations et merci pour toute aide.
apaschou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2008, 13h42   #2
Membre expérimenté
 
Avatar de amoiraud
 
Homme Adrien
Développeur Web
Inscription : octobre 2006
Messages : 419
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2006
Messages : 419
Points : 546
Points : 546
Envoyer un message via MSN à amoiraud
Salut,
Je sait pas si l'erreur vient de la mais pourquoi tu met des * devant les variables de ton mktime ?

Citation:
$test = mktime(0,*0,*0,*$Month,*$Day, $Year, -1);
Essaye de les enlever, a part ca je vois pas d'autre erreure
amoiraud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2008, 18h31   #3
Invité de passage
 
Inscription : septembre 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2
Points : 1
Points : 1
Par défaut Merci pour l'aide et quelques compléments

Bonjour,

En effet, dans mon message, il y a des '*'... je ne m'en suis pas rendu compte, ils sont apparus lors du copier coller. Bien sûr ceux-ci n'apparaissent pas dans mon fichier texte original. Du coup, j'ai creusé un peu et compris le problème:

Mon éditeur texte (TextWrangler) m'indique que mon fichier est en Western MacOS Roman alors qu'en pratique il est en UTF-8 (ou UTF-16, je ne sais pas). Chaque caractère prend deux bytes. Si je dump en hexa, on voit des caractères 0xA0. Lors du copier-coller, une partie de ceux-ci sont devenus des étoiles...

Enfin bon... la solution est bien sûr de fore le fichier en mode ASCII pour garder un caractère par octet :-). Ensuite, tout va mieux.
apaschou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h35.


 
 
 
 
Partenaires

Hébergement Web