elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  problema al hacer select de varias tablas sql
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema al hacer select de varias tablas sql  (Leído 1,893 veces)
tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
problema al hacer select de varias tablas sql
« en: 20 Octubre 2015, 00:08 am »

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:

Código
  1. while($fila3[]=mysqli_fetch_array($result3))
  2. {}
  3. while($fila4[]=mysqli_fetch_array($result4))
  4. {}
  5. while($fila5[]=mysqli_fetch_array($result5))
  6. {}
  7.  
  8. while($fila2=mysqli_fetch_array($result2))
  9. {
  10. echo "<tr>";
  11. echo "<td class='estilo_td1'>".$fila2['cod_cliente']."</td><td class='estilo_td'>".$fila2['fecha']."</td><td class='estilo_td'>".$fila2['contacto']."</td>";
  12. echo "<td class='estilo_td'>".$fila2['tipo']."</td><td class='estilo_td'>".$fila2['poblacion']."</td><td class='estilo_td'>".$fila2['provincia']."</td>";
  13. echo "<td class='estilo_td'>".$fila2['pais']."</td><td class='estilo_td'>".$fila2['revisado']."</td><td class='estilo_td'>".$fila2['nombre_empresa']."</td>";
  14. echo "<td class='estilo_td'>".$fila2['web']."</td>";
  15. echo "</tr>";
  16.  
  17. foreach($fila3 as $value){
  18. echo "<tr>";
  19. echo "<td class='estilo_td'>".$value['clientes_telefonos']."</td>";
  20. }
  21.  
  22. foreach($fila4 as $value4){
  23. echo "<td class='estilo_td'>".$value4['nombre']."</td><td class='estilo_td'>".$value4['apellidos']."</td>";
  24. }
  25.  
  26. foreach($fila5 as $value5){
  27. echo "<td class='estilo_td'>".$value5['clientes_emails']."</td>";
  28. echo "</tr>";
  29. }
  30.  
  31. }
  32.  

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.


« Última modificación: 20 Octubre 2015, 12:18 pm por #!drvy » En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: problema al hacer select de varias tablas sql
« Respuesta #1 en: 20 Octubre 2015, 00:14 am »

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...



En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: problema al hacer select de varias tablas sql
« Respuesta #2 en: 20 Octubre 2015, 00:20 am »

no te entiendo a que se refiere a modificar la sql?
esto es a lo me refiero
Código
  1. <tr><td>datos del cliente1<td><td>.....wfe</td>...............</tr>
  2. <tr><td>telefono1</td><td>nombre1</td><td>apellido1</td><td>email1</td></tr>
  3. <tr><td>telefono2</td><td>nombre2</td><td>apellido2</td><td>email2</td></tr>
  4. <tr><td>telefono3</td><td>nombre3</td><td>apellido3</td><td>email3</td></tr>
  5. .........
  6. <tr><td>datos del cliente2<td><td>.....wfe</td>...............</tr>
  7. ......
  8. .....
  9. ......
  10.  
« Última modificación: 20 Octubre 2015, 00:25 am por tecasoft » En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: problema al hacer select de varias tablas sql
« Respuesta #3 en: 20 Octubre 2015, 00:25 am »

tienes que hacer un query por cliente... para sacar sus datos que sean repetidos...
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: problema al hacer select de varias tablas sql
« Respuesta #4 en: 20 Octubre 2015, 00:29 am »

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:
En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: problema al hacer select de varias tablas sql
« Respuesta #5 en: 20 Octubre 2015, 05:53 am »

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:

