PHP - Undefined offset: 2 PHP

   
Vista:

Undefined offset: 2 PHP

Publicado por master (1 intervención) el 14/12/2017 19:17:56
Saludos,

He estado liado intentando hacer un codigo, el cual me salta con el error que aparece en el titulo:
Undefined offset: 2

Este es el código que tengo. Se trata de recorrer una tabla de la BD

para comparar id que comparte con otra, y si lo hace, se muestran los datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$regalos= $bd->Buscar('regalo',[]);
  $i=0;
 
  foreach ($regalos as $regalito) {
     $canjear = $bd->Buscar('canjear', ['id_user' => $_SESSION['id_user']])[$i]['id_regalo'];
 
    if($canjear== $regalito['id_regalo']){
 
    ?>
     <div id="regalos">
        <div class="regalo">
            <h3 class="titulo"><?=$regalito['nombre']?></h3>
           <img src="imagenes/<?=$regalito['imagen']?>">
            <p class="descripcion"><?=$regalito['descripcion']?></p>
        </div>
    </div>
        <?php
        $i++;
    }
}

Me dice que el error esta en esta linea:

$canjear = $bd->Buscar('canjear', ['id_user' => $_SESSION['id_user']])[$i]['id_regalo'];

¿Alguien puede echarme una mano? Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox

Undefined offset: 2 PHP

Publicado por abzerox (129 intervenciones) el 15/12/2017 00:15:51
Hola, el problema es que estas intentando acceder a una posición del array que no esta definida, (en esta caso la posición 2), en tu lugar antes de acceder a la propiedad primero comprobaria que el método Buscar retorne alguna data:

1
2
3
4
5
6
7
8
9
....
$data = $bd->Buscar('canjear', ['id_user' => $_SESSION['id_user']]);
 
var_dump($data); // Esto es solo a modo de test para ver que esta devolviendo
 
if (count($data) > 0) {
  $canjear = $data[$i]['id_regalo'];
  // aquí el resto del código...
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar