PHP erreur: notice: Undefined index:
Je suis en train de travailler sur un panier en PHP et j'ai l'impression de recevoir ce message d'erreur "notice: Undefined index:" dans toutes sortes d'endroits. L'erreur fait référence à des bits de codage dans des endroits différents. Par exemple, j'ai un morceau de codage qui permet de calculer un prix du forfait avec les mois un utilisateur décide de s'abonner. J'ai les variables suivantes où les erreurs se réfère à:
$month = $_POST['month'];
$op = $_POST['op'];
L' $mois variable est le nombre des entrées de l'utilisateur dans un formulaire, et le $op variable est différente des paquets dont la valeur est stockée dans un vriable qu'un utilisateur sélectionne à partir de boutons radio sur la forme.
J'espère que c'est clair, d'une certaine façon.
Merci
EDIT: Désolé j'ai oublié de mentionner qu'ils ne disparaissent lorsque l'utilisateur soumet les données. Mais quand ils viennent en premier à la page, il affiche cette erreur. Comment je peux me débarrasser d'elle, donc elle ne fait pas l'afficher?
--
C'est le code:
<?php
$pack_1 = 3;
$pack_2 = 6;
$pack_3 = 9;
$pack_4 = 12;
$month = $_POST['month'];
$op = $_POST['op'];
$action = $_GET['action'];
if ( $op == "Adopter" ) {
$answer = $pack_1 * $month;
}
if ( $op == "Defender" ) {
$answer = $pack_2 * $month;
}
if ( $op == "Protector" ) {
$answer = $pack_3 * $month;
}
if ( $op == "Guardian" ) {
$answer = $pack_4 * $month;
}
switch($action) {
case "adds":
$_SESSION['cart'][$answer][$op];
break;
}
?>
EDIT: Désolé j'ai oublié de mentionner qu'ils ne disparaissent lorsque l'utilisateur soumet les données. Mais quand ils viennent en premier à la page, il affiche cette erreur. Comment je peux me débarrasser d'elle, donc elle ne fait pas l'afficher?
Vérifier si l'utilisateur est soumis?
Copie exacte d'environ un million de questions, en commençant par PHP Undefined Index
Double Possible de PHP: "notice: Undefined variable" et "notice: Undefined index"
OriginalL'auteur PHPNOOB | 2010-12-16
Vous devez vous connecter pour publier un commentaire.
Vous tentez d'accéder à indicies dans un tableau qui ne sont pas définies. Cela soulève un avis.
Le plus de chances que vous remarquez que maintenant parce que votre code a été déplacé vers un serveur php.ini a
error_reporting
définies de manière à inclureE_NOTICE
. Soit de les supprimer, avis par la mise en error_reporting àE_ALL & ~E_NOTICE
(non recommandé), ou vérifier que l'index avant de tenter d'y accéder:OriginalL'auteur meagar
Faites-vous du formulaire de processeur dans le même script, comme la forme? Si oui, c'est de tenter de la traiter avant de la poster valeurs sont définies (tout ce qui est en cours d'exécution).
Envelopper tout le code de traitement dans une condition qui vérifie si le formulaire a même été envoyé.
Exécution des Scripts de haut en bas lors de la programmation procédurale. Vous devez vous assurer que le programme ne sait d'ignorer la logique de traitement si le formulaire n'a pas été envoyé. De même, après le traitement, vous devez rediriger vers une page de succès avec quelque chose comme
Je ne voudrais pas prendre l'habitude de supressing des avis ou des erreurs.
S'il vous plaît ne le prenez pas mal si je suggère que si vous rencontrez ces problèmes et que vous essayez de construire un panier, que vous au lieu d'utiliser une mature solution e-commerce comme Magento ou OsCommerce. Un panier est une interface qui exige un degré élevé de sécurité et si vous avez du mal avec ce genre de POSTE, je peux vous garantir que vous serez heurte à des maux de tête plus tard. Il y a de nombreuses versions stables, certains aussi simple que simple objet de modèles, qui sont disponibles pour le téléchargement.
Malheureusement je ne peux pas utiliser toute l'étagère panier comme il fait partie d'un assignemnt où nous avons à construire un site web dynamique en php où les utilisateurs peuvent adopter des animaux, etc, de sorte à les programme à partir de zéro, et sa été rendue plus complexe par la façon dont l'enseignant veut que le tout fait,
Ah, oui, alors ce serait devoirs. C'est un peu capricieux mot autour de ces pièces lol. webforcecart.com
Découvrez comment ajouter et supprimer des éléments sont manipulés dans cette classe. Devriez vous diriger dans la bonne direction.
En raison de newbees malentendu:
$_POST
est toujours définie indépendamment de la sapi, ou si c'est un GET ou POST (TÊTE, METTRE, ..), sauf s'il est explicitement désactivé dansvariables_order
(PHP_INI_DIR depuis php 5.0.5, donc si désactive là, c'est probablement toujours désactivé pour le fichier). En résumant ce qui précède avec seulementisset($_POST['name_of_your_submit_input'])
est très bien.OriginalL'auteur DeaconDesperado
Évidemment, $_POST['mois'] n'est pas défini. Peut-être il y a une erreur dans votre formulaire HTML définition, ou peut-être quelque chose d'autre qui est à l'origine. Quelle que soit la cause, vous devriez toujours vérifier si une variable existe avant de l'utiliser, de sorte
$_POST['month']
a été mis ànull
. Lorsque vous avez vraiment dire demander si la clé du tableau, utiliserarray_key_exists
.Il est peu probable que tout
$_POST[]
var contient uneNULL
si elle provient d'multipart/form-data
. Que ne serait un problème si subfunctions injecter de l'état, via $_POST, qui devrait être plus worriesome puis la différenciation entre nul et vide.OriginalL'auteur Mchl
Ici, les gens sont à même de vous dire que c'est un manque de professionnalisme (et il l'est), mais dans votre cas, il vous suffit de l'ajouter après le début de votre demande:
Cela va désactiver E_NOTICE de reporting. E_NOTICES ne sont pas des erreurs, mais des avis, comme le nom le dit. Vous feriez mieux de vérifier ce genre de choses et la preuve que des variables non définies ne pas conduire à des erreurs. Mais le cas le plus courant, c'est qu'ils sont juste informel, et tout à fait normal pour le traitement de formulaire avec PHP.
Aussi, la prochaine fois que Google le message d'erreur première.
Probable. Un extrait de l'air, comme si le $_POST entrée de vars est juste localisée au début du script n'importe quoi. Le traitement peut être déclenchée par un autre
if
ou tout simplement boolean état d'un de ces variables. ... Nous ne serons jamais à savoir :}et il restera un des grands mystères de notre âge... qui ne cesse d'être publié à nouveau et encore et encore lol.
OriginalL'auteur mario
Ce sont juste php messages d'information,il semble php.ini configurations ne sont pas selon vtiger normes,
vous pouvez désactiver ce message par la mise en rapport d'erreur à E_ALL &~E_NOTICE dans php.ini
Par exemple
error_reporting(E_ALL&~E_NOTICE)
et puis redémarrer apache afin de refléter les changements.OriginalL'auteur mohammad
Essayez ceci:
OriginalL'auteur helderk
Je pense qu'il pourrait y avoir aucune forme d'éléments par nom de "mois" ou "op". Pouvez-vous vérifier si le code source HTML (de la page de résultats dans l'erreur lors de la soumission) a, en effet, des éléments html par lui au-dessus de noms de
OriginalL'auteur Chandu
undefined index signifie que le tableau n'est pas définie , faire un
var_dump($_POST);die();
avant la ligne qui génère l'erreur et de voir que vous essayez d'obtenir une clé du tableau qui n'existe pas.OriginalL'auteur Poelinca Dorin
cela signifie simplement que le tableau $_POST dans ce cas, n'est-ce pas un élément nommé ce n'est pas définie dans votre erreur. PHP émet un AVIS au lieu d'un AVERTISSEMENT d'ERREUR FATALE.
Vous pouvez vous connecter moins d'événements via l'édition de php.ini ou par vérifier d'abord si les éléments est en effet déjà initialisé en utilisant la fonction isset()
OriginalL'auteur digitalfoo
Assurer que vous avez utilisé method="post" dans le formulaire d'envoi des données d'.
OriginalL'auteur sanjay mundhra
OriginalL'auteur RandheerPratapSingh
J'ai fait de définir toutes les variables qui était la première chose que j'ai vérifié. Je sais qu'il n'est pas nécessaire en PHP, mais les vieilles habitudes ont la vie dure. Ensuite, j'ai sanatized l'info comme ceci:
bien sûr test_input est une autre fonction qui fait une garniture, strilashes, et htmlspecialchars. Je pense que l'entrée est assez bien aseptisé. Ne cherche pas à être impoli, il suffit de montrer ce que j'ai fait. Quand il est venu à l'email que j'ai également vérifié pour voir si c'était le bon format. Je pense que la vraie réponse est dans le fait que certaines variables sont locales et certains sont mondiaux. J'ai eu à travailler sans erreurs pour l'instant donc, pendant que je suis très occupé en ce moment je vais accepter de s'éteindre, les erreurs, comme ma réponse. Ne vous inquiétez pas, je vais le comprendre c'est juste pas d'une importance vitale dès maintenant!
OriginalL'auteur Douglas Michalek
apparemment, l'OBTENIR et/ou de la variable POST(s) ne(es) de ne pas exister. simplement tester si "isset". (pseudo-code):
OriginalL'auteur tony gil
Pour masquer toutes les erreurs, le code qui est:
OriginalL'auteur Pranav Kumar
Assurez-vous que les balises correctement fermé. Et la balise de fermeture ne sera pas inclure à l'intérieur d'une boucle. (si elle contient dans une structure en boucle).
Dans mon cas, le problème a été résolu par le remplacement de la balise form; <td> <form id="idsent" name="idsent" method="POST" action="<?php echo site_url('controller/view');?>" > <input type="hidden" value="<?php echo $tbln;?>" name="slctdtbl" /> <input type="radio" id="idradio" name="idradio" value="<?php echo $row['id']; ?>"> </td> <td><?=$row['id'];?></td> <td> <?=$row['adr'];?></td> <td> <?=$row['ownr'];?></td> <td> <?=$row['rmrk'];?></td> echo '</tr>'; } ?> </form> Comme cela; radio bouton </form> tag fermer après le bouclage du bloc.
Vous devez modifier votre réponse, et ajouter la mise en forme du code source. C'est illisible.
OriginalL'auteur Ajmal Tk