Undefined array key

Eléphanteau du PHP | 18 Messages

21 oct. 2022, 10:12

Bonjour,

Surement la question à dû être traitée mais ne trouve pas la réponse

Je suis en train de passer de PHP 7.3 à 8

Et sous PHP 8, j’ai l’erreur

Code : Tout sélectionner

Warning: Undefined array key "controle"
la ligne est

Code : Tout sélectionner

$controle = stripslashes($_POST['controle']);
Bien sûr toutes les lignes de ce type émettent un Warning

Merci pour votre aide

Mammouth du PHP | 2703 Messages

21 oct. 2022, 13:09

ce n'est pas dû au passage à php 8 mais au fait que $_POST ne contient pas d'index controle, surement car la page n'est pas appelée en méthode post depuis un formulaire avec un champ controle. donc le warning devait déjà exister avant mais ne s'affichait pas.

Eléphanteau du PHP | 18 Messages

21 oct. 2022, 16:14

Bonjour Or 1

Merci pour votre réponse , cette page est en fonction (sousPHP 7.3) sur le site et suis en mode développement sur la config d’OVH et j’ai pas d’erreur.

dans cette page il y un formulaire et la gestion du formulaire

Code : Tout sélectionner

<form enctype="multipart/form-data" name="Form" action="" method="post" onsubmit="return validation(this)">
Question, que dois-je faire afin de ne plus avoir ces erreur je ne vois pas que faire.

Merci pour vos réponse

ynx
Mammouth du PHP | 586 Messages

21 oct. 2022, 17:08

Bonjour,

Le fait d'utiliser un élément de tableau qui n'existe pas déclenche une "Notice" avec PHP 7.3.
Avec PHP 8, ceci déclenche désormais un "Warning".

La rapport d'erreur (error_reporting) de ton serveur OVH doit être configuré pour afficher uniquement les "Fatal Error" et les "Warning", l'affichage des "Notice" doit être désactivé.

Dans tous les cas, utiliser un élément de tableau qui n'existe pas est une erreur (même si l'erreur n'est pas bloquante pour PHP).
Tu peux vérifier que l'élément existe avant de l'utiliser avec la fonction isset.

Eléphanteau du PHP | 18 Messages

22 oct. 2022, 17:40

Bonjour ynx,

Merci pour votre explication.

J’ai vérifié avec isset et lors du retour du formulaire pour cause d’erreur les champs étaient remplacés par un 1 !!.

Impossible de comprendre par contre cela marche parfaitement avec

Code : Tout sélectionner

$nom=(!empty($_POST["nom"])) ? $_POST["nom"] : Null;
j’ai un autre problème que je n’arrive pas résoudre toujours avec la même erreur

Code : Tout sélectionner

Warning: Undefined array key 2 Warning: Undefined array key 1
sur la ligne 335

Code : Tout sélectionner

334 $tab=explode("-",$date); 335 $date=array("$tab[2]","$tab[1]","$tab[0]"); 336 $date=implode("/",$date); 337 return $date;

Merci pour votre aide.

Mammouth du PHP | 1967 Messages

22 oct. 2022, 18:50

vérifie le format de date donnée, à mon avis tu lui donne un jj/mm/aaaa plutot qu'un aaaa-mm-jj
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 18 Messages

23 oct. 2022, 19:03

Bonjour Spols

Dans le mille!! merci
Je ne comprenais pas pourquoi il n'y avait pas d'erreur!
Car la fonction n'est appelé que si l'on fait une erreur de date.
Bref, j'ai contourné le problème comme ci-dessous:

Code : Tout sélectionner

function formatDate($date) { $date = str_replace("-","/", $date); $date = str_replace(":","/", $date); $tab=explode("/",$date); $date=array($tab[2],$tab[1],$tab[0]); //$date=array("$tab[2]","$tab[1]","$tab[0]"); $date=implode("/",$date); return $date; }
Et cela répond à tous les cas.

Je laisse ouvert le post sait t'on jamais.