buenas gente, tengo un problema al seleccionar 3 arrays y que me la muestre ordenadas, son 4 tablas diferentes, existen en este orden, clientes,clientes_telefonos,clientes_tratamiento y clientes_emails( en la tabla clientes hay datos sobre clientes, en la tabla clientes_telefonos pueden existir varios telefonos asociados a 1 cliente, en clientes_tratamiento pueden haber varias personas asociadas a mismo telefono y en la tabla emails pueden haber varios emails para varios clientes, entonces esto es lo que me resulta:
while($fila3[]=mysqli_fetch_array($result3))
{}
while($fila4[]=mysqli_fetch_array($result4))
{}
while($fila5[]=mysqli_fetch_array($result5))
{}
while($fila2=mysqli_fetch_array($result2))
{
echo "<tr>";
echo "<td class='estilo_td1'>".$fila2['cod_cliente']."</td><td class='estilo_td'>".$fila2['fecha']."</td><td class='estilo_td'>".$fila2['contacto']."</td>";
echo "<td class='estilo_td'>".$fila2['tipo']."</td><td class='estilo_td'>".$fila2['poblacion']."</td><td class='estilo_td'>".$fila2['provincia']."</td>";
echo "<td class='estilo_td'>".$fila2['pais']."</td><td class='estilo_td'>".$fila2['revisado']."</td><td class='estilo_td'>".$fila2['nombre_empresa']."</td>";
echo "<td class='estilo_td'>".$fila2['web']."</td>";
echo "</tr>";
foreach($fila3 as $value){
echo "<tr>";
echo "<td class='estilo_td'>".$value['clientes_telefonos']."</td>";
}
foreach($fila4 as $value4){
echo "<td class='estilo_td'>".$value4['nombre']."</td><td class='estilo_td'>".$value4['apellidos']."</td>";
}
foreach($fila5 as $value5){
echo "<td class='estilo_td'>".$value5['clientes_emails']."</td>";
echo "</tr>";
}
}
me sale bien la tabla clientes, me sale bien la tabla telefonos, pero la tabla tratamiento y emails no se ajustan con el select.
como lo hariais para que se muestre <tr><td>telefono1</td><td>nombre1</td><td>apellido1</td><td>email1</td></tr> 1 por linea <tr> ++
Mod: Temas sobre PHP van al subforo de PHP.
agarraste los resultados de todos los clientes y los estás retornando juntos... tienes que hacer el query por cliente o arreglar el array por cliente...
no te entiendo a que se refiere a modificar la sql?
esto es a lo me refiero
<tr><td>datos del cliente1<td><td>.....wfe</td>...............</tr>
<tr><td>telefono1</td><td>nombre1</td><td>apellido1</td><td>email1</td></tr>
<tr><td>telefono2</td><td>nombre2</td><td>apellido2</td><td>email2</td></tr>
<tr><td>telefono3</td><td>nombre3</td><td>apellido3</td><td>email3</td></tr>
.........
<tr><td>datos del cliente2<td><td>.....wfe</td>...............</tr>
......
.....
......
tienes que hacer un query por cliente... para sacar sus datos que sean repetidos...
como seria por cliente? es decir hacer sola una sql para todo? y como seria? llevo horas y horas y no entiendo el funcionamiento algo se me escapa :huh:
tengo esto para insertar un usuario he cojido el ultimo insert into
$id=mysqli_insert_id($conexion); /* Te muestra el ultimo id_campo insertado en la tabla */
pero nose como cojer en el de $id_telefonos_bucle=mysqli_insert_id($conexion); ya que me muestra el ultimo del foreach anterior, como lo podria hacer, nose si sigo buenas metodologias:
$result2=mysqli_query($conexion,"insert into clientes (fecha,contacto,tipo,poblacion,provincia,pais,revisado,nombre_empresa,web) values
('$anadir_fecha','$anadir_contacto','$anadir_tipo','$anadir_poblacion','$anadir_provincia','$anadir_pais','$anadir_revisado',
'$anadir_nombre_empresa','$anadir_web')");
mysqli_set_charset($result2,"utf8");
/* INSERTAR clientes_telefonos $p_scnt */
$id=mysqli_insert_id($conexion); /* Te muestra el ultimo id_campo insertado en la tabla */
$result3=mysqli_query($conexion,"insert into clientes_telefonos (clientes_telefonos,cod_tel) values ('$p_scnt','$id')");
mysqli_set_charset($result3,"utf8");
$id_telefonos=mysqli_insert_id($conexion);
/* INSERTAR clientes_tratamiento $p_scnt_nombre y $p_scnt_apellidos */
$result4=mysqli_query($conexion,"insert into clientes_tratamiento (nombre,apellidos,cod_tra,cod_tra_tel) values ('$p_scnt_nombre','$p_scnt_apellidos','$id',
'$id_telefonos')");
mysqli_set_charset($result4,"utf8");
foreach($pscnt as $numero){
mysqli_query($conexion,"insert into clientes_telefonos (clientes_telefonos,cod_tel) values ('$numero','$id')");
}
$id_telefonos_bucle=mysqli_insert_id($conexion);
foreach($pscnt_nombre as $index => $nombre){
$apellidos = $pscnt_apellidos[$index];
mysqli_query($conexion,"insert into clientes_tratamiento (nombre, apellidos,cod_tra,cod_tra_tel) values ('$nombre','$apellidos','$id',
'$id_telefonos_bucle')");
}
Sería bueno ver el código del SELECT. Para coger datos de todas esas tablas relacionadas ya usas un JOIN? En lugar de usar 4 o 5 consultas separadas?
Salu2
esto es lo que utilizo para hacer un select:
$result2=mysqli_query($conexion,"select cod_cliente,fecha,contacto,tipo,poblacion,provincia,pais,revisado,nombre_empresa,web,clientes_telefonos,nombre,apellidos
from clientes,clientes_telefonos,clientes_tratamiento,clientes_emails where cod_cliente='$cod_cliente' or fecha='$fecha' or contacto='$contacto' or tipo='$tipo'
or poblacion='$poblacion' or provincia='$provincia' or pais='$pais' or revisado='$revisado' or nombre_empresa='$nombre_empresa' or web='$web' or
clientes_telefonos='$telefonos' or nombre='$nombre' or apellidos='$apellidos' or clientes_emails='$clientes_emails' group by cod_cliente");
mysqli_set_charset($result2,"utf8");
/*$result3=mysqli_query($conexion,"select clientes_telefonos from clientes_telefonos where clientes_telefonos='$telefonos' group by cod_telefonos");
mysqli_set_charset($result3,"utf8");
$result4=mysqli_query($conexion,"select nombre,apellidos from clientes_tratamiento where nombre='$nombre' or apellidos='$apellidos' group by cod_tratamiento");
mysqli_set_charset($result4,"utf8");*/
$result5=mysqli_query($conexion,"select clientes_emails from clientes,clientes_telefonos,clientes_tratamiento,clientes_emails where
cod_cliente='$cod_cliente' or fecha='$fecha' or contacto='$contacto' or tipo='$tipo' or
poblacion='$poblacion' or provincia='$provincia' or pais='$pais' or revisado='$revisado' or nombre_empresa='$nombre_empresa' or web='$web' or
clientes_telefonos='$telefonos' or nombre='$nombre' or apellidos='$apellidos' or clientes_emails='$clientes_emails' group by cod_emails");
mysqli_set_charset($result5,"utf8");
while($fila2=mysqli_fetch_array($result2))
{
echo "<tr>";
echo "<td class='estilo_td1'>".$fila2['cod_cliente']."</td><td class='estilo_td'>".$fila2['fecha']."</td><td class='estilo_td'>".$fila2['contacto']."</td>";
echo "<td class='estilo_td'>".$fila2['tipo']."</td><td class='estilo_td'>".$fila2['poblacion']."</td><td class='estilo_td'>".$fila2['provincia']."</td>";
echo "<td class='estilo_td'>".$fila2['pais']."</td><td class='estilo_td'>".$fila2['revisado']."</td><td class='estilo_td'>".$fila2['nombre_empresa']."</td>";
echo "<td class='estilo_td'>".$fila2['web']."</td>";
echo "</tr>";
$result3=mysqli_query($conexion,"select clientes_telefonos from clientes_telefonos where cod_tel=".$fila2['cod_cliente']);
mysqli_set_charset($result3,"utf8");
$result4=mysqli_query($conexion,"select clientes_telefonos,nombre,apellidos from clientes_telefonos,clientes_tratamiento where
clientes_tratamiento.cod_tra=".$fila2['cod_cliente']." and clientes_telefonos.cod_tel=".$fila2['cod_cliente']);
mysqli_set_charset($result4,"utf8");
/*while($fila3=mysqli_fetch_array($result3))
{
*/
while($fila4=mysqli_fetch_array($result4))
{
echo "<tr>";
echo "<td class='estilo_td1'>".$fila4['clientes_telefonos']."</td>";
echo "<td class='estilo_td'>".$fila4['nombre']."</td><td class='estilo_td'>".$fila4['apellidos']."</td>";
echo "</tr>";
}
/*}*/
}
pero no seria mejor utilizar esto para hacer el select:
select * from clientes_telefonos,clientes_tratamiento where cod_tel=5 and
clientes_telefonos.cod_telefonos=clientes_tratamiento.cod_tra_tel group by cod_telefonos;
como lo veis vosotros el insert y el select?