Script qui fonctionne en PHP5, pas en PHP4...

Résolu
seb841 Messages postés 4 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009 - 9 déc. 2009 à 17:56
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 10 déc. 2009 à 19:35
Bonjour,

J'ai un petit soucis, j'ai une date recuperée au format AAAA-MM-JJ.

J'ai ensuite ce petit script qui me permet de récuperer le nom du jour (lundi , mardi ...) selon la date :

function nom_jour($date) 
{
 
$jour_semaine = array(1=>"Lundi", 2=>"Mardi", 3=>"Mercredi", 4=>"Jeudi", 5=>"Vendredi", 6=>"Samedi", 7=>"Dimanche");
 
list($annee, $mois, $jour) = explode ("-", $date);
 
$timestamp = mktime(0,0,0, date($mois), date($jour), date($annee));
$njour = date("N",$timestamp);
return $jour_semaine[$njour];
echo $jour_semaine[$njour];
 }


En local avec wamp ou easyphp, aucun probleme, l'un est en php5.2 et l'autre en 5.3.
Pär contre une fois balancé sur OVH (php4) cela ne fonctionne plus....

Mon sauveur aura toute ma reconnaissance

seb

8 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 déc. 2009 à 06:11
Re,

... je ne vois pas trop ce qui peut bloquer là.
Je pense que le problème vient d'ailleurs.

Si tu crée un nouveau fichier et que tu colles ça :
<?php
ini_set('display_errors', 1);
error_reporting(-1);

function nom_jour($date) {
    $jour_semaine = array(1=>"Lundi", 2=>"Mardi", 3=>"Mercredi", 4=>"Jeudi", 5=>"Vendredi", 6=>"Samedi", 7=>"Dimanche");

    list($annee, $mois, $jour) = explode ("-", $date);
    
    $timestamp = mktime(0,0,0, $mois, $jour, $annee);
    $njour = date("N", $timestamp);
    return $jour_semaine[$njour];

}

echo 'jour : ['.nom_jour('2009-12-07').']';

?>


Qu'est ce que ça dit ?


Cordialement,


Kohntark -
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 déc. 2009 à 17:11
Arf, au temps pour moi, le format "N" n'est disponible qu'à partir de PHP 5.1.0. Remplace le donc par "w" et modifie ton tableau en conséquence (0=>dimanche, 1=>lundi, etc ...)

Pour ce qui est de l'erreur que tu as en PHP 5 :
http://fr2.php.net/manual/fr/function.date-default-timezone-set.php

Cordialement,

Kohntark -
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
9 déc. 2009 à 18:23
Salut,

Il y a des trucs que je ne comprends pas dans ton code :

$timestamp mktime(0,0,0, date($mois), date($jour), date($annee));

> ça plutôt, non ?
$timestamp = mktime(0,0,0, $mois, $jour, $annee);

echo $jour_semaine[$njour];

=> ne sert à rien puisqu'il y a le return juste avant.

Le list aussi ne sert à rien; autant affecter l'explode à variable de type tableau et l'utiliser directement dans le mktime.


Tente dans un premier temps de corriger ça (le premier point surtout)

Et :
Quand tu dis que ça ne fonctionne plus que se passe t il au juste ? Une erreur ? un retour vide ?
Peux tu donner des exemples de date que tu passes à la fonction et qui ne fonctionnent pas ?

Cordialement,

Kohntark -
0
seb841 Messages postés 4 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
9 déc. 2009 à 18:49
Merci pour cette premiere réponse claire et structurée, ca fait plaisir

Bon j'ai tenté le premier point, resultat identique.

Pour répondre a ta question, j'ai un retour vide

Mon objectif est le suivant :

J'ai une date en variable, par exemple "2009-12-09" Je veux l'afficher, mais la faire préceder de lundi...mardi... ici mercredi donc : Mercredi 2009-12-09

J'ai pas encore la solution mais tu me redonnes espoir

Niveau codage je suis pas un expert, j'ai beaucoup de mal a pondre un code de moi meme, par contre j'ai l'avantage de comprendre les codes que j'utilise et de réussir en général a les adapter... Ce qui explique les choses "en trop" que tu as trouvé (que jai viré et ca marche tout aussi bien ... en local )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
seb841 Messages postés 4 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 08:21
Alors,

Sur mon serveur PHP 5.3 (easy php) :
[code=php]Strict Standards: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in E:\_Environnement\bureau\QuisortLeSite\test.php on line 10

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in E:\_Environnement\bureau\QuisortLeSite\test.php on line 11
jour : [Lundi]
/code


et sur OVH (php4) :

Notice: Undefined index: N in /homez.218/quisort/www/test.php on line 12
jour : []
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 déc. 2009 à 17:14
Et puis :
PHP 4 c'est vieux
=> http://guide.ovh.com/Php5ChezOvh

date() c'est vieux
=> http://fr2.php.net/manual/fr/book.datetime.php


Kohntark -
0
seb841 Messages postés 4 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 10 décembre 2009
10 déc. 2009 à 19:17
Bien joué, c'était bien cela !

Merci a toi Mr Sylvain !!
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 déc. 2009 à 19:35
De rien Mr Seb, ce fut un plaisir


Bonne continuation,


Kohntark -
0
Rejoignez-nous