Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Extraer un valor de una tabla relacional

Estas en el tema de Extraer un valor de una tabla relacional en el foro de PHP en Foros del Web. Hola a todos como estan no se alguien por aqui ha tenido el mismo caso que yo veran tengo tres tablas @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: ...
  #1 (permalink)  
Antiguo 27/10/2015, 11:56
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Extraer un valor de una tabla relacional

Hola a todos como estan no se alguien por aqui ha tenido el mismo caso que yo veran tengo tres tablas
Código MySQL:
Ver original
  1. -- seg_pap //Tabla principal
  2.    -- seg_pap_servicio // tabla que une a la tabla principal con el servicio
  3.    -- servicio // tabla de servicios
como verán tengo una tabla principal, la otra une a la principal con otra tabla que la uso para extraer datos y luego llenarlos en la tabla de union pues hasta hai no tengo problema alguno, el problema es cuando trae de colocar los datos de la siguiente consulta en un formulario y es la siguiente
Código PHP:
Ver original
  1. else if ($c==7) {
  2.   $v=$_POST["v"];
  3.   $link = getConexion();
  4.   $query_cargar_editar_segpap = "SELECT seg_pap.seg_pap_id,seg_pap_fecha_requerimiento,seg_pap_fecha_ultimo_contac,seg_pap_fecha_proximo_contac,CONCAT(jc_contacto_nombre,' ',jc_contacto_apellidos) AS nombres_contacto,contacto.jc_empresa_id,seg_estatus_id,jc_actividad_id,seg_referencia_id,seg_pap_observaciones, sps.jc_servicio_id,sps.seg_pap_valor_venta FROM seg_pap LEFT JOIN contacto ON contacto.jc_contacto_id=seg_pap.jc_contacto_id JOIN (seg_pap_servicio sps LEFT JOIN servicio sp ON sp.jc_servicio_id = sps.jc_servicio_id) ON sps.seg_pap_id = seg_pap.seg_pap_id
  5.  WHERE seg_pap.seg_pap_id =  ".$v."";
  6.   $result_query = mysql_query($query_cargar_editar_segpap, $link) or die(mysql_error());
  7.   $cargar_seg_pap = "";
  8.   while ($rows_seg_pap= mysql_fetch_assoc($result_query)) {
  9.     $cargar_seg_pap.=$rows_seg_pap['seg_pap_id']."->".$rows_seg_pap['seg_pap_fecha_requerimiento']."->".$rows_seg_pap['seg_pap_fecha_ultimo_contac']."->".$rows_seg_pap['seg_pap_fecha_proximo_contac']."->".$rows_seg_pap['nombres_contacto']."->".$rows_seg_pap['jc_empresa_id']."->".$rows_seg_pap['seg_estatus_id']."->".$rows_seg_pap['jc_actividad_id']."->".$rows_seg_pap['seg_referencia_id']."->".$rows_seg_pap['jc_servicio_id']."->".$rows_seg_pap['seg_pap_valor_venta']."->".$rows_seg_pap['jc_servicio_id']."->".$rows_seg_pap['seg_pap_valor_venta']."->".$rows_seg_pap['seg_pap_observaciones'];
  10.   }
  11.   echo $cargar_seg_pap;
  12. }
cuando ejecuto esta consulta me bota mas de una linea y es lógico porque en la tabla de unión extisten mas de un registro por cada id de la tabla principal el problema esta que quiero llevar los datos de la tabla de union a un formulario y cuando lo he probado como esta en la consulta de arriba y cuando lo pongo en el formulario me toma solo el primer valor de la tabla de union
  #2 (permalink)  
Antiguo 27/10/2015, 20:03
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Extraer un valor de una tabla relacional

Saludo
A ver sí entendí

Ej:
Tengo 1 principal (tabla seg_pap)
Tengo 2 servicios (tabla servicio)
Tengo asociados esos dos servicios para el principal (tabla seg_pap_servicio)
Tengo o no 1 contacto (tabla contacto)

Así, por ej, al ejecutar la consulta obtengo esto

Código HTML:
Ver original
  1. 1->2015-10-27 20:48:59->2015-10-27 20:48:59->2015-10-27  20:48:59->nombrecontacto  apellidocontacto->1->1->1->1->1->1.000.000->1->1.000.000->observaciones
  2.  
  3. 1->2015-10-27  20:48:59->2015-10-27 20:48:59->2015-10-27  20:48:59->nombrecontacto  apellidocontacto->1->1->1->1->2->2.000.000->2->2.000.000->observaciones

Trayendo los dos servicios con su respectivo id, y su respectivo precio.

Es decir, la consulta trae los datos como debe ser, correcto?
El problema que tienes es a la hora de pasar esos datos ya
al formulario, entiendo bien el problema, o es otro?

De ser así, pues lo que se tiene que hacer es en el ciclo crear un arreglo,
y luego usar ese arreglo en el formulario, o por lo menos así creo es más fácil.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 28/10/2015, 09:24
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Extraer un valor de una tabla relacional

Hola y gracias por responder haber como podras ver es +- lo que comentas haber aqui te dejo lo que hace la consulta es decir el resultado
Código MySQL:
Ver original
  1. SELECT seg_pap.seg_pap_id,seg_pap_fecha_requerimiento,seg_pap_fecha_ultimo_contac,seg_pap_fecha_proximo_contac,CONCAT(jc_contacto_nombre,' ',jc_contacto_apellidos) AS nombres_contacto,
  2. contacto.jc_empresa_id,seg_estatus_id,jc_actividad_id,seg_referencia_id,sps.jc_servicio_id,sps.seg_pap_valor_venta,seg_pap_observaciones FROM seg_pap
  3. LEFT JOIN contacto ON contacto.jc_contacto_id=seg_pap.jc_contacto_id
  4. JOIN (seg_pap_servicio sps LEFT JOIN servicio sp ON sp.jc_servicio_id = sps.jc_servicio_id) ON sps.seg_pap_id = seg_pap.seg_pap_id
  5. WHERE seg_pap.seg_pap_id = '28'
este es el resultado
Código MySQL:
Ver original
  1. seg_pap_id | seg_pap_fecha_requerimiento | seg_pap_fecha_ultimo_contac | seg_pap_fecha_proximo_contac | nombres_contacto | jc_empresa_id  seg_estatus_id | jc_actividad_id | seg_referencia_id jc_servicio_id | seg_pap_valor_venta | seg_pap_observaciones
  2. 28  10/09/2015  25/09/2015  02/10/2015  Ana Sofia  Alarcon Guzman   117 13  7   9   19  4500   
  3. 28  10/09/2015  25/09/2015  02/10/2015  Ana Sofia  Alarcon Guzman   117 13  7   9   5   6000   
  4. 28  10/09/2015  25/09/2015  02/10/2015  Ana Sofia  Alarcon Guzman   117 13  7   9       0  
  5. 28  10/09/2015  25/09/2015  02/10/2015  Ana Sofia  Alarcon Guzman   117 13  7   9       0
me bota mas de un resultado porque en la tabla seg_pap_servicio existen mas de un dato relacionado con el id de la tabla seg_pap bueno hasta hai no hay problema ahora el tema es llevarlo a un formulario y para eso tengo que mostrar la información en inputs individuales de los campos jc_serivicio_id y seg_pap_valor_venta en mi html lo tengo asi
Código HTML:
Ver original
  1. // aqui debe ir la info del primer campo es decir jc_servicio_id
  2. <select class="form-control" id="e_programa1_seguimiento_pap">
  3.                 <option value="0">Programa 1 *</option>
  4.               </select>
  5. // aqui debe de ir la info del segundo campo que seria seg_pap_valor_venta
  6. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta1_seguimiento_pap">
  7. // como son hasta cuatro tengo otros 3 igual
  8. <select class="form-control" id="e_programa2_seguimiento_pap">
  9.                 <option value="0">Programa 2 *</option>
  10.               </select>
  11. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta2_seguimiento_pap">
  12. <select class="form-control" id="e_programa3_seguimiento_pap">
  13.                 <option value="0">Programa 3 *</option>
  14.               </select>
  15. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta3_seguimiento_pap">
  16. <select class="form-control" id="e_programa4_seguimiento_pap">
  17.                 <option value="0">Programa 4 *</option>
  18.               </select>
  19. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta4_seguimiento_pap">
