Foros del Web » Programando para Internet » PHP »

Agregar datos a MAS DE UNA TABLA con un mismo recordset

Estas en el tema de Agregar datos a MAS DE UNA TABLA con un mismo recordset en el foro de PHP en Foros del Web. Hola gente.. si bien estoy registrado hace tiempo, recien ahora me agrego activamente al foro. Mi situación es que tengo un recordset (de aqui en ...
  #1 (permalink)  
Antiguo 24/11/2006, 06:46
Avatar de nanomartin  
Fecha de Ingreso: mayo-2005
Ubicación: Moron - Bs As (ARG)
Mensajes: 50
Antigüedad: 18 años, 11 meses
Puntos: 0
Agregar datos a MAS DE UNA TABLA con un mismo recordset

Hola gente.. si bien estoy registrado hace tiempo, recien ahora me agrego activamente al foro.

Mi situación es que tengo un recordset (de aqui en adelante "rds") que esta trayendo mediante JOINS datos de al menos 3 tablas. Hasta ahi, ningun problema.
Ahora bien, yo necesito enviar datos que se cargan en un mismo recordset a por lo menos 4 tablas, uno de los cuales es UPDATE y los otros son datos nuevos.

Les paso el código como para graficar un poco más la idea:

Código PHP:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO turismos (idpresup_tur, operador, contoperador, `ref`, costo_tur, comis_tur, linkarch_tur) VALUES (%s, %s, %s, %s, %s, %s, 'xxx')",
                       GetSQLValueString($_POST['hfd_pre_hot_idpresup'], "int"),
                       GetSQLValueString($_POST['slc_pre_hot_empresas'], "int"),
                       GetSQLValueString($_POST['tfd_pre_hot_contacto'], "text"),
                       GetSQLValueString($_POST['tfd_pre_hot_ref'], "text"),
                       GetSQLValueString($_POST['tfd_pre_hot_costo'], "int"),
                       GetSQLValueString($_POST['tfd_pre_hot_comis'], "text"));
                      
  mysql_select_db($database_n_martinf, $n_martinf);
  $Result1 = mysql_query($insertSQL, $n_martinf) or die(mysql_error());
?>
  $insertGoTo = <?php include("upl_pre_hot.php"); ?>;
Por lo pronto y como veran, solo estoy escribiendo en UNA tabla.. Supongo yo que agregando a ese string que genera para el query el resto de los campos a las otras tablas, debería funcionar, pero solo llevo 3 meses con PHP y desconozco la sintaxis.

Ya he recorrido bastante en FOROS DEL WEB y GOOGLE, pero no encuentro la solucion.

Alguien me tira un F1 ?..

Gracias!

PD: Esto es un examen para la facultad y entrego el miercoles 29/11 !!
  #2 (permalink)  
Antiguo 24/11/2006, 10:47
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
De acuerdo

Hola.

así por encima, lo que te entendí., lo solucinarías con un ciclo, un while, haga mientras "tu condicion".

Pdt: me suena mas a php que a mysql.!!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 24/11/2006, 12:09
Avatar de nanomartin  
Fecha de Ingreso: mayo-2005
Ubicación: Moron - Bs As (ARG)
Mensajes: 50
Antigüedad: 18 años, 11 meses
Puntos: 0
Si si, esta bien.. el proceso lógico lo imaginaba... pero lo que desconozco es la SINTAXIS..

Serían tan amables de mostrarmela? :$

Gracias!
  #4 (permalink)  
Antiguo 24/11/2006, 12:43
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Creo que los más acertado (además de mover el hilo a PHP) sería recoger primero la id del primer INSERT con mysql_insert_id() y a partir de ahi ir haciendo INSERT a las tablas correspondientes sobre una subconsulta basada en la tabla que primero insertas (turismos?).

algo como
Código PHP:

$id 
mysql_insert_id(); // id del primer insert en turismos

// despues INSERT a las distintas tablas

INSERT INTO tabla2 (campo1,campo2
 
SELECT campo1,campo2 FROM turismos WHERE id=$id

INSERT INTO tabla3 
(campo1,campo2
 
SELECT campo1,campo2 FROM turismos WHERE id=$id 
A mi es lo que más me convence la verdad pero seguro que con un for o un foreach lo puedes hacer a partir de un array con distintas tablas

Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #5 (permalink)  
Antiguo 24/11/2006, 13:47
Avatar de nanomartin  
Fecha de Ingreso: mayo-2005
Ubicación: Moron - Bs As (ARG)
Mensajes: 50
Antigüedad: 18 años, 11 meses
Puntos: 0
Ningun Problema... MODERADOR, qué hacemos? lo cambiamos a PHP ?.. donde sea que esté, mientras me provea de solucion!

La verdad, mucho no entendí loq ue me dice LORD, pero voy a intentar algo ..

Gracias!!
  #6 (permalink)  
Antiguo 24/11/2006, 15:32
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Movido a PHP y te dejo una breve explicación sobre la sección de BD.
Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #7 (permalink)  
Antiguo 25/11/2006, 10:20
Avatar de nanomartin  
Fecha de Ingreso: mayo-2005
Ubicación: Moron - Bs As (ARG)
Mensajes: 50
Antigüedad: 18 años, 11 meses
Puntos: 0
No hay casooo... :'(

Si si... lo leí de inmediato al enlace.. y me parece bien acomodar las cosas donde van. Solo que yo no estoy muy ducho con "la clasificacion".. y supuse que el problema era referido a SQL.

Todo bien con eso ;o)

Por otro lado... me cansé de leer el foro y PHP.NET ('hache.tt.pe://' ar2.php.net/manual/es/functio...-insert-id.php entre otros), pero no hay caso... no logro armar la sintaxis correcta. (la idea la tengo clarisima, el problema es desconocer el lenguaje, y no poder armar correctamente el query. Sé QUÉ hacer, pero no CÓMO)

Me pueden dar una ayuda con eso? (digo, con la sintaxis) :$

Gracias a todos desde ya!
  #8 (permalink)  
Antiguo 26/11/2006, 12:58
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Aqui te dejo una posible solución (a completar el tema de la seguridad eso si)

Código PHP:
// Haces tu primer INSERT a la tabla primera (TURISMOS)
$insertSQL sprintf("INSERT INTO turismos (idpresup_tur, operador, contoperador, `ref`, costo_tur, comis_tur, linkarch_tur) VALUES (%s, %s, %s, %s, %s, %s, 'xxx')",
                       
GetSQLValueString($_POST['hfd_pre_hot_idpresup'], "int"),
                       
GetSQLValueString($_POST['slc_pre_hot_empresas'], "int"),
                       
GetSQLValueString($_POST['tfd_pre_hot_contacto'], "text"),
                       
GetSQLValueString($_POST['tfd_pre_hot_ref'], "text"),
                       
GetSQLValueString($_POST['tfd_pre_hot_costo'], "int"),
                       
GetSQLValueString($_POST['tfd_pre_hot_comis'], "text"));
                      
mysql_select_db($database_n_martinf$n_martinf);
$Result1 mysql_query($insertSQL$n_martinf) or die(mysql_error()); 
                
$id mysql_insert_id(); // id del primer insert en turismos

// Array en el que defino las tablas a las que hay que insertar los datos y las cosultas específicas de inserción en cada una de ellas

$tablas  = array(
                
'tabla2' => 'INSERT INTO tabla2 (campo1,campo2)  SELECT campo1,campo2 FROM turismos WHERE id='.$id,
                
'tabla3' => 'INSERT INTO tabla3 (campo2,campo6,campo3)  SELECT campo2,campo6,campo3 FROM turismos WHERE id='.$id
                
);
                

// recorro el array haciendo un INSERT por cada tabla que tenga en el array "Tablas"                
foreach ($tablas as $k=>$v){

mysql_query($v);
if(!
mysql_affected_rows() == -1) echo "HUBO UN ERROR EN EL INSERT DE LA TABLA ".$k;
else echo 
"TODO BIEN EN LA TABLA ".$k;


Suerte con la nota
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #9 (permalink)  
Antiguo 26/11/2006, 13:24
Avatar de nanomartin  
Fecha de Ingreso: mayo-2005
Ubicación: Moron - Bs As (ARG)
Mensajes: 50
Antigüedad: 18 años, 11 meses
Puntos: 0
Que grande LORD!!!

Eso es lo que quería!! :D:D:D:D

Ahora estaba avanzando un poco con otra seccion, para no quedarme parado.

En un rato lo pruebo y te cuento cómo me fue...
Millon gracias!
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:12.