entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Errores "Undefined"

Hola. Sinceramente no sé qué estará ocurriendo ya que hasta hace poco funcionaba a la perfección. He hecho backup's y sigue igual.

Tengo un index.php el cual posee toda la info a mostrar al usuario y además un functions.php donde almaceno todas las variables y demás para que muestre tal información.
*

Y luego, les comento, como verán en el functions, poseo en una carpeta titulada shop cada archivo con las ID's a mostrar que le pertenece. Dudo que eso sea necesario ya que son .cfg con muchas ID's y sus respectivos precios en el siguiente formato

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @MikeNicholas,

ese error es PHP indicándote que estás queriendo acceder al índice de un vector inputTextLAVRPItemPrice que no existe.

Lo que tenés que hacer es verificar que la posición del vector exista antes de usarla, ya sea para una comparación o para leer su valor.

Por ejemplo en:

if( $_POST['inputTextLAVRPItemPrice'] <= $player['moneda'] )

deberías hacer algo como:

if( isset($_POST['inputTextLAVRPItemPrice']) && $_POST['inputTextLAVRPItemPrice'] <= $player['moneda'] )

es decir, validar primero que exista y luego usar el valor.

Este tipo de mensajes notice no son errores, sino cosas que están mal y que podrían causar un error semántico.

Seguramente actualizaste la versión de PHP o la configuración: antes no tenías puesto que muestre los notice y ahora así, por eso recién ahora descubrís el error.

Lo ideal es desarrollar con los notice habilidatados paar generar código de mejor calidad, y luego en producción tenerlos deshabilitados para que no alteren la aplicación en caso de que se haya escapdo alguno.

Saludos cordiales

0voto

MikeNicholas comentado

Hola. ¿Qué tal Leonardo?

Gracias por dejar tu respuesta, intenté colocando esa comparación que me enviaste, además tuve que colocarla en la parte de los errores
Es como si estuviera dándole un valor null cuando en realidad, como mostré en la última imagen de este tema principal tengo definidos los precios de cada item a comprar. A lo que voy es que, no es que los notice estén dándome advertencias y haciendo lo que dice el código, sino que directamente el código no cumple la función especificada. Ahora por lo menos no están saltándome esos errores como bien decías vos. Realmente no verifiqué eso de los notice pero estoy muy seguro de que estuvieron siempre habilitados por el hecho de que antes funcionaba a la perfección, acá hay un claro ejemplo:
Al igual que con la cantidad del precio (el costo) y el ID del respectivo item, ahora mismo no aparece nada, como dije anteriormente está "null", fijate que cuando me da el error de supuestamente no me alcanza porque no tengo suficientes monedas el valor de la moneda virtual no es ni siquiera cero.
En caso de que llegues a necesitarlo para verificar lo que hice, subí nuevamente el index a Google Drive con lo que modifiqué recientemente (agregué la comparación tanto para el item de vehículos como para el de la compra de vestimentas y además esa misma comparación adaptada al mensaje de error mostrado en la imagen más arriba):
el otro, es bastante raro ya que no toqué para nada esa parte del código. Insisto, gracias por tomarte el tiempo de analizar esta situación e intentar darme una mano, ojalá pueda encontrar una solución a este raro inconveniente que me surgió a último momento.

Saludos.

0voto

Leonardo-Tadei comentado

Hola @MikeNicholas,

lo que te está pasando, sobre todo si tuviste que poner el chequeo de si la variable está vacía en varios lugares, es que tu código asume que recibe ciertos valores que ya no está recibiendo.

Esto es por un cambio en la interfaz del usuario, y no en el código que procesa lo que el usuario envía (tal vez por esto creas que "no tocaste nada", ya que la modificación fue en otro archivo).

Tu código por ejemplo espera que

$_POST['inputTextLAVRPItemPrice']

tenga algún valor, pero: la pantalla que llama a este código, tiene realmente un INPUT de algún tipo llamado inputTextLAVRPItemPrice ???

Parece que no, porque ese valor viene vacío...

Podría estarse llamando diferente, podrías no estar respetando las mayúsculas y minúsculas en el nombre (en entornos GNU/Linux es muy importante) o podrías haber cambiado ese INPUT por un DIV y no estar enviando el valor al script que hace el proceso.

Una buena forma de averiguarlo es poner un:

var_dump($_POST, $_GET);
// die(); // descomentar para que se detenga acá

el principio del código que recibe la entrada del usuario: solo lo que veas ahí serán los valores asignados que podrás usar. Si algo que te hace falta ahí no está, es porque te estás olvidando de enviarlo desde la pantalla anterior.

Saludos cordiales

0voto

MikeNicholas comentado

Hola nuevamente @Leonardo-Tadei, gracias por pasar. Intenté y revisé nuevamente el código pero está todo igual y bien, no sé qué ocurre. Llevo días con este problema y aún no hallo solución alguna. Agradecería si alguien aporta algún comentario que pueda serme útil.

0voto

Leonardo-Tadei comentado

Mandanos la salida de

var_dump($_POST, $_GET);

puesto al principio del archivo que recibe los datos, así podemos ver qué pasa.

(es difícil proponer soluciones a problemas que no se pueden ver. A veces incluso para resolverlo hay que debbugear...)

0voto

MikeNicholas comentado

Perdón por la demora y nuevamente gracias por continuar intentándome ayudar en mi caso.
Logré resolverlo.

1voto

Leonardo-Tadei comentado

Se la salida completa del var_dump() es la que se ve en la imagen, entonces no te estás enviando los datos que luego querés usar.

Verificá que los input hayan quedado dentro del formulario que se envía, o en caso de que sea un JavaScript el que recopila los datos para enviar, verificá que se estén armando bien.

En resumen: los notice son porque usás valores que no existen. Tenés que revisar en la pantalla anterior por qué no se mandan.

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta