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

PHP & Base de données Discussion :

DateTime::__construct() expects parameter 1 to be string [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut DateTime::__construct() expects parameter 1 to be string
    Hello,

    J'ai un petit soucis que j'ai réglé mais ne suis pas satisfait car pour moi c'est plus du bricolage que de la pure compréhension.

    J'avais ce code qui me mettais ce message d'erreur:"DateTime::__construct() expects parameter 1 to be string"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
              if ($valetOccupationtimedepartured >= $systemOptionsValetCount) {
                $date_departurelmore = new DateTime($datetime_departure);
                while ( $valetOccupationtimedepartured >= $systemOptionsValetCount) {
                    $numMinutes = 15;
                    $date_departurelmore->modify ("+{$numMinutes} minutes");
                    $valetOccupationtimearrival = self::countplaceviphourdays($date_departurelmore);
              }
     
        public function countplaceviphourdays($datetime_valet)
        {
            $numMinutes = 59;
            $date_more = new DateTime($datetime_valet);
            $date_less = clone $date_more;
            $date_more->modify ("+{$numMinutes} minutes");
            $date_less->modify ("-{$numMinutes} minutes");
     
            $vipOccupationtime = DB::table('reservations')
                ->where(function($query) use ($date_less,$date_more){
                    $query->whereBetween('date_of_departure', [$date_less, $date_more])
                    ->orWhereBetween('date_of_arrival', [$date_less, $date_more]);
                        }) 
                ->where('reservation_type', '=', 'valet')
                ->where('payment_status', '=', 'completed')
                ->where('is_returned', '!=', '1')
                ->count();
     
            return $vipOccupationtime;
        }
    C'étais la variable $date_departurelmore qui fesait cette erreur car quand j'arrivais à la function cette ligne là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       $date_more = new DateTime($datetime_valet);
    me fessait une erreur

    donc du coups pour mettre cette variable en string j'ai du ajouter ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $day_arrivalmore = $date_arrivalmore->format('Y-m-d');
    $minute_arrivalmore = $date_arrivalmore->format('H:i');
     $datetime_arrivalmore=$day_arrivalmore." ". $minute_arrivalmore;
    ce qui donne ce code au final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
                $date_arrivalmore = new DateTime($datetime_arrival);
                while ( $valetOccupationtimearrival >= $systemOptionsValetCount) {
                    $numMinutes = 15;
                    $date_arrivalmore->modify ("-{$numMinutes} minutes");
                    $day_arrivalmore = $date_arrivalmore->format('Y-m-d');
                    $minute_arrivalmore = $date_arrivalmore->format('H:i');
                    $datetime_arrivalmore=$day_arrivalmore." ". $minute_arrivalmore;
                    $valetOccupationtimearrival = self::countplaceviphourdays($datetime_arrivalmore);
                    $date_arrivalmore = new DateTime($datetime_arrivalmore);
                }
     
     
        public function countplaceviphourdays($datetime_valet)...
    Et là ça marche mon problème c'est que j'arrive pas à trouver la solution toute bête pour éviter d'ajouter ce bricolage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $day_arrivalmore = $date_arrivalmore->format('Y-m-d');
    $minute_arrivalmore = $date_arrivalmore->format('H:i');
     $datetime_arrivalmore=$day_arrivalmore." ". $minute_arrivalmore;
    Merci d'avance pour toute aide et surtout savoir si il y a une solution

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    il te suffit de tester pour adapter le comportement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public function countplaceviphourdays($datetime_valet)
    {
        $numMinutes = 59;
        $date = ($datetime_valet instanceof \DateTime)
                    ? \DateTimeImmutable::createFromMutable($datetime_valet)
                    : new \DateTimeImmutable($datetime_valet);
     
        $date_more = $date->modify("+{$numMinutes} minutes");
        $date_less = $date->modify("-{$numMinutes} minutes");
     
        $vipOccupationtime = DB::table('reservations')
            ->where(function($query) use ($date_less,$date_more){
                $query->whereBetween('date_of_departure', [$date_less, $date_more])
                ->orWhereBetween('date_of_arrival', [$date_less, $date_more]);
                    }) 
            ->where('reservation_type', '=', 'valet')
            ->where('payment_status', '=', 'completed')
            ->where('is_returned', '!=', '1')
            ->count();
     
        return $vipOccupationtime;
    }
    et tu peux virer la cuisine

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Merci rawsrc

    c'est bon sa marche, par contre es-ce que tu peux m'expliquer ce bout de code car je ne comprend pas tous.
    J'aimerai mourir moins bêtes

    merci en tous cas

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $date = ($datetime_valet instanceof \DateTime)
        ? \DateTimeImmutable::createFromMutable($datetime_valet)
        : new \DateTimeImmutable($datetime_valet);
    On vérifie si $datetime_valet est déjà une instance de DateTime, si oui on créé une nouvelle instance $date à partir de l'autre instance \DateTimeImmutable::createFromMutable($datetime_valet), sinon on crée une nouvelle instance de DateTime à partir de la chaîne de texte new \DateTimeImmutable($datetime_valet).
    Les versions Immutable ne modifient pas la valeur de l'instance courante à chaque mise à jour. En gros, tu récupères à chaque modification une nouvelle instance de DateTime. Cela nous a permis de s'affranchir de clone.

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

Discussions similaires

  1. Warning: mysql_query() expects parameter 1 to be string, object given
    Par AliciaSH dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 14/06/2017, 19h18
  2. mysql_query() expects parameter 1 to be string
    Par LerikalBless dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/02/2016, 13h46
  3. [SimpleXML] Warning:simplexml_load_string()expects parameter 1 to be string
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 10/06/2015, 18h07
  4. [2.x] Warning: strpos() expects parameter 1 to be string, array given in
    Par aitiahcene dans le forum Symfony
    Réponses: 19
    Dernier message: 02/07/2012, 10h56
  5. Réponses: 4
    Dernier message: 12/04/2010, 22h14

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