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 :

Notice: Undefined index: ,Warning: Invalid argument supplied for foreach() [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Notice: Undefined index: ,Warning: Invalid argument supplied for foreach()
    Bonjour, Aidez moi s'il vous plait,
    je suis débutant en PHP MVC, j'ai un code que je vais vous montrer mais qui m'affiche deux messages d'erreur :
    Notice: Undefined index: ,Warning: Invalid argument supplied for foreach()
    .

    Expliquez moi svp. merci :

    voici le code du fichier de la vue plat\index qui permet de selectionner un plat pour commander :Nom : Capture.JPG
Affichages : 685
Taille : 90,5 Ko

    un autre fichier du controleur pour recuperer ces information : Nom : Capture1.JPG
Affichages : 643
Taille : 48,0 Ko

    Et le message d'erreur que vois pas d'où il vient:.

    je vous remercie. :

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    J’ai pas le début d’une hypothèse de la raison pour laquelle tu t’es compliqué la vie à faire une capture d’écran de ton code, alors que le copier-coller aurait rendu les choses plus faciles pour tout le monde… Mais bref

    Il y a deux boucles foreach dans les codes que tu montres. Donne-nous les numéros de ligne des erreurs (et montre-nous à quelle ligne de code ça correspond), sans quoi on ne peut pas t’aider !

    Quelques indications toutefois : undefined index signifie que tu accèdes à un membre de tableau qui n’existe pas. Ça arrive par exemple avec $_POST quand un paramètre n’a pas été transmis. Utilise l’onglet réseau des outils F12 de ton navigateur pour vérifier que les données passent correctement dans tes requêtes POST.

    Et invalid argument supplied for foreach signifie que tu passes à foreach quelque chose qui est invalide d’une façon ou d’une autre : soit la variable n’existe pas (elle est indéfinie ou null), soit elle n’est pas itérable (en gros, ce n’est pas un tableau et tu t’es probablement trompé de variable).

    Si ces deux messages d’erreur indiquent la même ligne, je suppose qu’il s’agit du foreach sur $_POST['plats'], et donc que la donnée plats est absente du tableau $_POST pour une raison ou une autre.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour, et bienvenu sur DVP

    Comme précisé par Watilin,

    1/ le message d'erreur est incomplet : il manque le numéro de ligne (error.............. line xxx)

    2/ Les copies d'écran ne servent à rien (d'autant que les numéros de ligne ne sont pas indiqués !)
    -> tu peux copier-coller directement les codes DANS le contenu du message, en utilisant la pseudo-balise [CODE] (icône "#" du mini-menu)

    3/ Si c'est bien de $_POST['plats'] qu'il s'agit :
    on voit dans le formulaire que ce sont des checkbox.

    Or, seules les checkbox cochées sont renvoyées par $_POST.
    Si aucune n'est cochée, $_POST['plats'] n'existe pas.
    Il faut donc d'abord vérifier qu'il existe avant de le traiter.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( !empty($_POST['plats']) ) // au moins 1 case est cochée
    {
       ...
    }

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Je suis désolé pour mes captures, et merci à tout le monde qui a essayé de m'aider; j'ai toujours pas trouvé de solution :

    voici le code de la page qui s'appelle plats/index :

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <style type="text/css">
    <!--
    .style1 {font-size: medium}
    -->
    </style>
        <div class="container">
      <div class="row">
        <form method="POST" action="<?= url('commande/index') ?>">
          <?php foreach ($plats as $plat) { ?>
          <div class="col s12 m4">
            <div class="card">
      <div class="card-image">
                                <img src="webroot/img/Restaurant/<?= $plat->getIdP() ?>.jpg">
                                <span class="card-title"><?= $plat->getNomP() ?></span>
                            </div>
                            <div class="card-content">
                          <p><?= $plat->getDescriptionP() ?></p>
                                <a href="#" disabled="disabled" class="decrement btn-floating waves-effect waves-light red left"><i class="material-icons">remove</i></a>
                          <a href="#" class="increment btn-floating waves-effect waves-light green right"><i class="material-icons">add</i></a>
                            <p class="grey-text center-align">Quantité:<strong>1</strong></p>
                          </div>
                            <div class="card-action">
                                <input type="checkbox" id="<?= 'plat' . $plat->getIdP() ?>" name="plats[]" value="<?= $plat->getIdP() ?>">
                                <label for="<?= 'plat' . $plat->getIdP() ?>">Commander</label>
                                <input type="hidden" name="amount[]" value="0">
              </div>
                        </div>
                    </div>
                <?php } ?>
          <div class="col s12">
            <div class="fixed-action-btn">
              <button type="submit" class="btn btn-large btn-block green waves-effect"><span class="style1">Commander</span></button>
            </div>
                    </div>
                </form>
            </div>
        </div>
        <script type="text/javascript">
            var addBtns = document.querySelectorAll('a.increment'),
                remBtns = document.querySelectorAll('a.decrement'),
                inputs  = document.querySelectorAll('input[type="checkbox"]')
     
            inputs.forEach(function (input) {
                input.addEventListener('change', function () {
                    if (this.checked) {
                        this.parentElement.querySelector('input[name="amount[]"]').value = parseInt(this.parentElement.previousElementSibling.querySelector('p strong').innerText)
                    } else {
                        this.parentElement.querySelector('input[name="amount[]"]').value = 0
                    }
                })
            })
     
            addBtns.forEach(function (btn) {
                btn.addEventListener('click', function (e) {
                    e.preventDefault()
                    var text  = this.parentElement.querySelector('p strong'),
                        input = this.parentElement.nextElementSibling.querySelector('input[name="amount[]"]'),
                        btn   = this.parentElement.querySelector('a.decrement')
     
                    if (input.value >= 1) {
                        btn.removeAttribute('disabled')
                    }
     
                    input.value = parseInt(input.value) + 1
                    text.innerText = input.value
                })
            })
     
            remBtns.forEach(function (btn) {
                btn.addEventListener('click', function (e) {
                    e.preventDefault()
                    var text  = this.parentElement.querySelector('p strong'),
                        input = this.parentElement.nextElementSibling.querySelector('input[name="amount[]"]')
     
                    if (input.value >= 2) {
                        input.value = parseInt(input.value) - 1
                        text.innerText = input.value
                    }
     
                    if (input.value <= 1) {
                        this.setAttribute('disabled', 'disabled')
                    }
                })
            })
        </script>

    La page qui traite le code ci-dessus s'appelle "commandeControlleur" dont voici son code :

    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
     
    <?php
     
    	require_once ROOT . DS . 'app' . DS . 'Controller' . DS . 'Controller.php';
    	require_once ROOT . DS . 'app' . DS . 'Model' . DS . 'RestaurantDAO.php';
    	require_once ROOT . DS . 'app' . DS . 'Model' . DS . 'PlatDAO.php';
     
     
     
        class CommandeController extends Controller
        {
     
            public function index()
            {
     
                //if(isset($_POST['plats'])) {
                debug($_POST);
     
                $platDAO = new PlatDAO();
     
                $plats = array();
     
               // if (!empty($_POST['plats'])) // au moins 1 case est cochée
                {
                    foreach ($_POST['plats'] as $k => $idP) {
                        $plat = $platDAO->getByIdP($idP);
                        $plat->amount = $_POST['amount'][$k];
                        $plats[] = $plat;
     
     
                        //envoyer les valeurs a la vue
                        $this->set(array("plats" => $plats));
                    };
     
     
                }
            }
        }

    et l'erreur se trouve à la ligne 24 de la page "commandeControlleur"
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($_POST['plats'] as $k => $idP) {

    je vois bien quand même qu'il y a des valeurs transférées en utilisant le
    Je vous remercie si vous pouvez m'aider et m'expliquer un peu !

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Peux-tu nous donner l'erreur exacte et le contenu de $_POST ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    oft j'ai une page de sélection d'un plat, la sélection se fait par des boutons d'addition où l'utilisateur choisit un plat et l'ajoute dans la commande: l'erreur exact est celle là :Nom : Capture.JPG
Affichages : 585
Taille : 59,5 Ko

    j'ai envie de voir apparaître ces valeur en haut dans un tableaux de cette forme :Nom : Capture.JPG
Affichages : 549
Taille : 21,1 Ko

    je suis sensé de récupérer les valeurs du tableau plats[] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" id="<?= 'plat' . $plat->getIdP() ?>" name="plats[]" value="<?= $plat->getIdP() ?>">
    avec le foreach de la ligne 25 du controleur

  7. #7
    Invité
    Invité(e)
    Par défaut
    1/ Tu lis les réponses qu'on te donnes, ou pas ?
    Il me semble avoir donné l'explication...

    2/ il n'y a pas de "plats" dans le $_post que tu montres.
    As-tu essayé en cochant une case ?

    N.B. pour afficher le contenu :

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci jreaux62, et les autres,

    l'erreur est corrigée avec le mais j'ai tjrs du mal à mettre le récapitulatif dans la table qui a comme titres (plats, quantites, ...)
    voici comment j'avais procédé :
    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
    <table>
            <thead>
              <tr>
     
     
                  <th data-field="id">Plats</th>
                  <th data-field="name">Quantité </th>
                  <th data-field="price">Prix</th>
                <th data-field="price">Total</th>
              </tr>
            </thead>
     
     
              <tbody>
              <?php
              var_dump($_POST);
              if (isset($_POST['plats'])){
     
                  foreach ($plats as $plat) { ?>
                    <tr>
                      <td><?= $plat->getIdP() ?></td>
                      <td><?= $plat->amount ?></td>
                      <td><?= $plat->getPrixCli() ?></td>
                      <td>valeur</td>
              <?php } } ?>
              </tr>
            </tbody>
        </table>
    pas d'erreur mais rien ne s'affiche dans le tableau. pourtant les valeur sont bien récupérées (
    array (size=1)
    'amount' =>
    array (size=3)
    0 => string '1' (length=1)
    1 => string '5' (length=1)
    2 => string '3' (length=1)

  9. #9
    Invité
    Invité(e)
    Par défaut
    Le seul champ récupéré semble être 'amount' .
    Pas 'plats'.


    On peut voir le code généré du formulaire ? (sans PHP) -> "Ctrl"+"U"

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    voici le code généré du formulaire :

    Code html : 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
    <div class="container">
        <div class="row">
            <form method="POST" action="/EasyFood3/?commande/indexValider">
    	<table>
            <thead>
              <tr>
     
     
                  <th data-field="id">Plats</th>
                  <th data-field="name">Quantité </th>
                  <th data-field="price">Prix</th>
                <th data-field="price">Total</th>
              </tr>
            </thead>
     
     
              <tbody>
              <pre class='xdebug-var-dump' dir='ltr'>
    <b>array</b> <i>(size=1)</i>
      'amount' <font color='#888a85'>=&gt;</font> 
        <b>array</b> <i>(size=3)</i>
          0 <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'6'</font> <i>(length=1)</i>
          1 <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'7'</font> <i>(length=1)</i>
          2 <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'5'</font> <i>(length=1)</i>
    </pre>          </tr>
            </tbody>
        </table>
     
         <a class="waves-effect waves-light btn-large">Valider la commande</a>
     
    </form>
    </div>
    </div>

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

    rien ne te choque dans le code que tu montres ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    sii tout se passe bien mais y a rien dans le tableau ! si tu peux m'expliquer

  13. #13
    Invité
    Invité(e)
    Par défaut
    Je t'ai demandé le code HTML généré du formulaire.

    Tu me montres celui des résultats...

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Ah, désolé Mr jreaux62 j'ai mal compris...

    Code html : 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
     
    // <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
     
        <title>  </title>
     
        <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
        <link type="text/css" rel="stylesheet" href="webroot/css/materialize.min.css"  media="screen,projection"/>
        <link type="text/css" rel="stylesheet" href="webroot/css/style.css"  media="screen,projection"/>
    </head>
    <body>
    <div class="container">
        <div class="row">
            <div class="col s12">
                <nav class="menu">
                    <div class="nav-wrapper green">
                        <a href="//" class="brand-logo"></a>
                        <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
                        <ul class="right hide-on-med-and-down">
                            <li><a href="/racineSite/?ville"><i class="fa fa-building-o  fa-2x" aria-hidden="true"></i>Villes</a></li>
                            <li><a href="/racineSite/?plat"><i class="fa fa-cutlery fa-2x" aria-hidden="true"></i>Plats</a></li>
                            <li><a href="/racineSite/?restaurant"><i class="fa fa-home fa-2x" aria-hidden="true"></i> Restaurants</a></li>
                            <li><a href="#"><i class="fa fa-diamond fa-2x" aria-hidden="true"></i>Spécialités</a></li>
                                                        <li><a href="/racineSite/?utilisateur/sign"><i class="fa fa-user fa-2x"></i> Connexion</a></li>
                                                </ul>
                        <ul class="side-nav" id="mobile-demo">
                            <li><a href="/racineSite/?ville"><i class="fa fa-building-o  fa-2x" aria-hidden="true"></i> Villes</a></li>
                            <li><a href="/racineSite/?plat"><i class="fa fa-cutlery fa-2x" aria-hidden="true"></i> Plats</a></li>
                            <li><a href="/racineSite/?restaurant"><i class="fa fa-home fa-2x" aria-hidden="true"></i> Restaurants</a></li>
                            <li><a href="#"><i class="fa fa-diamond fa-2x" aria-hidden="true"></i> Spécialités</a></li>
                        </ul>
                    </div>
                </nav>
            </div>
        </div>
        <div class="row">
            <div class="col s12">
                <nav>
                    <div class="nav-wrapper white">
                        <form method="POST" action="/racineSite/?plat/search">
                            <div class="input-field">
                                <input type="search" name="query" id="search"  required>
                                <label for="search" class=""><i class="material-icons black-text">search</i></label>
                                <i class="material-icons">close</i>
                            </div>
                        </form>
                    </div>
                </nav>
            </div>
        </div>
    </div>
     
    <style type="text/css">
    <!--
    .style1 {font-size: medium}
    -->
    </style>
        <div class="container">
      <div class="row">
        <form method="POST" action="/racineSite/?commande/index">
                <div class="col s12 m4">
            <div class="card">
      <div class="card-image">
                                <img src="webroot/img/Restaurant/1.jpg">
                                <span class="card-title">Pizza Margarita</span>
                            </div>
                            <div class="card-content">
                          <p>Tomate, mozzarella, jambon</p>
                                <a href="#" disabled="disabled" class="decrement btn-floating waves-effect waves-light red left"><i class="material-icons">remove</i></a>
                          <a href="#" class="increment btn-floating waves-effect waves-light green right"><i class="material-icons">add</i></a>
                            <p class="grey-text center-align">Quantité:<strong>1</strong></p>
                          </div>
                            <div class="card-action">
                                <input type="checkbox" id="plat1" name="plats[]" value="1">
                                <label for="plat1">Commander</label>
                                <input type="hidden" name="amount[]" value="0">
              </div>
                        </div>
                    </div>
                      <div class="col s12 m4">
            <div class="card">
      <div class="card-image">
                                <img src="webroot/img/Restaurant/2.jpg">
                                <span class="card-title">Sandwich Basque</span>
                            </div>
                            <div class="card-content">
                          <p>Brebis, beurre, jambon de Bayonne, tomates</p>
                                <a href="#" disabled="disabled" class="decrement btn-floating waves-effect waves-light red left"><i class="material-icons">remove</i></a>
                          <a href="#" class="increment btn-floating waves-effect waves-light green right"><i class="material-icons">add</i></a>
                            <p class="grey-text center-align">Quantité:<strong>1</strong></p>
                          </div>
                            <div class="card-action">
                                <input type="checkbox" id="plat2" name="plats[]" value="2">
                                <label for="plat2">Commander</label>
                                <input type="hidden" name="amount[]" value="0">
              </div>
                        </div>
                    </div>
                      <div class="col s12 m4">
            <div class="card">
      <div class="card-image">
                                <img src="webroot/img/Restaurant/3.jpg">
                                <span class="card-title">Le Kebab</span>
                            </div>
                            <div class="card-content">
                          <p>Kebab fait maison</p>
                                <a href="#" disabled="disabled" class="decrement btn-floating waves-effect waves-light red left"><i class="material-icons">remove</i></a>
                          <a href="#" class="increment btn-floating waves-effect waves-light green right"><i class="material-icons">add</i></a>
                            <p class="grey-text center-align">Quantité:<strong>1</strong></p>
                          </div>
                            <div class="card-action">
                                <input type="checkbox" id="plat3" name="plats[]" value="3">
                                <label for="plat3">Commander</label>
                                <input type="hidden" name="amount[]" value="0">
              </div>
                        </div>
                    </div>
                      <div class="col s12">
            <div class="fixed-action-btn">
              <button type="submit" class="btn btn-large btn-block green waves-effect"><span class="style1">Commander</span></button>
            </div>
                    </div>
                </form>
            </div>
        </div>
        <script type="text/javascript">
            var addBtns = document.querySelectorAll('a.increment'),
                remBtns = document.querySelectorAll('a.decrement'),
                inputs  = document.querySelectorAll('input[type="checkbox"]')
        
            inputs.forEach(function (input) {
                input.addEventListener('change', function () {
                    if (this.checked) {
                        this.parentElement.querySelector('input[name="amount[]"]').value = parseInt(this.parentElement.previousElementSibling.querySelector('p strong').innerText)
                    } else {
                        this.parentElement.querySelector('input[name="amount[]"]').value = 0
                    }
                })
            })
        
            addBtns.forEach(function (btn) {
                btn.addEventListener('click', function (e) {
                    e.preventDefault()
                    var text  = this.parentElement.querySelector('p strong'),
                        input = this.parentElement.nextElementSibling.querySelector('input[name="amount[]"]'),
                        btn   = this.parentElement.querySelector('a.decrement')
        
                    if (input.value >= 1) {
                        btn.removeAttribute('disabled')
                    }
        
                    input.value = parseInt(input.value) + 1
                    text.innerText = input.value
                })
            })
        
            remBtns.forEach(function (btn) {
                btn.addEventListener('click', function (e) {
                    e.preventDefault()
                    var text  = this.parentElement.querySelector('p strong'),
                        input = this.parentElement.nextElementSibling.querySelector('input[name="amount[]"]')
        
                    if (input.value >= 2) {
                        input.value = parseInt(input.value) - 1
                        text.innerText = input.value
                    }
        
                    if (input.value <= 1) {
                        this.setAttribute('disabled', 'disabled')
                    }
                })
            })
        </script>
     
    <div class="container">
        <div class="row">
            <div class="col s12">
                <footer class="page-footer green">
                    <div class="container">
                        <div class="row">
                            <div class="col l6 s12">
                                <h5 class="white-text">Footer Content</h5>
                                <p class="grey-text text-lighten-4">You can use rows and columns here to organize your footer content.</p>
                            </div>
                            <div class="col l4 offset-l2 s12">
                                <h5 class="white-text">Links</h5>
                                <ul>
                                    <li><a class="grey-text text-lighten-3" href="#!">Link 1</a></li>
                                    <li><a class="grey-text text-lighten-3" href="#!">Link 2</a></li>
                                    <li><a class="grey-text text-lighten-3" href="#!">Link 3</a></li>
                                    <li><a class="grey-text text-lighten-3" href="#!">Link 4</a></li>
                                </ul>
                            </div>
                        </div>
                    </div>
                    <div class="footer-copyright">
                        <div class="container">
     
                            <a class="grey-text text-lighten-4 right" href="#!"></a>
                        </div>
                    </div>
                </footer>
            </div>
        </div>
    </div>
     
    <script type="text/javascript" src="webroot/js/jquery.min.js"></script>
    <script type="text/javascript" src="webroot/js/materialize.min.js"></script>
    <script src="https://use.fontawesome.com/39b2beeb5f.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('.carousel.carousel-slider').carousel({full_width: true});
            $(".button-collapse").sideNav();
            $('select').material_select();
            $('.modal-trigger').leanModal();
     
                });
    </script>
    </body>
    </html>

  15. #15
    Invité
    Invité(e)
    Par défaut
    OK. Testé.

    Si tu veux pouvoir récupérer les infos, il faut COCHER LES CASES "commander" (checkbox) !


    En COCHANT des cases "commander", var_dump($_POST); donnera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    array (size=2)
      'plats' => 
        array (size=2)
          0 => string '1' (length=1)
          1 => string '3' (length=1)
      'amount' => 
        array (size=3)
          0 => string '8' (length=1)
          1 => string '3' (length=1)
          2 => string '1' (length=1)

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Mille merci M.jreaux62 !

    si tu as des tutos PHP MVC, php json, bien expliqués pour un débutant tu m'aurais aidé.

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

Discussions similaires

  1. PROBLEEM Warning: Invalid argument supplied for foreach()
    Par kapitcho dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/06/2012, 00h20
  2. Warning: Invalid argument supplied for foreach() in
    Par Jinkas dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/09/2011, 18h24
  3. [MySQL] Problème de Foreach : Warning: Invalid argument supplied for foreach()
    Par bidoo1234 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 06/05/2010, 17h56
  4. Warning: Invalid argument supplied for foreach()
    Par billyrose dans le forum Langage
    Réponses: 1
    Dernier message: 27/02/2009, 15h36
  5. Réponses: 11
    Dernier message: 19/05/2006, 11h41

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