y como lo llevo esto a mi html con la el while de php que ya mostre en el post anterior atravez de una funcion en con jquery
Código Javascript:
Ver original
  1. function cargar_editar_seguimiento_pap(e_segpapid){
  2.   $("#e_id_seguimiento_pap").val(e_segpapid);
  3.   c_segpap = "";
  4.   $.ajax({
  5.     type: "POST",
  6.     url: "funciones/combo.php",
  7.     data:"c=7&v="+e_segpapid,
  8.     success:function(data){
  9.       console.log(data);
  10.       var segpap_data = data.split("->");
  11.       $("#e_fecha_requerimiento_seguimiento_pap").val(segpap_data[1]);
  12.       $("#e_fecha_ultimo_contacto_seguimiento_pap").val(segpap_data[2]);
  13.       $("#e_fecha_proximo_contacto_seguimiento_pap").val(segpap_data[3]);
  14.       $("#v_contacto_seguimiento_pap").val(segpap_data[4]);
  15.       $("#e_empresa_seguimiento_pap option[value="+ segpap_data[5] +"]").attr("selected",true);
  16.       $("#e_estatus_seguimiento_pap option[value="+ segpap_data[6] +"]").attr("selected",true);
  17.       $("#e_actividad_seguimiento_pap option[value="+ segpap_data[7] +"]").attr("selected",true);
  18.       $("#e_referencia_seguimiento_pap option[value="+ segpap_data[8] +"]").attr("selected",true);
  19.       $("#e_observaciones_seguimiento_pap").val(segpap_data[9]);
  20.     }
  21.   });
  22. }
pues el tema esta mandar esos valores individualmente en cada input y select ese es el problema
  #4 (permalink)  
Antiguo 28/10/2015, 12:59
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Extraer un valor de una tabla relacional

Saludo
Pues ya ví a lo que te refieres, pero pues lo que tienes ya funciona,
hice el ejemplo de esta manera

En el formulario
Código HTML:
Ver original
  1. <select class="form-control" id="e_empresa_seguimiento_pap">
  2.                     <option value="0">Seleccione...</option>
  3.                     <option value="1">Empresa1</option>
  4.                     <option value="2">Empresa2</option>
  5.                   </select>
  6. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta1_seguimiento_pap">
  7. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta2_seguimiento_pap">
  8. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta3_seguimiento_pap">

En la función
Código Javascript:
Ver original
  1. $("#e_valor_venta1_seguimiento_pap").val(segpap_data[10]);
  2.           $("#e_valor_venta2_seguimiento_pap").val(segpap_data[23]);
  3.           $("#e_valor_venta3_seguimiento_pap").val(segpap_data[36]);
  4.           $("#e_valor_venta4_seguimiento_pap").val(segpap_data[49]);
  5.           $("#e_empresa_seguimiento_pap option[value="+ segpap_data[5] +"]").attr("selected",true);

Y al momento de llamar a la función, da los valores en forma correcta a cada
uno de los campos.

Ahora, como decías en el post inicial, solo te toma el primer valor,
pues eso es porque solo se está asignando ese valor, en el ejemplo
que puse se puede apreciar que para los valores de venta,
he asignado los 4 valores que vienen.

Espero sirva el ejemplo.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 28/10/2015, 13:22
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Extraer un valor de una tabla relacional

mmm me perdi los valores es decir
Código Javascript:
Ver original
  1. $("#e_valor_venta2_seguimiento_pap").val(segpap_data[23]);
ese 23 que es y bueno los en los combos haria los mismo osea en esto
Código Javascript:
Ver original
  1. // aqui debe ir la info del primer campo es decir jc_servicio_id
  2. <select class="form-control" id="e_programa1_seguimiento_pap">
  3.                 <option value="0">Programa 1 *</option>
  4.               </select>
  5. // aqui debe de ir la info del segundo campo que seria seg_pap_valor_venta
  6. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta1_seguimiento_pap">
  7. // como son hasta cuatro tengo otros 3 igual
  8. <select class="form-control" id="e_programa2_seguimiento_pap">
  9.                 <option value="0">Programa 2 *</option>
  10.               </select>
  11. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta2_seguimiento_pap">
  12. <select class="form-control" id="e_programa3_seguimiento_pap">
  13.                 <option value="0">Programa 3 *</option>
  14.               </select>
  15. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta3_seguimiento_pap">
  16. <select class="form-control" id="e_programa4_seguimiento_pap">
  17.                 <option value="0">Programa 4 *</option>
  18.               </select>
  19. <input type="text" class="form-control" placeholder="Valor Venta" id="e_valor_venta4_seguimiento_pap">
  #6 (permalink)  
Antiguo 28/10/2015, 13:50
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Extraer un valor de una tabla relacional

Saludo

Pues el 23 es la posición en la que queda el segundo precio.
Recordemos que se hizo un split, y por ende los datos quedaron
en posiciones, para los precios, son la 10, 23, 36 y 49 respectivamente.

En cuanto a los select, no veo que se estén cargando los programas,
es decir, solo hay un option para cada select publicado, entonces sería
mejor incluso manejarlos en campos text.

Caso diferente sería el ejemplo que puse, tengo un listado de empresas
precargadas, y luego con lo que obtengo de la bd en el split,
selecciono la empresa que es la correspondiente.

Así que yo apoyaría los select siempre y cuando se les precargue info,
de lo contrario no es que hagan mucho más.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 28/10/2015, 14:53
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Extraer un valor de una tabla relacional

Hola y Gracias nuevamente por contestar pues si los select pre cargan información segun el id que se encuentra en el campo jc_servicio_id y bueno lo que hago luego es asignarle el atributo selected segun el valor que se encuentra en el select y gracias me despejastes varias dudas
  #8 (permalink)  
Antiguo 28/10/2015, 16:14
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Extraer un valor de una tabla relacional

Quiero agredecerte tu ayuda al final soluciono mi problema Graciassss asi quedo
Código PHP:
Ver original
  1. //Mi Consulta php que trae los datos
  2. else if ($c==7) {
  3.   $v=$_POST["v"];
  4.   $link = getConexion();
  5.   $query_cargar_editar_segpap = "SELECT seg_pap.seg_pap_id,seg_pap_fecha_requerimiento,seg_pap_fecha_ultimo_contac,seg_pap_fecha_proximo_contac,CONCAT(jc_contacto_nombre,' ',jc_contacto_apellidos) AS nombres_contacto, contacto.jc_empresa_id,seg_estatus_id,jc_actividad_id,seg_referencia_id,sps.jc_servicio_id,sps.seg_pap_valor_venta,seg_pap_observaciones FROM seg_pap
  6.  LEFT JOIN contacto ON contacto.jc_contacto_id=seg_pap.jc_contacto_id
  7.  JOIN (seg_pap_servicio sps LEFT JOIN servicio sp ON sp.jc_servicio_id = sps.jc_servicio_id) ON sps.seg_pap_id = seg_pap.seg_pap_id
  8.  WHERE seg_pap.seg_pap_id = ".$v."";
  9.   $result_query = mysql_query($query_cargar_editar_segpap, $link) or die(mysql_error());
  10.   $cargar_seg_pap = "";
  11.   while ($rows_seg_pap= mysql_fetch_assoc($result_query)) {
  12.     $cargar_seg_pap.=$rows_seg_pap['seg_pap_id']."->".$rows_seg_pap['seg_pap_fecha_requerimiento']."->".$rows_seg_pap['seg_pap_fecha_ultimo_contac']."->".$rows_seg_pap['seg_pap_fecha_proximo_contac']."->".$rows_seg_pap['nombres_contacto']."->".$rows_seg_pap['jc_empresa_id']."->".$rows_seg_pap['seg_estatus_id']."->".$rows_seg_pap['jc_actividad_id']."->".$rows_seg_pap['seg_referencia_id']."->".$rows_seg_pap['jc_servicio_id']."->".$rows_seg_pap['seg_pap_valor_venta']."->".$rows_seg_pap['seg_pap_observaciones'];
  13.   }
  14.   echo $cargar_seg_pap;
  15. }
