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 :

erreur "Undefined offset: 0" [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 10
    Par défaut erreur "Undefined offset: 0"
    Bonjour,

    Sur une application de réservation de véhicules que je suis en train de développer, j'affiche une liste des réservations effectuées.

    Lorsque la liste est vide, une erreur s'affiche (undefined offset:0).

    J'ai bien trouvé ce sujet

    https://www.developpez.net/forums/d1...ed-offset-0-a/ qui répond en partie à mon problème, j'ai donc tenté de le résoudre avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      if(countResVl($db)>0)
                {
                echo afficheTableau($reservationsAdapt);}
     
            elseif(!isset($data[0])) {
                echo "Il n'y a aucune réservation à afficher <br>";}
    en me disant que s'il trouve des réservations il les affiche, s'il n'en trouve pas il affiche une phrase, mais pour le moment il continue de m'afficher une erreur.

    voici le bout de code où se situe l'erreur

    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
    // affichage sous forme de tableau HTML pour une meilleure lisibilité des données
    function afficheTableau($data){
        // Ouverture du tableau html et entete
        $html = '<table>';
        $html .= ' <thead><tr>';
     
        // Boucle sur les indices du premier tableau
        foreach ($data[0] as $key => $value){
            $html .= "<th>$key</th>";
        }
     
        // Fermeture entete html
        $html .= '</tr></thead>';
     
        // Ouverture du tbody
        $html .= '<tbody>';
     
        // boucle sur toutes le ligne du tableau
        foreach($data as $ligne){
            $html .= '<tr>';
            foreach($ligne as $celulle){
                $html .= "<td>$celulle</td>";
            }
            $html .= '</tr>';
        }
    ce serait au niveau du $data[0] mais je ne vois pas comment modifier mon code pour que ça prenne en compte lorsqu'il n'y a aucune réservation à afficher!

    Si quelqu'un a une idée, je suis preneuse ^^
    Merci

    Kacahuette

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

    1- empty() fonctionne aussi pour vérifier si un array est vide ou non :
    Les valeurs ci-dessous sont considérés comme étant vide :

    • "" (une chaîne vide)
    • 0 (0 en tant qu'entier)
    • 0.0 (0 en tant que nombre à virgule flottante)
    • "0" (0 en tant que chaîne de caractères)
    • NULL
    • FALSE
    • array() (un tableau vide)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if( !empty($data) )
    {
       ...
    2- Sinon, vérifie ce que contient $data :
    ça donne quoi ?

    3- Pour afficher les clés du tableau, au lieu de $data[0], on utilise array_keys().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach( array_keys($data) as $key )
    {
       ...

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 10
    Par défaut
    Alors,

    je n'ai pas bien compris où je devais mettre le !empty, du coup je l'ai testé à la place du countResVl, et du !isset ^^

    dans le 1er cas, il m'affiche ma phrase "il n'y a aucune réservation à afficher" comme si mon tableau était vide, que j'ai des réservations ou pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(!empty($data))
            {
                echo afficheTableau($reservationsAdapt);}
     
            elseif(!isset($data[0])) {
                echo "Il n'y a aucune réservation à afficher <br>";}
    dans le second cas, mes réservations s'affichent bien, mais lorsque je les supprime toutes, je retrouve mon erreur de undefined offset, ainsi qu'une erreur "invalid argument supplied for foreach()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(countResVl($db)>0)
            {
                echo afficheTableau($reservationsAdapt);}
     
            elseif(!empty($data)) {
                echo "Il n'y a aucune réservation à afficher <br>";}

    et le résultat du var_dump($data) : C:\wamp64\www\monsite\resa3\readResaVl.php:64:null

  4. #4
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 10
    Par défaut
    3- Pour afficher les clés du tableau, au lieu de $data[0], on utilise array_keys().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach( array_keys($data) as $key )
    {
       ...
    Je vais essayer en modifiant ça, merci ! =)

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 10
    Par défaut
    Alors, j'ai modifié le $data[0] en utilisant le array_keys($data), ça a eu 2 effets :

    -le 1er, ça m'a remplacé mes entêtes de colonne par des chiffres

    -le second, je n'ai plus de message d'erreur lorsque je n'ai aucune réservation à afficher (c'est toujours mieux que l'affichage des erreurs, mais j'aurai souhaité afficher mon propre message indiquant qu'il n'y avait aucune réservation à afficher). Mais je peux me contenter de ça pour cette partie ^^

    En revanche, pour le remplacement de mes entêtes de colonne par des chiffres, c'est ennuyeux, une idée de comment récupérer mes intitulés?

    Kacahuette

  6. #6
    Invité
    Invité(e)
    Par défaut
    1- Tu n'as pas répondu :
    Citation Envoyé par jreaux62 Voir le message
    ça donne quoi ?
    N.B. array_keys($data) va fonctionner correctement ou pas, selon comment est structuré $data.
    array_keys() retourne les clés numériques et littérales du tableau array.
    2- Pour afficher un message perso :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( ...)
    } else {
       // message perso
    }
    3- MONTRE ton code.

  7. #7
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 10
    Par défaut
    1/ Pour le rendu de var_dump($data), j'avais répondu à la fin de mon message de 11h21 ^^ ça me retourne null avec une autre erreur en prime

    Nom : null.png
Affichages : 1308
Taille : 9,7 Ko

    2/ Pour le if else, j'ai testé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(countResVl($db)>0)
                {
                 echo afficheTableau($reservationsAdapt);}
     
            else {
                echo "Il n'y a aucune réservation à afficher <br>";}
    qui ne me retourne rien, aucune erreur ni mon message perso


    et j'ai testé également ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(!empty($data))
                {
                 echo afficheTableau($reservationsAdapt);}
     
            else {
     
                echo "Il n'y a aucune réservation à afficher <br>";}
    qui me retourne mon message perso qu'il y ait des réservations ou non à afficher

    Nom : rienaafficher.png
Affichages : 1289
Taille : 1,6 Ko

    et quand je remplace mon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($data[0] as $key => $value)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     foreach (array_keys($data) as $key)
    j'ai mes entêtes de colonnes affichées partiellement et en format numérique si j'ai des réservations affichées, et aucun retour quand je n'ai aucune réservation à afficher.

    Nom : entetes numeriques.png
Affichages : 1295
Taille : 2,8 Ko

    alors que je devrai avoir ça

    Nom : entetee.png
Affichages : 1300
Taille : 1,9 Ko

    J'ai le sentiment de faire un mix de tout, mais pas dans le bon ordre

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kacahuette Voir le message
    J'ai le sentiment de faire un mix de tout, mais pas dans le bon ordre
    Je confirme.

    Et comme tu ne montres que des petits bouts de codes éparpillés, on ne peut pas te corriger...

  9. #9
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 10
    Par défaut
    Je veux bien montrer tout mon code, ce n'est pas un souci, je pensais que c'était plus simple pour vous de voir les parties qui posent problème.

    Voici le code d'affichage de mes données (page readResaVl) qui permet la consultation des réservations sous forme de tableau :

    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
    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
    <?php
    require_once ('fonctions.php');
    require_once ('sql.php');
     
    $readReservationsVl = readReservationsVl($db);
     
    $reservationsAdapt = tableauAdapte($readReservationsVl);
     
    if(isset($_POST['btnSupprimer']) && count($_POST['supprimer'])>=1){
     
        foreach ($_POST['supprimer'] as $value){
            deleteReservationVl($db,$value);
        }
        header('location:readResaVl.php');
    }
     
    ?>
     
    <!doctype html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <link type="text/css" rel="stylesheet" href="style.css">
        <title>Document</title>
    </head>
    <body>
     
    <?php require_once ("header.html")?>
     
     
        <h1>Liste de Réservation des véhicules</h1>
        <form action="readResaVl.php" method="POST">
     
            <?php
     
            //s'il y a des réservations à afficher, les afficher,sinon
            // echo il n'y a rien à afficher
     
           // var_dump(countResVl($db));
     
     
          if(countResVl($db)>0)
                {
                 echo afficheTableau($reservationsAdapt);}
     
            else {
                echo "Il n'y a aucune réservation à afficher <br>";}
     
     
     
     
            //TODO supp les résa passées
               // $idResVl=afficheTableau($reservationsAdapt['idResVl']);
                //echo $idResVl;
               // deletePastResaVl($db,$idResVl);
                deletePastResaVl($db);
     
            ;?>
        <br/>
            <a href="accueilUser.php" class="resa">Effectuer une réservation</a>
           <input type="submit" name="btnSupprimer" value="supprimer" class="supprimer">
        </form>
    <?php require_once ('footer.html') ?>
    </body>
    </html>
    Ma page fonctions

    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    <?php
    require_once('sql.php');
     
    // connexion à la base de données
    $db = new PDO('mysql:host=localhost;dbname=resa64;charset=utf8','root','');
     
    //
    function getParam($pramType){
     
        switch ($pramType){
            case 'statuts':
                return [
                    1 => 'A valider',
                    2 => 'Validé',
                    3 => 'Refusé'
                    ];
     
        }
     
    }
     
     
    //permettre la redirection vers accueilAdmin.php uniquement si le personnel fait partie de la liste des admins
     
    //comparaison du user authentifié via SSO avec les users déclarés comme étant des admins
    if(isset($_GET['accueilAdmin.php'])){
       if ($user == $admin1 || $user == $admin2 || $user == $admin3){
        header("location:accueilAdmin.php");
        }
    }
    else{
        header("location:accueilUser.php");
    }
     
    */
     
    // fonction permettant d'obtenir une liste déroulante (select)
    function selectOptions($values,$selected=null){
        $html = '';
        foreach($values as $key => $value){
            if($selected == $key){
                $html .= '<option value="'.$key.'" selected>'.$value.'</option>';
            }else{
                $html .= '<option value="'.$key.'">'.$value.'</option>';
            }
        }
        return $html;
    }
     
     
    //fonction permettant d'obtenir une liste déroulante de type numérique
    // (ici calendrier avec sélection du jour et de l'heure)
    function selectOptionsNumeric($debut,$fin,$selected=null){
        $values = [];
     
        if($debut <= $fin){
            for($i=$debut;$i<=$fin;$i++) {
                $values[$i]=$i;
            }
        }
     
        if($debut > $fin){
            for($i=$debut; $i>=$fin; $i--){
                $values[$i]=$i;
            }
        }
     
        return selectOptions($values,$selected);
    }
     
    $vehicules=readVehicules($db);
    $vehiculesOption=adaptVehiculesOption($vehicules);
     
    $utilisateurs=readUtilisateurs($db);
     
    $utilisateursOption=adaptUtilisateursOption($utilisateurs);
     
    $salles=readSalles($db);
    $sallesOption=adaptSallesOption($salles);
     
     
    //permet d'obtenir les données véhicules sous forme d'un tableau
    // qui contient l'ensemble des données du véhicule sur une même ligne
    function adaptVehiculesOption($vehicules){
        $tableau=[];
        foreach ($vehicules as $vehicule){
            $tableau[$vehicule['vlNumImmat']]=$vehicule['vlNumImmat'].' '.$vehicule['vlMarque'].' '.$vehicule['vlModele'].' '.$vehicule['vlCouleur'];
        }
        return $tableau;
    }
     
    //permet d'obtenir les données utilisateur sous forme d'un tableau
    // qui contient l'ensemble des données de l'utilisateur sur une même ligne
    function adaptUtilisateursOption($utilisateurs){
        $tableau=[];
        foreach ($utilisateurs as $utilisateur){
            $tableau[$utilisateur['utId']]=$utilisateur['utGrade'].' '.$utilisateur['utNom'].' '.$utilisateur['utPrenom'];
        }
        return $tableau;
    }
     
     
     
     
    //permet d'obtenir les données utilisateur sous forme d'un tableau
    // qui contient l'ensemble des données des salles sur une même ligne
    function adaptSallesOption($salles)
    {
        $tableau=[];
        foreach ($salles as $salle) {
            $tableau[$salle['salleNom']] = $salle['salleNom'];
        }
        return $tableau;
    }
     
     
    // affichage sous forme de tableau HTML pour une meilleure lisibilité des données
    function afficheTableau($data){
        // Ouverture du tableau html et entete
        $html = '<table>';
        $html .= ' <thead><tr>';
     
        // Boucle sur les indices du premier tableau
        foreach ($data[0] as $key => $value){
            $html .= "<th>$key</th>";
        }
     
        // Fermeture entete html
        $html .= '</tr></thead>';
     
        // Ouverture du tbody
        $html .= '<tbody>';
     
        // boucle sur toutes les lignes du tableau
        foreach($data as $ligne){
            $html .= '<tr>';
            foreach($ligne as $celulle){
                $html .= "<td>$celulle</td>";
            }
            $html .= '</tr>';
        }
     
        // Ferme le tbody et table
        $html .= '</tbody></table>';
     
        return $html;
    }
     
    //formatage de l'heure en heures/minutes sans les secondes
     
    function heureminute($heure) {
        // $heure de la forme hh:mm:ss
        // on enleve les secondes
        $arrayheure = explode(':',$heure);
        $newheure = $arrayheure[0].':'.$arrayheure[1];
        return $newheure; // de la forme hh:mm
    }
     
    //affiche une checkbox et un lien à la fin de chaque ligne du tableau, pour supprimer une ligne
    function tableauAdapte($reservations)
    {
     
        $tableauAdapte = [];
        foreach ($reservations as $reservation) {
     
            $idResa = $reservation['idResVl'];
            $statut = $reservation['statut'];
     
            $strSupprimer = "<input type='checkbox' name='supprimer[]' value='$idResa'>";
            $strStatut = "<input type='text' value='$statut' disabled='disabled'>";
     
     
            $tableauAdapte[] = [
                'idres' => $reservation['idResVl'],
                'immat' => $reservation['vlNumImmat'],
                'Modele' => $reservation['vlModele'],
                'couleur' => $reservation['vlCouleur'],
                'Utilisateur' => $reservation['utGrade'] . ' ' . $reservation['utNom'] . ' ' . $reservation['utPrenom'],
                'Date début' => $reservation['dateDebutResVl'],
                'Date Fin' => $reservation['dateFinResVl'],
                'supprimer' => $strSupprimer,
                'Statut' => $strStatut
            ];
     
        }
     
        return $tableauAdapte;
    }
     
     
    //if (isset($_POST['supprimer'])){
    //    foreach ($_POST['supprimer'] as $supp){
    //        deleteReservation($db, $supp);
    //    }
    //}
    //
    //$array = array_keys($_POST);
     
    //foreach ($array as $value)
    //{
    //    deleteReservationVl($db, $value);
    //}
     
     
     
    //affiche une checkbox et un lien à la fin de chaque ligne du tableau, pour supprimer une ligne
     
    function tableauAdapteSl($reservations)
            {
     
                $tableauAdapteSl = [];
                foreach($reservations as $reservation) {
     
                    $idResa = $reservation['idResSl'];
                    $statut = $reservation['statut'];
     
                    $strSupprimer = "<input type='checkbox' name='supprimer[]' value='$idResa'>";
                    $strStatut = "<input type='text' value='$statut' disabled='disabled'>";
     
                    $tableauAdapteSl[] = [
                'idres' => $idResa,
                'nom salle' => $reservation['nomResSal'],
                'Date début' => $reservation['dateDebutResSl'],
                'Date Fin' => $reservation['dateFinResSl'],
                'Utilisateur' => $reservation['utGrade'] . ' ' . $reservation['utNom'] . ' ' . $reservation['utPrenom'],
                'supprimer' => $strSupprimer,
                 'Statut' => $strStatut
            ];
     
        }
     
        return $tableauAdapteSl;
    }
     
     
    function tableauAdapteVlAdmin($reservations)
    {
     
        $tableauAdapte = [];
        foreach ($reservations as $reservation) {
     
            $idResa = $reservation['idResVl'];
     
     
     
            $selectOption = selectOptions(getParam('statuts'));
           // $strStatut = "<input type='text' value='***'>";
            $strValider = "<select name='validation' id='validation'>$selectOption</select>";
     
     
     
            $tableauAdapte[] = [
                'idres' => $reservation['idResVl'],
                'immat' => $reservation['vlNumImmat'],
                'Modele' => $reservation['vlModele'],
                'couleur' => $reservation['vlCouleur'],
                'Utilisateur' => $reservation['utGrade'] . ' ' . $reservation['utNom'] . ' ' . $reservation['utPrenom'],
                'Date début' => $reservation['dateDebutResVl'],
                'Date Fin' => $reservation['dateFinResVl'],
     
               // 'Statut' => $strStatut,
                'Validation' => $strValider
            ];
     
        }
     
        return $tableauAdapte;
    }
     
     
     
    function tableauAdapteSlAdmin($reservations)
    {
     
     
     
        $tableauAdapteSl = [];
        foreach($reservations as $reservation) {
     
            $idResa = $reservation['idResSl'];
     
     
     
            //$strStatut = "<input type='text' value='valeur test'>";
            $selectOption = selectOptions(getParam('statuts'));
            $strValider = "<select name='validation' id='validation'>$selectOption</select>";
     
            $tableauAdapteSl[] = [
                'idres' => $idResa,
                'nom salle' => $reservation['nomResSal'],
                'Date début' => $reservation['dateDebutResSl'],
                'Date Fin' => $reservation['dateFinResSl'],
                'Utilisateur' => $reservation['utGrade'] . ' ' . $reservation['utNom'] . ' ' . $reservation['utPrenom'],
     
               // 'Statut' => $strStatut,
                'Validation' => $strValider
            ];
     
        }
     
        return $tableauAdapteSl;
    }

    Et la page qui regroupe toutes mes requêtes SQL

    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    <?php
     
    require_once('fonctions.php');
     
     
    // connexion à la base de données
    $db = new PDO('mysql:host=localhost;dbname=resa64;charset=utf8','root','');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
     
     
    // permet d'afficher toutes les infos contenues dans la bdd dans la table véhicules
    function readVehicules($db){
        $sql='select * from vehicules';
        $return=$db->query($sql);
        return $return->fetchAll();
    }
     
     
     
    // permet d'afficher toutes les infos contenues dans la bdd dans la table utilisateurs
    function readUtilisateurs($db){
        $sql='select * from utilisateurs';
        $return=$db->query($sql);
        return $return->fetchAll();
    }
     
     
    // permet d'afficher toutes les infos contenues dans la bdd dans la table salles
    function readSalles($db){
        $sql='select * from salles';
        $return=$db->query($sql);
        return $return->fetchAll();
    }
     
     
    //ajout d'une ligne réservation de véhicule dans la BDD
    function createResVl($db, $dateDebutResVl, $heureDebutResVl, $dateFinResVl, $heureFinResVl, $motifResVl, $idUtResVl, $numImmatResVl, $statut){
     
        $sql = "INSERT INTO resavl (dateDebutResVl,heureDebutResVl,dateFinResVl,heureFinResVl,motifResVl,idUtResVl,numImmatResVl,statut) 
                VALUES('$dateDebutResVl','$heureDebutResVl','$dateFinResVl','$heureFinResVl','$motifResVl','$idUtResVl','$numImmatResVl','$statut')";
     
        $db->query($sql);
    }
     
    //lecture des réservations de véhicules en cours
    function readReservationsVl($db){
        $sql = "SELECT resaVl.idResVl, vehicules.vlNumImmat, vehicules.vlModele, vehicules.vlCouleur, utilisateurs.utGrade, utilisateurs.utNom,utilisateurs.utPrenom, resavl.dateDebutResVl,resavl.dateFinResVl,resavl.statut FROM resavl INNER JOIN vehicules ON resavl.numImmatResVl = vehicules.vlNumImmat INNER JOIN utilisateurs ON resavl.idUtResVl = utilisateurs.utId  ORDER BY resavl.dateDebutResVl";
        $resultats = $db->query($sql);
        return $resultats->fetchAll(PDO::FETCH_ASSOC);
    }
     
     
     
    //lecture d'une seule reservation avec l'ID
    function readReservationVl($db, $IdResVl){
        $sql = "SELECT * FROM resavl INNER JOIN vehicules ON resavl.numImmatResVl = vehicules.vlNumImmat INNER JOIN utilisateurs ON resavl.idUtResVl = utilisateurs.utId WHERE IdResVl=:idResVl";
        $req = $db->prepare($sql);
        $req->bindValue(':idResVl',$IdResVl,PDO::PARAM_INT);
        $req->execute();
        $values = $req->fetch(PDO::FETCH_ASSOC);
        return $values;
    }
     
    //ajout d'une ligne réservation de salle dans la BDD
    function createResSl($db, $dateDebutResSl, $heureDebutResSl, $dateFinResSl, $heureFinResSl, $motifResSl, $nomResSal, $idUtResSal, $statut){
     
        $sql = "INSERT INTO resasl (dateDebutResSl,heureDebutResSl,dateFinResSl,heureFinResSl,motifResSl,nomResSal,idUtResSal,statut) 
                VALUES('$dateDebutResSl','$heureDebutResSl','$dateFinResSl','$heureFinResSl','$motifResSl','$nomResSal','$idUtResSal','$statut')";
     
        $db->query($sql);
    }
     
    //lecture des réservations de salles en cours
    function readReservationsSl($db){
        $sql = "SELECT * FROM salles INNER JOIN resasl ON salles.salleNom = resasl.nomResSal INNER JOIN utilisateurs ON resasl.idUtResSal = utilisateurs.utId ORDER BY resasl.dateDebutResSl";
        $resultats = $db->query($sql);
        return $resultats->fetchAll(PDO::FETCH_ASSOC);
    }
     
    function deleteReservationVl($db,$idResVl){
        $sql = "DELETE FROM resavl WHERE idResVl = :idResVl";
        $req = $db->prepare($sql);
        $req->bindValue(':idResVl',$idResVl,PDO::PARAM_INT);
        $req->execute();
    }
     
    function deleteReservationSl($db,$idResSl){
        $sql = "DELETE FROM resaSl WHERE idResSl = :idResSl";
        $req = $db->prepare($sql);
        $req->bindValue(':idResSl',$idResSl,PDO::PARAM_INT);
        $req->execute();
    }
     
    function updateReservationVl($db, $dateDebutResVl, $heureDebutResVl, $dateFinResVl, $heureFinResVl, $motifResVl, $idUtResVl, $numImmatResVl, $statut, $idResVl){
     
        $sql = "UPDATE resavl SET       dateDebutResVl = :dateDebutResVl,
                                        heureDebutResVl = :heureDebutResVl,
                                        dateFinResVl = :dateFinResVl,
                                        heureFinResVl = :heureFinResVl,
                                        motifResVl = :motifResVl,
                                        idUtResVl = :idUtResVl,
                                        numImmatResVl = :numImmatResVl,
                                        statut = :statut
                WHERE idResVl = :idResVl
                                        ";
     
        $req = $db->prepare($sql);
        $req->bindValue(':dateDebutResVl',$dateDebutResVl,PDO::PARAM_STR);
        $req->bindValue(':heureDebutResVl',$heureDebutResVl,PDO::PARAM_STR);
        $req->bindValue(':dateFinResVl',$dateFinResVl,PDO::PARAM_STR);
        $req->bindValue(':heureFinResVl',$heureFinResVl,PDO::PARAM_STR);
        $req->bindValue(':motifResVl',$motifResVl,PDO::PARAM_STR);
        $req->bindValue(':idUtResVl',$idUtResVl,PDO::PARAM_INT);
        $req->bindValue(':numImmatResVl',$numImmatResVl,PDO::PARAM_STR);
        $req->bindValue(':statut',$statut,PDO::PARAM_STR);
        $req->bindValue(':idResVl',$idResVl,PDO::PARAM_INT);
     
        $req->execute();
    }
     
     
    function updateReservationVlBis($db, $dateDebutModif, $heureDebutResVl, $dateFinModif, $heureFinResVl, $lieuModif, $idUtModif, $idVehiculeModif, $statut, $idResVl)
    {
     
        $sql = "UPDATE resavl SET dateDebutModif = $dateDebutModif,
                                        heureDebutResVl = $heureDebutResVl,
                                        dateFinModif = $dateFinModif,
                                        heureFinResVl = $heureFinResVl,
                                        lieuModif = $lieuModif,
                                        idUtModif = $idUtModif,
                                        idVehiculeModif = $idVehiculeModif,
                                        statut = $statut
                WHERE idResVl = $idResVl
                                        ";
     
        $db->query($sql);
    }
     
     
     
    //supprime les réservations passées
     
    function deletePastResaVl($db){
        $sql = "DELETE FROM resaVl WHERE dateFinResVl <  Date_Add(Now(),interval -30 day)";
        $req = $db->prepare($sql);
        $req->execute();
    }
     
    function deletePastResaSl($db){
        $sql = "DELETE FROM resasl WHERE dateFinResSl < Date_Add(Now(),interval -30 day)";
        $req = $db->prepare($sql);
        $req->execute();
    }
     
    //compter le nombre de lignes dans resavl
     
    function countResVl($db){
        $sql = "SELECT COUNT(idResVl) FROM resavl";
        $resultats = $db->query($sql);
        return $resultats->fetchAll(PDO::FETCH_ASSOC);
     
    }
     
    //compter le nombre de lignes dans resasl
     
    function countResSl($db){
        $sql = "SELECT COUNT(idResSl) FROM resasl";
        $resultats = $db->query($sql);
        return $resultats->fetchAll(PDO::FETCH_ASSOC);
    }

    A l'heure actuelle, j'ai toujours deux erreurs lorsque je n'ai aucune réservation à afficher :

    Notice: Undefined offset: 0 in C:\wamp64\www\monsite\resa3\fonctions.php on line 138
    Warning: Invalid argument supplied for foreach() in C:\wamp64\www\monsite\resa3\fonctions.php on line 138

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

Discussions similaires

  1. erreur: "Notice: Undefined offset:"
    Par Sh1v3r dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 22h48
  2. erreur Undefined offset
    Par wbagg2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/12/2005, 14h16
  3. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    Réponses: 8
    Dernier message: 21/10/2005, 13h12
  4. Erreur de "Undefined offset"
    Par guy2004 dans le forum Langage
    Réponses: 8
    Dernier message: 16/10/2005, 12h48

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