Foros del Web » Programando para Internet » PHP »

Asesoramiento con problema para desarrollar estructura de arrays

Estas en el tema de Asesoramiento con problema para desarrollar estructura de arrays en el foro de PHP en Foros del Web. Buenas tardes comunidad! Lo que pretendo hacer es un sistema de seguimiento de los comentarios pendientes de lectura que tiene un vendedor.. A groso modo ...
  #1 (permalink)  
Antiguo 27/06/2012, 08:47
 
Fecha de Ingreso: junio-2012
Ubicación: sabadell
Mensajes: 46
Antigüedad: 11 años, 9 meses
Puntos: 6
Información Asesoramiento con problema para desarrollar estructura de arrays

Buenas tardes comunidad!

Lo que pretendo hacer es un sistema de seguimiento de los comentarios pendientes de lectura que tiene un vendedor..

A groso modo seria asi:
Un cliente, cuando compra un producto, tiene la opción de comentarlo o no..

En el caso de que lo comente, se genera un resultado en la BD, donde se almacenaría como pendiente de lectura..

El vendedor, a su vez, podría saber en todo momento los comentarios que van haciendo sus clientes acerca de sus productos.. (tienes 1, tienes 3, tienes 7..etc.. comentarios pendientes(tipo facebook))

Bien.. el problema lo encuentro a la hora de distribuir los datos, para la futura maquetación..

Código PHP:
// Despues de generar varias consultas a la Bd, obtendria y almacenaria los articulos que tienen comentarios pendientes de lectura dentro de

$articulos_con_comentarios_pendientes = array();

// Y en este otro array(multidimensional) almacenaria el id de los comentarios, y a su vez dentro de otro array, una serie de datos referentes

$comentarios_no_leidos = array();

La jugada quedaria asi:

(
Obtengo una serie de variables dinámicas para rellenar el array)

$articulos_con_comentarios_pendientes[] = array($articulo_id=>$comentario_id); // con un índice autonumérico

// En este caso genero un indice pasándole el id del comentario
$comentarios_no_leidos[$comentario_id] = array( 'usuario' => $quien_comenta,
                                                                 
'texto' => $texto,
                                         
'fecha' => $fecha,
                                         
'leido' => $leido,
                                         
'estado' => $estado); 
La idea es que a la hora de la maquetación, por ejemplo si le echamos algo de imaginación y un poquito del estilo de facebook, obtendriamos:

Una cajita de texto, que pondria..

articulo 22, comentarios 1,2,3,4
... siguiente cajita de texto ...
articulo 33, comentarios ,5,6,7,8
..etc..

Bueno, la idea es esa.

De primera mano había pensado en generar un sólo array, con esta estructura:

$array = array($articulo_id =>array($comentario_id=>array(
'dato1' => $dato1,
'dato2' => $dato2,
'dato3' => $dato3)));
Pero de esta manera repetía o no, el primer indice del array '$articulo_id', ya que al generar resultados desde la bd, me podía salir que un mismo articulo tenía varios comentarios.. total.. se me sobreescribía con los últimos datos(obvio!!)..

Resumiendo:
Me he echo la picha un lio entre tanto indice fijo y autoincrementable..

¿Alguna sugerencia o mejora?

Por cierto.. el array lo recorro así:

Código PHP:
// Cojo los articulos que tiene comentarios pendientes de lectura
foreach($articulos_con_comentarios_pendientes as $array
  {
    echo 
'--------------------------------------<br />';
    foreach(
$array as $comentario// obtengo el $comentario_id
     
{
      echo 
'Comentario: '.$comentario.'<br />';
     } 
   echo 
'--------------------------------------<br />';
  } 
  #2 (permalink)  
Antiguo 28/06/2012, 08:37
 
Fecha de Ingreso: junio-2012
Ubicación: sabadell
Mensajes: 46
Antigüedad: 11 años, 9 meses
Puntos: 6
Respuesta: Asesoramiento con problema para desarrollar estructura de arrays

Bueno.. como ya comenté era algo realmente tonto(problemas de ofuscación mental!!)

Planteamiento:
Tenemos articulos, tenemos comentarios de los articulos y estos a su vez varia información

Como pretendo usar como indice de array el 'comentario_id' (que es único en la bd y numérico), utilizaremos la siguiente estructura del array:

Código PHP:
Ver original
  1. $comentarios_no_leidos[$comentario_id ] = array(                                                                   'articulo_id' => $articulo_id,
  2. 'usuario' => $quien_comenta,
  3. 'texto' => $texto,
  4. 'fecha' => $fecha,
  5. 'leido' => $leido,
  6. 'estado' => $estado );

Y como alternativa a la opción anterior, no memorizaré los articulos en forma de índice dentro del array..

Código PHP:
Ver original
  1. $articulos_con_comentarios_pendientes[] = $articulo_id;

De esta manera y haciendo uso de este último array, podemos saber que artículos son los que contendrían información, y que a su vez, podríamos acceder o mejor dicho, seleccionar la información del array de los comentarios..

Por ejemplo, haciendo uso del bucle foreach:
Código PHP:
Ver original
  1. foreach($articulos_con_comentarios_pendientes as $articulo)
  2.  {  
  3.    echo '- Articulo: '.$articulo.' -<br />';
  4.    foreach($comentarios_no_leidos as $indice => $clave)
  5.     {
  6.       // Si el indice del articulo coincide con el valor del array, imprimo lo siguiente
  7.       if($articulo == $comentarios_no_leidos[$indice]['articulo_id'])
  8.        {
  9.      echo $comentarios_no_leidos[$indice]['articulo_id'].'<br />';
  10.          echo $comentarios_no_leidos[$indice]['usuario'].'<br />';
  11.          echo $comentarios_no_leidos[$indice]['texto'].'<br />';
  12.      echo '<br /><br /><br />';
  13.        }               
  14.     }
  15.   echo '----<br />';          
  16.  }
__________________
Ante una duda.. ha de mostrarse valor/esfuerzo..

Etiquetas: arrays
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:29.