Foros del Web » Programando para Internet » PHP »

consulta logica programacion

Estas en el tema de consulta logica programacion en el foro de PHP en Foros del Web. Lectores del foro tengo la siquiente inquietud espero puedan encaminarme en el tema , tengo una base de datos A de la cual necesito extraer ...
  #1 (permalink)  
Antiguo 08/09/2011, 11:35
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
consulta logica programacion

Lectores del foro tengo la siquiente inquietud espero puedan encaminarme en el tema , tengo una base de datos A de la cual necesito extraer de una tabla 3 campos , estos campos de esta tabla debo copiarlos en una Base B , mi duda es el procedimiento a seguir o sea hacer un select de la tabla A , luego un insert into de esos datos a la tabla de la base B , pero por ejemplo como podria hacer cuando los datos se actualicen en la tabla de la base A como seria la logica a seguir ?

saludos espero puedan ayudarme ..
  #2 (permalink)  
Antiguo 08/09/2011, 12:34
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
Respuesta: consulta logica programacion

e intentado hacer lo siguiente

Código PHP:
Ver original
  1. <?php    
  2.    $sql = "SELECT
  3.                 lime_questions.sid,
  4.                 lime_questions.gid,
  5.                 lime_questions.qid
  6.            FROM lime_questions";
  7.                         $dblink = mysql_connect("localhost","xxxx","xxx");
  8.                         mysql_select_db("baseA",$dblink);  
  9.                         $resultado=mysql_query($sql,$dblink)or die(mysql_error());
  10.                             while($row = mysql_fetch_array($resultado)) {
  11.                              
  12.                                    
  13.                                     //echo $row['sid']. '-'. $row['gid']. '-'. $row['qid']. '<br>';
  14. require_once("../conexion/conexion_baseB.php");                    
  15. $sql_inserta="INSERT INTO encuestas (sid,gid,qid) VALUES ('".$_POST['sid']."','".$_POST['gid']."','".$_POST['qid']."')";
  16. $resultado_inserta=mysql_query($sql_inserta,$link_inserta);
  17.                            
  18. };
  19.  
  20. ?>

solo me funciona el select de los datos pero no me inserta los resultados en la otra base .

Saludos
  #3 (permalink)  
Antiguo 08/09/2011, 12:44
Avatar de aichiche  
Fecha de Ingreso: marzo-2004
Ubicación: Valparaíso
Mensajes: 35
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: consulta logica programacion

se te olvidó el :
$dblink = mysql_connect("localhost","xxxx","xxx");
mysql_select_db("baseB",$dblink);

antes de insertar en tabla B
__________________
"Sólo dime qué quieres.."
  #4 (permalink)  
Antiguo 08/09/2011, 12:48
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
Respuesta: consulta logica programacion

amigo gracia por responder , lo que me indicas era lo que hago con el require_once, ahi incluyo esa conexion a la base B .

Saludos
  #5 (permalink)  
Antiguo 08/09/2011, 12:52
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: consulta logica programacion

matt_1985, lo más aconsejable es que realices un echo a el insert, es decir :

Código PHP:
Ver original
  1. echo $sql_inserta;

de esta manera, verás por pantalla lo que está insertando(intentando en este caso) el código a tú base de datos, al momento de obtener el insert, ejecutalo directamente en tú PhpMyAdmin, de esta manera puedes solucionarlo mucho más rápido.


Saludos.


__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #6 (permalink)  
Antiguo 08/09/2011, 13:04
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
Respuesta: consulta logica programacion

edito ya lo solucione era una torpesa en realidad

Código PHP:
Ver original
  1. <?php    
  2.    $sql = "SELECT
  3.                 lime_questions.sid,
  4.                 lime_questions.gid,
  5.                 lime_questions.qid
  6.            FROM lime_questions";
  7.                         $dblink = mysql_connect("localhost","surveyipsos","prada");
  8.                         mysql_select_db("surveyipsos",$dblink);
  9.                         $resultado=mysql_query($sql,$dblink)or die(mysql_error());
  10.                             while($row = mysql_fetch_array($resultado)) {
  11.                              
  12.                             $encuesta=$row['sid'];
  13.                             $seccion=$row['gid'];
  14.                             $pregunta=$row['qid'];
  15.                                    
  16.                                     //echo $row['sid']. '-'. $row['gid']. '-'. $row['qid']. '<br>';
  17. $dblink2 = mysql_connect("localhost","surveyipsos","prada");
  18. mysql_select_db("bd_mistery",$dblink2);                    
  19. $sql_inserta="INSERT INTO encuestas (sid,gid,qid) VALUES ('".$encuesta."','".$seccion."','".$pregunta."')";
  20. $resultado_inserta=mysql_query($sql_inserta,$dblink2);
  21.    
  22.     //print_r($sql_inserta);                       
  23. };
  24.  
  25. ?>

pero me nace otra inquietud ahora si la tabla A se actualiza como podria actualizar los valores en la tabla B sin duplicar los registros .

Saludos

Última edición por matt_1985; 08/09/2011 a las 13:10
  #7 (permalink)  
Antiguo 08/09/2011, 13:13
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: consulta logica programacion

matt_1985, prueba con esto:

Código PHP:
Ver original
  1. <?php    
  2.     $dblink = mysql_connect("localhost","xxxx","xxx"); mysql_select_db("baseA",$dblink);  
  3.     $sql = "SELECT sid,gid,qid FROM lime_questions";
  4.     $resultado=mysql_query($sql,$dblink)or die(mysql_error());
  5.     while($row = mysql_fetch_array($resultado))
  6.     {
  7.         require_once("../conexion/conexion_baseB.php");                    
  8.         $sql_inserta="INSERT INTO encuestas (sid,gid,qid) VALUES ('".$row['sid']."','".$row['gid']."','".$row['qid']."')";
  9.         $resultado_inserta=mysql_query($sql_inserta,$link_inserta);
  10.     };
  11. ?>



Pd: estabas realizando un SELECT , pero resulta que al momento de realizar el insert , estabas "recibiendo " una variable por POST, recuerda que POST es un método de envío, por lo tanto los valores eran NULL.


Saludos.


__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #8 (permalink)  
Antiguo 08/09/2011, 13:19
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
Respuesta: consulta logica programacion

gracias mi amigo , resolvi con lo que expuse en el post anterior que edite , mi nueva duda es como cuando la tabla A se actulice se actualicen los datos de la tabla B pero sin duplicarse.

Saludos y gracias
  #9 (permalink)  
Antiguo 08/09/2011, 13:24
 
Fecha de Ingreso: septiembre-2011
Mensajes: 16
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: consulta logica programacion

Me pregunto para que quires tener 2 bases de datos , si con una base de datos es mas que suficiente, seguro tu modelado en incorrecto o intentas hacer otra cosa que muy facilemente puede ser el de migrar bases de datos de una otra, que sera¿???
  #10 (permalink)  
Antiguo 08/09/2011, 13:25
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: consulta logica programacion

matt_1985 , disculpa no me había dado cuenta que lo habías resuleto, para realizar lo que necesitas ahora, creo que sería ideal crear una FK en tú tabla B, de esta manera al momento de modificar tú tabla A, actualizas tú tabla B, pasando sólo la variable (FK), saludos.



__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #11 (permalink)  
Antiguo 08/09/2011, 13:36
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
Respuesta: consulta logica programacion

nocturnoa , mi tema es que la base en este caso es de un prefabricado limesurvey por lo cual no quiero modificar ya que me podria generar algun tipo de problemas , por lo cual tengo otra base con la cual interactuo y tengo mis scripts por lo tanto necesito solo esos datos que mostraba en mi ejemplo .

BUllan9ebrio hare lo que me indicas y te cuento como me fue .

Saludos .
  #12 (permalink)  
Antiguo 08/09/2011, 15:43
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
Respuesta: consulta logica programacion

siguiendo con mi tema ahora me surge otro inconveniente , lo que trato de hacer es seleccionar los datos cargados en la tabla B , hasta ahi perfecto , pero a la vez necesito conectarme a multiples tabla de la base A , ya que al crearse un proyecto crea un prefijo lime_survey_xxx , con el numero de la encuesta siendo xxx , mi duda es que debo formar el campo ya de las tablas ya que son creadas se acuerdo a la encuesta(123)(sid), seccion(222)(gid), pregunta(1111)(qid), el problema es que logro formar el campo y leer solo algunos regitros nose como podria optimizar mis consultas .

Código PHP:
Ver original
  1. <?php    
  2.    $sql = "SELECT lime_questions.sid, lime_questions.gid, lime_questions.qid FROM lime_questions";
  3.    $dblink = mysql_connect("localhost","xxx","xxx"); mysql_select_db("xxx",$dblink);   
  4.    $resultado=mysql_query($sql,$dblink)or die(mysql_error());
  5.    while($row = mysql_fetch_array($resultado)) {
  6.                              
  7.          $encuesta=$row['sid'];
  8.          $seccion=$row['gid'];
  9.          $pregunta=$row['qid'];
  10.                                    
  11. //echo $row['sid']. '-'. $row['gid']. '-'. $row['qid']. '<br>';
  12.     $dblink2 = mysql_connect("localhost","xxx","xxx"); mysql_select_db("xxxx",$dblink2);                   
  13.     $sql_inserta="INSERT INTO encuestas (sid,gid,qid) VALUES ('".$encuesta."','".$seccion."','".$pregunta."')";
  14.     $resultado_inserta=mysql_query($sql_inserta,$dblink2);
  15.  
  16.  
  17. //print_r($sql_inserta);                       
  18. $sql_encuestas = "SELECT encuestas.idencuesta, encuestas.sid, encuestas.gid, encuestas.qid FROM encuestas";
  19. $dblink3 = mysql_connect("localhost","xxx","xxx"); mysql_select_db("xxx",$dblink3);                        
  20. $resultado_encuestas=mysql_query($sql_encuestas,$dblink3)or die(mysql_error('error al consultar los registros de encuestas'));
  21. while ($filas = mysql_fetch_array($resultado_encuestas)) {
  22.  
  23.     $campos[$i]= $filas['sid']. 'X'. $filas['gid']. 'X'. $filas['qid'];
  24.  
  25.    
  26. $sql_detalle_encuesta = "SELECT ".implode(',',$campos)." FROM lime_survey_".$encuesta."";  
  27. $dblink4 = mysql_connect("localhost","xxx","xxx"); mysql_select_db("xxx",$dblink4);
  28. $resultado_detalle_encuesta=mysql_query($sql_detalle_encuesta,$dblink4)or die(mysql_error('error consulta tabla encuestas'));
  29.  
  30. while($fields = mysql_fetch_array($resultado_detalle_encuesta)){
  31.    
  32.     //foreach($fields as $value){
  33.        
  34.     //echo "$value";
  35.     //echo "<br>";
  36. //}  
  37.     foreach($fields as $key => $value){
  38.        
  39.         echo "campo: $key  valor:$value";
  40.         echo "<br>";
  41.     }
  42.     echo "<br>";
  43. }                              
  44. }
  45.  
  46. }// cierra primer while
  47.  
  48.  
  49.  
  50. ?>
,

saludos y gracias
  #13 (permalink)  
Antiguo 09/09/2011, 08:19
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
Respuesta: consulta logica programacion

siguiendo con mi consulta si alguien pudiese ayudarme en el ultimo select que hago como seria posible hacer ese select a multiples tablas usando el campo $encuesta como prefijo de la tabla ?

Saludos
  #14 (permalink)  
Antiguo 09/09/2011, 08:51
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: consulta logica programacion

Matt_1985 , no entendí bien tú duda, pero recuerda que en el SELECT van los campos que quieres recuperar en el FROM desde que tabla y en el WHERE las claúsulas que se deben cumplir, por ejemplo:

Código PHP:
Ver original
  1. $sql="SELECT dp.id_usuario, r.clave, p.accesos FROM datos_personales AS dp, registro AS r, permisos AS p WHERE  dp.id_usuario=p.id_usuario AND r.clave= dp.clave";

Es un ejemplo super básico pero creo que es fácil de entender, además si trabajas con MySql y no eres muy "amigo" de las query's , te recomiendo dos cosas :

1.- Leer el manual y aprender.
2.-Instalar Navicat from MySql.

Si instalas Navicat , te darás cuenta como puedes generar tus consultas de una manera fácil, además de poder ver los resultados en el mismo, aunque 100% te recomiendo que mejor leas y ejecutes, de esta manera aprenderás si algún dia necesitas generar las consultas por consola


Saludos.


__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #15 (permalink)  
Antiguo 09/09/2011, 08:58
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 10 meses
Puntos: 61
Respuesta: consulta logica programacion

mi amigo efectivamente trabajo con el navicat , mi duda es que trabajo con la base de un prefabricado en este caso limesurvey que es un sistema de encuestas , limesurvey a la hora de crear una encuesta por cada una de estas crea una tabla con el prefijo ej: lime_survey_1234
donde 1234 es el identificador de la encuesta , entonces lo que yo hice fue tomar los datos de una tabla llamada lime_questions que tiene estos datos que necesito que son el sid (identificador de la encuesta), gid (seccion encuesta), qid (la pregunta), entonces por lo mismo en mi ultima consulta concateno esos 3 datos para poder formar el campo de la pregunta , lo que no consigo hacer es tomar los datos de todas las tablas con el prefijo lime_survey_1234 etc etc en una sola consulta a la vez , espero haber sido un poco mas claro .

Saludos y gracias

Etiquetas: logica, programacion, tabla
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 16:14.