mi funcion que muestra la info en el html
Código Javascript:
Ver original
  1. function cargar_editar_seguimiento_pap(e_segpapid){
  2.   $("#e_id_seguimiento_pap").val(e_segpapid);
  3.   c_segpap = "";
  4.   $.ajax({
  5.     type: "POST",
  6.     url: "funciones/combo.php",
  7.     data:"c=7&v="+e_segpapid,
  8.     success:function(data){
  9.       var segpap_data = data.split("->");
  10.       $("#e_fecha_requerimiento_seguimiento_pap").val(segpap_data[1]);
  11.       $("#e_fecha_ultimo_contacto_seguimiento_pap").val(segpap_data[2]);
  12.       $("#e_fecha_proximo_contacto_seguimiento_pap").val(segpap_data[3]);
  13.       $("#v_contacto_seguimiento_pap").val(segpap_data[4]);
  14.       $("#e_empresa_seguimiento_pap option[value="+ segpap_data[5] +"]").attr("selected",true);
  15.       $("#e_estatus_seguimiento_pap option[value="+ segpap_data[6] +"]").attr("selected",true);
  16.       $("#e_actividad_seguimiento_pap option[value="+ segpap_data[7] +"]").attr("selected",true);
  17.       $("#e_referencia_seguimiento_pap option[value="+ segpap_data[8] +"]").attr("selected",true);
  18.       $("#e_programa1_seguimiento_pap option[value="+segpap_data[9]+"]").attr("selected",true);
  19.       $("#e_valor_venta1_seguimiento_pap").val(segpap_data[10]);
  20.       if (segpap_data[20]!="" && segpap_data[31]!=""){ //Hago este pequeño if por si es que el campo este vacio no muestre nada
  21.         $("#e_programa2_seguimiento_pap option[value="+segpap_data[20]+"]").attr("selected",true);
  22.         $("#e_programa3_seguimiento_pap option[value="+segpap_data[31]+"]").prop("selected",true);
  23.       }
  24.       $("#e_valor_venta2_seguimiento_pap").val(segpap_data[21]);
  25.       $("#e_valor_venta3_seguimiento_pap").val(segpap_data[32]);
  26.       if (segpap_data[42]!="") {
  27.         $("#e_programa4_seguimiento_pap option[value="+segpap_data[42]+"]").attr("selected",true);
  28.       }
  29.       $("#e_valor_venta4_seguimiento_pap").val(segpap_data[43]);
  30.       $("#e_observaciones_seguimiento_pap").val(segpap_data[44]);
  31.     }
  32.   });
  33. }
Muchas Graciasssss mortiprogramador me despejaste dudas en cuanto a la posición en la que trae la consulta los datos creo que no fui muy especifico en mi pregunta pero igual coloco mi solución por si alguien le ocurre lo mismo Nuevamente Graciassss

Etiquetas: fecha, formulario, mysql, registro, relacional, select, sql, tabla, valor
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 18:40.