Chargement d'une date farfelue avec la fonction STRTOTIME

Signaler
Messages postés
68
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
1 décembre 2012
-
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
Bonjour les z'amis,

je ressors mes rames pour un bon moment... pfffffffffffff

j'ai un petit soucis avec la commande STRTOTIME.
En fait, je désirais afficher dans les zones de mon formulaire un format date Français.
Après quelques recherches, j'ai pu adapter la fonction STRTOTIME qui me donne de bon résultat.
Cependant, quand mes zones dates sont alimentées via la db sql et  une date correcte, pas de prob. mais quand ma zone est = à une date 0000-00-00 ( parce qu'il n'y a pas encore eu d'encodage ) j'ai en retour une date farfelue du style 30-11-1999.
Ci-dessous mon bout de code :
<?php
 include('..\include\common\haut.inc.php');
 include('..\include\gestion_sg\param.inc.php');
  $email =$_REQUEST['email']; //Recuperation de la variable email du lien de la page
        $liendb = mysql_connect($host,$user,$pws);
       mysql_select_db ($database);
 $sql = "select * from ticket where email='$email' and Status IN ('AP','PL') order by Status";
 $resultat = mysql_query ($sql);
?>
  ----

 <table width=80% align=center border=2 >
 ----

 NUM_TICKET,
 DATE_DEMANDE,
 DATE_SOUHAITEE,
 DATE_PREVUE,
 OPERATEUR,
 STATUT,
 
<?php
while ($ticket = mysql_fetch_array ($resultat))
{
$numticket = $ticket['numticket'];
$timestamp = strtotime($ticket['datedebut']); //Adaptation de la date format EN de la DB en format FR
$datefr = date('d-m-Y', $timestamp); //Parametre affichage  en format FR
$timestamp1 = strtotime($ticket['datesouhaitee']); //Adaptation de la date format EN de la DB en format FR
$datefr1 = date('d-m-Y', $timestamp1); //Parametre affichage  en format FR
$timestamp2 = strtotime($ticket['dateprevue']); //Adaptation de la date format EN de la DB en format FR
$datefr2 = date('d-m-Y', $timestamp2); //Parametre affichage  en format FR
$operateur= $ticket['operateur'];
$Status = $ticket['Status'];

echo \"----
\";
echo \"$numticket, \";
echo \"$datefr, \";
echo \"$datefr1, \";
echo \"$datefr2, \";
echo \"$operateur, \";
echo \"$Status, \";
echo \"";
echo "<form action='ticket_edite_user.php'>";
echo "";
echo "";
echo "";
echo "</form>";
echo ", \";
echo \"\";
}
echo "
";
mysql_close($liendb);
echo "";
echo "</html>";
include ('..\include\common\bas.inc.php');
?>

Avez-vous une idée, une explication qui me permettrait d'afficher une valeur à blanc ou la date équivalente à 00-00-0000 si il n'y a pas de données pour cette zone dans la DB.
Toutes indication, aides sont les bienvenues.

Merci

3 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut Ecolom,

Peut être tout simplement en faisant un trucbidule du genre :
if ($ticket['dateprevue'] == '0000-00-00') {
    $datefr2 = 'naissance de JC'; // la date équivalente à 00-00-0000
} else {
    $timestamp2 = strtotime($ticket['dateprevue']); //Adaptation de la date format EN de la DB en format FR
    $datefr2 = date('d-m-Y', $timestamp2); //Parametre affichage  en format FR
}

Cordialement,

Kohntark -
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Plutôt que d'utiliser strtotime(), regarde plutôt du côté de date_create() avec date_format() pour du procédural ou vers l'objet DateTime pour de l'objet. Tu trouvera des exemples de ce genre de choses dans la documentation de DateTime::format
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
heu ... j'ai sans doute dis une connerie, qui ne sera ni la première ni la dernière.
A vrai dire tout ça porte un peu à confusion.
Quelles sont les valeurs exactes contenues dans ta DB ?
Quel type de champ est ce ?
As tu l'accès complet sur la base ?

Cordialement,

Kohntark -