IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comment incrémenter l'heure dans une variable


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 214
    Par défaut Comment incrémenter l'heure dans une variable
    Bonjour

    Je m'excuse si ma question semble être bête.
    Je sais faire ceci


    Le problème est que ma variable contient la date et l'heure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stage_start="2017-09-01 12:00:21"
    Plus concretement mon rpblème est le suivant.

    Je rempli un tableau et je donne comme index, la variable $stage_start

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sta[$stage_start] = '<li><a '.$style.' href="[[~'.$child->get('id').']]">['.$child->get('id').']'.$child->get('pagetitle').' <em>('.$stage_canton.')</em></a> ('.$stage_start.' - '.$stage_end.')</li>';
    Il se trouve que si deux stages qui comment le même jour et à la même heure, on ne les retrovera pas dans $sta, car le deuxième écrasera le premier.

    Donc l'idée est d'utiliser array_key_exists
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(array_key_exists($stage_start))
    						{
     
    						}
    						else
    						{
    							// Display result
    							$sta[$stage_start] = '<li><a '.$style.' href="[[~'.$child->get('id').']]">'.$child->get('pagetitle').' <em>('.$stage_canton.')</em></a> ('.$stage_start.' - '.$stage_end.')</li>';
    							//$sta[$stage_start] = '<li><a href="[[~'.$child->get('id').']]">'.$child->get('pagetitle').' ('.$stage_canton.')</a>, <em>'.date("d M Y",strtotime($stage_start)).'</em></li>';
    						}

    Si la clé existe, j'aimerais pourvoir changer la valeur de
    Citation Envoyé par PHP
    $stage_start="2017-09-01 12:00:21"
    d'une seconde
    Citation Envoyé par PHP
    $stage_start="2017-09-01 12:00:22"
    Comment pourrais incrémenter ceci alors qu'en fait c'est du texte?

    En écrivant cette derniere phrase, je me demande s'il existe une fonction qui pourrait me convertir
    "2017-09-01 12:00:20"
    en
    20170901120021
    Il me sera plus facile d'incrémenter ce nombre et je pourrais aussi l'utiliser comme index?

    Qu'en pensez-vous?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ce que tu veux faire ce n'est pas robuste.
    Il faut que tes stages aient un identifiant unique, c'est la base d'une structure de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 214
    Par défaut
    Bonjour,
    Oui elles ont un identifiant unique.
    Mais plus bas j'utilise la fonction ksort() pour classe les stages. Si j'utilisais l'identifiant unique, les stages ne seraient pas arrangés par l'heure de départ.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux utiliser array_multisort() pour classer un tableau par une données du sous-niveau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 214
    Par défaut
    D'accord merci.
    Je vais regarder ceci.
    J'étais en train de regarder comment convertir une heure en timestamp car en réalité l'heure n'est tellement une chaîne de caractère vu qu'elle est extraite de à base de donnée. Ce n'est pas la même table que celle des stages. C'est peu particulier...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourquoi tu ne fais pas ton classement directement dans la requête ?

    une heure en timestamp car en réalité l'heure n'est tellement une chaîne de caractère vu qu'elle est extraite de à base de donnée.
    un timestamp c'est une date pas une heure.
    Il n'y a pas de conversion de dates depuis les bases de données vers PHP, c'est donc bien une chaine que tu obtiens.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 214
    Par défaut
    Pourquoi tu ne fais pas ton classement directement dans la requête ?
    Ben oui, je m'attendais à cette question

    En fait, j'utilise une CMS (MOdx) et la variable $stage_start, est le résultat d'une 'Template Variable'. Cette valeru est focément enregistrée dans la base de donnée mais elle n'est pas extraite avec la meme query. C'est pour cela que je ne peux pas faire un WHERE ou une SORT sur la requête.

    Pour être plus précis, je récupère cette valeur avec ceci:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $tvId = 3;
    $tv = $modx->getObject('modTemplateVar', $tvId);
    if ($tv){
       //echo $tvRawValue = $tv->getValue($resourceId);
      $processedValue = $tv->renderOutput($child->get('id'));
      $stage_start = $processedValue;
      //echo $stage_start;
    }
    mais là, on rendre dans un autre sujet

    Il faudrait conertir
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $processedValue
    en timestamp.

    Je devrais pouvoir le faire ainsi, non?

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $timestamp = strtotime($processedValue);

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par sabotage Voir le message
    Ce que tu veux faire ce n'est pas robuste
    Je serais moins "subtil" : ta méthode est nulle.
    On ne "bricole" pas les données...

    Il faut que tes stages aient un identifiant unique...
    Comprendre : "se servir de l'identifiant unique"

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sta[$stage_start][$child->get('id')] = '<li><a '.$style.' href="[[~'.$child->get('id').']]">['.$chi...........

    Ça ajoute une dimension à l'array, mais tu peux avoir autant de stages que tu veux à la même date.
    Et ça reste valable meme pour une date au format DATE yyyy-mm-dd.
    Dernière modification par Invité ; 01/12/2017 à 10h17.

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 214
    Par défaut
    Super, merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment stocker requete dans une variable ?
    Par innova dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/11/2006, 09h00
  2. Comment afficher une valeur contenue dans une variable ?
    Par manubrard dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 16h56
  3. Réponses: 2
    Dernier message: 19/01/2006, 22h59
  4. Réponses: 22
    Dernier message: 09/12/2005, 22h27
  5. Réponses: 4
    Dernier message: 14/09/2005, 18h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo