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 :

le script se déroule bien mais warning quand on en sort [POO]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut le script se déroule bien mais warning quand on en sort
    Bonjour,

    si je dis que le script se déroule bien, c'est que en debug pas à pas (xdebug), tout va bien jusqu'à la fin, mais quand on sort du script :
    Warning: Undefined array key "US_sesa" in C:\projets\ticket_rawsrc\src\model\Users.php on line 25
    Le script en question :
    Code php : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <?php
     
    namespace ticket_rawsrc\model;
     
    use ticket_rawsrc\view\DispMsg;
     
    use ticket_rawsrc\model\license\table\Platforms;
    use ticket_rawsrc\model\license\table\Applications;
    use ticket_rawsrc\model\license\table\BusinessUnits;
    use ticket_rawsrc\model\license\table\Countries;
    use ticket_rawsrc\model\license\table\Locations;
    use ticket_rawsrc\model\license\table\Companies;
    use ticket_rawsrc\model\ticket\table\Organizations;
    use ticket_rawsrc\model\license\table\Users_license;
    use ticket_rawsrc\model\license\table\Domains;
    use ticket_rawsrc\model\license\table\Emails;
    use ticket_rawsrc\model\license\table\Licenses;
     
     
     
    class Debug
    {
        public function invoke ()
        {
            DispMsg::dispMsg("coucou", true);
     
            $platform= 'plat1';
            $platformowner = 12345;
            $publisher = 'pub1';
     
            $id_plat = Platforms::getId($platform);
            if (!$id_plat)
                $id_plat = Platforms::insert($platform, $platformowner, $publisher);
     
            $ref_rawsrc = new Applications;
            $appli = 'new_appli';
     
            $id_appli = Applications::getId($appli);
     
            if (!$id_appli)
                $id_appli = Applications::insert($appli, $id_plat);
     
            $country='France';
     
            $id_country = Countries::getId($country);
     
            $Location = 'Lans-en-Vercors';
     
            $id_loc = Locations::getId($Location);
     
            if (!$id_loc)
                $id_loc = Locations::insert($Location, $id_country);
     
     
            $company_name = 'company1';
     
            $id_comp = Companies::getId($company_name );
     
            if (!$id_comp)
                $id_comp = Companies::insert($company_name);
     
            $bu_name ='bu_name1';
     
            $id_bu = BusinessUnits::getId($bu_name );
     
            if (!$id_comp)
                BusinessUnits::insert($bu_name, $id_comp);
     
            $orga_name = 'orga1';
     
            $id_orga = Organizations::getId($orga_name );
     
            if (!$id_orga)
                $id_orga  = Organizations::insert($orga_name);
     
            $users_sesa_manager = null;
            $users_firstname_manager = 'Michel';
            $users_lastname_manager = 'Farastier';
     
            $users_sesa  = 12345;
            $users_firstname = 'Laurent';
            $users_lastname = 'Schmitt';
            $oz_manager = null;
            $cou_manager = null;
     
            $id_users_manager = Users::getId($users_sesa_manager );
     
            if (!$id_users_manager)
                $id_users_manager  = Users::insert($users_sesa_manager, $users_firstname_manager, $users_lastname_manager, $oz_manager, $cou_manager);
     
            $id_users = Users::getId($users_sesa );  //le warning apparait si je rajoute cette ligne (le code de cette méthode statique est donné ci-dessous)
     
         /*   if (!$id_users)
                $id_users  = Users::insert($users_sesa, $users_firstname, $users_lastname, $id_orga, $id_country);  
    
    
         /*   $id_users_license = Users_license::getId($id_users );
    
    
           if (!$id_users_license)
                $id_users_license  = Users_license::insert($id_users, $id_users_manager, $id_loc, $id_comp);
    */
        }
    }
    Obligé de mettre tout ça car ce sont des insert en bdd et y a des clés étrangères.

    Le warning porte sur Users.php :
    Code php : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
    namespace ticket_rawsrc\model;
     
    use ticket_rawsrc\model\Collection;
     
     
    class Users extends Collection
    {
        private static array $data = [];
     
        /**
         * @param string $user_sesa
         *
         * @return int|null
         */
        public static function getId (?int $user_sesa ): ?int
        {
            if ( self::$data === [] )
            {
                self::readTable();
            }
     
            foreach (self::$data as $row)
            {
                if ( $row['US_sesa'] === $user_sesa ) //ligne 25
                {
                    return (int)$row['US_ident'];
                }
            }
     
            return null;
        }
     
        private static function readTable (): void
        {
            self::$data = self::getPPP()
                ->select('SELECT * FROM `US_user`');
        }
     
     
        public static function insert (?int $sesa, ?string $firstname, ?string $lastname, ?int $OZ_ident, ?int $COU_ident
        ): int
        {
            $ppp = self::getPPP();
            $sql = <<<sql
    INSERT INTO US_user SET 
    US_sesa = {$ppp($sesa,'int')},
    US_firstname = {$ppp($firstname,'str')},
    US_lastname = {$ppp($lastname,'str')},
    OZ_ident = {$ppp($OZ_ident,'int')},  
    COU_ident = {$ppp($COU_ident,'int')}
    sql;
            $id = (int)$ppp->insert($sql);
     
            // on met à jour nos données locales
            self::$data[] = [
                'US_ident' => $id,
                'US_firstname' => $firstname,
                'US_lastname' => $lastname,
                'OZ_ident' => $OZ_ident,
                'COU_ident' => $COU_ident
            ];
     
            return $id;
        }
    }
    Si quelqu'un comprend, je l'en remercie.

  2. #2
    Membre confirmé Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 345
    Points : 495
    Points
    495
    Par défaut
    c'est étonnant, et si vous rajoutez ça dans le if ligne 25 de la classe User:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(isset($row['US_sesa']) && $row['US_sesa'] === $user_sesa )
    ça fait pareil?

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Génial, plus de warning

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/10/2011, 10h30
  2. [AJAX] Script qui plante IE mais pas Firefox
    Par Booyakha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2006, 18h40
  3. code action script et xml valide mais ne fonctionne pas
    Par artotal dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/03/2006, 16h32
  4. lien durs mais clik quand même comptabilisés, comment ?
    Par italiasky dans le forum Langage
    Réponses: 4
    Dernier message: 04/02/2006, 15h59

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