8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

en fait, j'ai activé l'affichage des erreurs sur ma page PHP. Quand ma page est chargée, je reçois l'erreur suivante :

Notice: Undefined variable: lastname_1

En fait, comme vous vous en doutez très certainement, il s'agit d'une variable dynamique.

Voici mon code PHP :


  $name = "";

  if (isset($_POST[${'lastname_'.$i}]) && !empty($_POST[${'lastname_'.$i}]))
  {
    $name = $_POST[${'lastname_'.$i}];
  }


Voici mon code HTML :


<input type="text" placeholder="Nom *" name="lastname_<?= $i; ?>" value="<?= $name; ?>" required />


Savez-vous comment je peux faire pour ne plus recevoir cette erreur ?

Merci d'avance.

Bonne journée,
Thierry
Bonnjour à tous,

en fait, j'ai trouvé la solution. Il faut d'abord tester que la variable dynamique est bien définie avant de tester sa valeur.

Voici la solution :


  $name = "";

  if (isset(${'lastname_'.$i}))
  {
    $varLastname = ${'lastname_'.$i};

    if (isset($_POST[$varLastname]) && !empty($_POST[$varLastname]))
    {
      $name = $_POST[$varLastname];
    }
  }


Bonne journée,
Thierry
Salut,

Normalement, tu n'as pas besoin de isset && !empty. Empty teste déjà si la variable existe.
Sinon, si tu es en PHP 7, vois si l'opérateur ?? ne te serait pas utile.
Meilleure solution
Bonsoir Marvin Le Rouge,

merci pour vos conseils.

Je vais essayer et je vous tiens au courant.

Bonne soirée,
Thierry
Bonsoir Marvin Le Rouge,

j'ai changé mon code et, avec tes conseils, ça fonctionne à merveille.

Voici mon code après avoir suivi tes conseils :


  if (isset(${'lastname_'.$i}))
  {
    $name = $_POST[${'lastname_'.$i}] ?? "";
  }


Bonne soirée,
Thierry
Modifié par THIRT05 (29 Sep 2020 - 19:22)