Foros del Web » Programando para Internet » PHP »

Listas anidadas

Estas en el tema de Listas anidadas en el foro de PHP en Foros del Web. Buenos días, tengo un script 'prefabricado' que me lista alfabéticamente todos los clientes que tengo. Ahora quiero unir a eso los servicios que le damos ...
  #1 (permalink)  
Antiguo 04/01/2011, 03:51
Avatar de Atorort  
Fecha de Ingreso: abril-2010
Ubicación: Valencia
Mensajes: 127
Antigüedad: 14 años
Puntos: 0
Listas anidadas

Buenos días, tengo un script 'prefabricado' que me lista alfabéticamente todos los clientes que tengo. Ahora quiero unir a eso los servicios que le damos a cada cliente.

Es decir, que quede algo como:

Cliente 1
Servicio 1
Servicio 2
Cliente 2
Servicio 1
Servicio 3

Trabajo con una BDD mysql, en una tabla tengo los clientes (ID, Nombre) y en otra tabla tengo los Servicios (ID, ID_cliente, Descripcion)

¿Alguien tiene alguna idea?

El código del script:

Código PHP:
Ver original
  1. <h1>Clientes Grupo MCG</h1>
  2. <div style="padding-right: 15px; padding-left: 15px; padding-bottom: 15px; padding-top: 15px; background-color: #f0eeeb; text-align: justify">
  3.     <p><strong>MCG</strong> conforma el Grupo de mayor implantación en la Comunidad Valenciana en materia de gestión tributaria y de recaudación, prestando sus servicios en las siguientes Entidades y Organismos.</p>
  4.     <div align="center" style="background-color:#FFFFFF;">
  5.  
  6.     <?php  
  7.         $abecedario=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");  
  8.         foreach($abecedario AS $letra)
  9.             {  
  10.                 echo '<a href="#'.$letra. '">'.$letra. '</a>&nbsp;&nbsp;&nbsp;';  
  11.             }  
  12.  
  13.     ?>
  14.     </div>
  15. </div>
  16.  
  17. <?php
  18.     // Variables de presentación en la ventana:
  19.     $num_columnas = 2;
  20.     $ancho_tabla = 860;
  21.     $ancho_columna = $ancho_tabla / $num_columnas;
  22.     $alineado_celdas = 'left';
  23.  
  24.     // Conexión con la Base de Datos:
  25.     $db =& JFactory::getDBO();
  26.  
  27.     // Mostramos capa de Servicios de Habilitas en columna izquierda:
  28.     $query_clientes = "SELECT nombre FROM #__listado_clientes ORDER BY      nombre;";
  29.  
  30.     $db->setQuery($query_clientes);
  31.     $row_clientes = $db->loadAssocList();
  32.     $num_clientes=count($row_clientes);
  33.  
  34.     echo '<table width="' . $ancho_tabla .'" border="0" align="center" cellspacing="10" cellpadding="0" bgcolor="#FFFFFF">';
  35.  
  36.     $contador=1;
  37.     $letra_actual = "";
  38.  
  39.     FOR ($i = 0; $i < $num_clientes; $i++)
  40.       {
  41.  
  42.         IF ($letra_actual == "")
  43.            {
  44.              $letra_actual = substr($row_clientes[0]['nombre'], 0, 1);
  45.              echo '<tr><td colspan="2" height="5px"><img src="images/spacer.gif" height="1px"></td></tr>';
  46.              echo '<tr valign="center" align="left" colspan="' . $num_columnas . '"><td valign="center">';
  47.              echo '<a id="'. $letra_actual .'" name="'. $letra_actual .'"/></a>';
  48.              echo '<i><font size="5" face="Constantia,serif" color="#9ca520">' . $letra_actual. '</span></i>';
  49.              echo '</td></tr>';
  50.              echo '<tr height="1px"><td colspan="2" height="1px" bgcolor="#d6d89b"><img src="images/spacer.gif" height="1px"></td></tr>';
  51.            }
  52.         if (substr($row_clientes[$i]['nombre'], 0, 1) > $letra_actual)
  53.            {
  54.              $letra_actual = substr($row_clientes[$i]['nombre'], 0, 1);
  55.              echo '<tr><td colspan="2" height="5"><img src="images/spacer.gif" height="1"></td></tr>';
  56.              echo '<tr valign="center" align="left" colspan="' . $num_columnas . '"><td valign="center">';
  57.              echo '<a id="'. $letra_actual .'" name="'. $letra_actual .'"/></a>';
  58.              echo '<i><font size="5" face="Constantia,serif" color="#9ca520">' . $letra_actual. '</span></i>';
  59.              echo '</td></tr>';
  60.              echo '<tr height="1px"><td colspan="2" height="1px" bgcolor="#d6d89b"><img src="images/spacer.gif" height="1px"></td></tr>';
  61.            }
  62.  
  63.         if ($contador % $num_columnas == 1)
  64.           {
  65.              echo "<tr><td><li>" . $row_clientes[$i]['nombre'] . "</li></td>";
  66.           }
  67.         else if ($contador % $num_columnas == $num_columnas - 1)
  68.           {
  69.              echo "<td><li>" . $row_clientes[$i]['nombre'] . "</li></td></tr>";
  70.           }
  71.         else
  72.           {
  73.              echo "<td><li>" . $row_clientes[$i]['nombre'] . "</li></td>";
  74.           }
  75.  
  76.         $contador++;
  77.       }
  78.  
  79.     echo "</tr></table>";
  80. ?>
__________________
Adrian Tornero Ortiz
Técnico Superior en Desarrollo de Aplicaciones Informáticas
https://www.linkedin.com/in/adriantornero
  #2 (permalink)  
Antiguo 04/01/2011, 04:38
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Listas anidadas

Como tienes, campos comunes en las dos tablas, en tu caso el id del cliente, puedes hacer una consulta multiple utilizando join.

Quedaria algo asi:

$query_clientes = "SELECT clientes.nombre, servicios.Descripcion FROM #__listado_clientes clientes join nombredelatablaservicios servicios on clientes.id = servicios.id_cliente ORDER BY clientes.nombre;";
__________________
Institutosfp.com
  #3 (permalink)  
Antiguo 04/01/2011, 05:56
Avatar de Atorort  
Fecha de Ingreso: abril-2010
Ubicación: Valencia
Mensajes: 127
Antigüedad: 14 años
Puntos: 0
Respuesta: Listas anidadas

sip, pero luego como lo listo?

PD: estoy muy verde en php, lo siento!
__________________
Adrian Tornero Ortiz
Técnico Superior en Desarrollo de Aplicaciones Informáticas
https://www.linkedin.com/in/adriantornero
  #4 (permalink)  
Antiguo 04/01/2011, 06:17
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Listas anidadas

Código PHP:
<?php

$num_resultados
mysql_num_rows($query_clientes)


for (
$i 0$i $num_resultados$i++)

{

$datos=mysql_fetch_array($query_clientes)
echo  
$datos['nombre'];
echo  
$datos['descripcion'];

}

?>
Basicamente es esto, luego sera cuestión de adaptarlo al formato que quieras darle, dentro de una tabla o como quieras.
__________________
Institutosfp.com

Etiquetas: anidadas, listas
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 23:41.