Código
  1. $result2=mysqli_query($conexion,"insert into clientes (fecha,contacto,tipo,poblacion,provincia,pais,revisado,nombre_empresa,web) values
  2. ('$anadir_fecha','$anadir_contacto','$anadir_tipo','$anadir_poblacion','$anadir_provincia','$anadir_pais','$anadir_revisado',
  3. '$anadir_nombre_empresa','$anadir_web')");
  4.  
  5. mysqli_set_charset($result2,"utf8");
  6.  
  7. /* INSERTAR clientes_telefonos  $p_scnt */
  8. $id=mysqli_insert_id($conexion); /* Te muestra el ultimo id_campo insertado en la tabla */
  9.  
  10. $result3=mysqli_query($conexion,"insert into clientes_telefonos (clientes_telefonos,cod_tel) values ('$p_scnt','$id')");
  11. mysqli_set_charset($result3,"utf8");
  12.  
  13. $id_telefonos=mysqli_insert_id($conexion);
  14.  
  15. /* INSERTAR clientes_tratamiento $p_scnt_nombre y $p_scnt_apellidos */
  16. $result4=mysqli_query($conexion,"insert into clientes_tratamiento (nombre,apellidos,cod_tra,cod_tra_tel) values ('$p_scnt_nombre','$p_scnt_apellidos','$id',
  17. '$id_telefonos')");
  18. mysqli_set_charset($result4,"utf8");
  19.  
  20. foreach($pscnt as $numero){
  21.       mysqli_query($conexion,"insert into clientes_telefonos (clientes_telefonos,cod_tel) values ('$numero','$id')");
  22. }
  23.  
  24.      $id_telefonos_bucle=mysqli_insert_id($conexion);
  25.  
  26.      foreach($pscnt_nombre as $index => $nombre){
  27.     $apellidos = $pscnt_apellidos[$index];
  28.     mysqli_query($conexion,"insert into clientes_tratamiento (nombre, apellidos,cod_tra,cod_tra_tel) values ('$nombre','$apellidos','$id',
  29.     '$id_telefonos_bucle')");
  30. }
  31.  
En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
eLank0
eLhAcKeR r00Lz


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: problema al hacer select de varias tablas sql
« Respuesta #6 en: 20 Octubre 2015, 08:55 am »

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
En línea

tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: problema al hacer select de varias tablas sql
« Respuesta #7 en: 20 Octubre 2015, 12:59 pm »

esto es lo que utilizo para hacer un select:
Código
  1. $result2=mysqli_query($conexion,"select cod_cliente,fecha,contacto,tipo,poblacion,provincia,pais,revisado,nombre_empresa,web,clientes_telefonos,nombre,apellidos
  2. from clientes,clientes_telefonos,clientes_tratamiento,clientes_emails where cod_cliente='$cod_cliente' or fecha='$fecha' or contacto='$contacto' or tipo='$tipo'
  3. or poblacion='$poblacion' or provincia='$provincia' or pais='$pais' or revisado='$revisado' or nombre_empresa='$nombre_empresa' or web='$web' or
  4. clientes_telefonos='$telefonos' or nombre='$nombre' or apellidos='$apellidos' or clientes_emails='$clientes_emails' group by cod_cliente");
  5. mysqli_set_charset($result2,"utf8");
  6.  
  7. /*$result3=mysqli_query($conexion,"select clientes_telefonos from clientes_telefonos where clientes_telefonos='$telefonos' group by cod_telefonos");
  8. mysqli_set_charset($result3,"utf8");
  9.  
  10. $result4=mysqli_query($conexion,"select nombre,apellidos from clientes_tratamiento where nombre='$nombre' or apellidos='$apellidos' group by cod_tratamiento");
  11. mysqli_set_charset($result4,"utf8");*/
  12.  
  13. $result5=mysqli_query($conexion,"select clientes_emails from clientes,clientes_telefonos,clientes_tratamiento,clientes_emails where
  14. cod_cliente='$cod_cliente' or fecha='$fecha' or contacto='$contacto' or tipo='$tipo' or
  15. poblacion='$poblacion' or provincia='$provincia' or pais='$pais' or revisado='$revisado' or nombre_empresa='$nombre_empresa' or web='$web' or
  16. clientes_telefonos='$telefonos' or nombre='$nombre' or apellidos='$apellidos' or clientes_emails='$clientes_emails' group by cod_emails");
  17. mysqli_set_charset($result5,"utf8");
  18.  
  19.  
  20. while($fila2=mysqli_fetch_array($result2))
  21. {
  22. echo "<tr>";
  23. echo "<td class='estilo_td1'>".$fila2['cod_cliente']."</td><td class='estilo_td'>".$fila2['fecha']."</td><td class='estilo_td'>".$fila2['contacto']."</td>";
  24. echo "<td class='estilo_td'>".$fila2['tipo']."</td><td class='estilo_td'>".$fila2['poblacion']."</td><td class='estilo_td'>".$fila2['provincia']."</td>";
  25. echo "<td class='estilo_td'>".$fila2['pais']."</td><td class='estilo_td'>".$fila2['revisado']."</td><td class='estilo_td'>".$fila2['nombre_empresa']."</td>";
  26. echo "<td class='estilo_td'>".$fila2['web']."</td>";
  27. echo "</tr>";
  28.  
  29. $result3=mysqli_query($conexion,"select clientes_telefonos from clientes_telefonos where cod_tel=".$fila2['cod_cliente']);
  30. mysqli_set_charset($result3,"utf8");
  31.  
  32. $result4=mysqli_query($conexion,"select clientes_telefonos,nombre,apellidos from clientes_telefonos,clientes_tratamiento where
  33. clientes_tratamiento.cod_tra=".$fila2['cod_cliente']." and clientes_telefonos.cod_tel=".$fila2['cod_cliente']);
  34. mysqli_set_charset($result4,"utf8");
  35.  
  36. /*while($fila3=mysqli_fetch_array($result3))
  37. {
  38. */
  39.  
  40. while($fila4=mysqli_fetch_array($result4))
  41. {
  42. echo "<tr>";
  43.  
  44. echo "<td class='estilo_td1'>".$fila4['clientes_telefonos']."</td>";
  45.  
  46. echo "<td class='estilo_td'>".$fila4['nombre']."</td><td class='estilo_td'>".$fila4['apellidos']."</td>";
  47.  
  48. echo "</tr>";
  49.  
  50. }
  51.  
  52. /*}*/
  53.  
  54.  
  55. }
  56.  

pero no seria mejor utilizar esto para hacer el select:

Código
  1. SELECT * FROM clientes_telefonos,clientes_tratamiento WHERE cod_tel=5 AND
  2. clientes_telefonos.cod_telefonos=clientes_tratamiento.cod_tra_tel GROUP BY cod_telefonos;
  3.  

como lo veis vosotros el insert y el select?
En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Llenar un treeview desde varias tablas
.NET (C#, VB.NET, ASP)
wolf_ca9 4 10,551 Último mensaje 7 Octubre 2011, 10:57 am
por userdavid77
[Ayuda] Unir varias tablas! :(
.NET (C#, VB.NET, ASP)
guillevcp 5 3,365 Último mensaje 14 Octubre 2011, 14:11 pm
por Novlucker
[Solucionado]Dudas Sql subconsultas relacionando varias tablas « 1 2 »
Bases de Datos
Anonymous250 11 16,956 Último mensaje 10 Enero 2012, 12:36 pm
por Anonymous250
update de varias tablas en una sola ves
Dudas Generales
ferits 0 1,711 Último mensaje 25 Agosto 2015, 02:57 am
por ferits
Como usar el insert Into en varias tablas con una condicion
.NET (C#, VB.NET, ASP)
_CrisiS_ 0 2,190 Último mensaje 1 Abril 2018, 16:56 pm
por _CrisiS_
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines