Foros del Web » Programando para Internet » PHP »

Relacionar 2 tablas

Estas en el tema de Relacionar 2 tablas en el foro de PHP en Foros del Web. Hola buenas, tengo un formulario en el cual ingreso una serie de datos de un contacto en la base de datos, los datos insertados van ...
  #1 (permalink)  
Antiguo 04/06/2008, 04:17
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 0
Relacionar 2 tablas

Hola buenas, tengo un formulario en el cual ingreso una serie de datos de un contacto en la base de datos, los datos insertados van a 2 tablas distinta la información personal va a la tabla personas y luego hay el campo tags y tipo de tag que van a la tabla tags.
Mi problema es que quiero conseguir relacionar la id del contacto con el tag metido es decir

Yo creo el contacto "Juan Sanchez" le ingreso todos su datos (tlf, direccion etc...) le meto un tag "Arquitecto" y un tipo de tag "Persona". Y quiero que cuando le de a enviar el formulario en la tabla personas se me haya ingresado con la id X el nuevo contacto Juan Sanchez y en la tabla tags con la id X se me haya ingresado Arquitecto - Persona - Id Juan Sanchez.

Este es el codigo que tengo, está mal pq no tengo ni idea de como va el error es algo está equivocado en el sintax

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL sprintf("INSERT INTO persoas (cod_prsa, cod_nme, cod_aplds, txt_nome_aclme, txt_aplds_aclme, txt_tlfno_trbllo, txt_tlfno_dmclo, txt_tlfno_mbl, txt_fx, cod_crro_1, cod_crro_2, cod_url, cod_ra, cod_nmr_ra, cod_nmr_pso, cod_endrzo_info_pls, cod_cp, cod_pblcn, cod_prvnca, cod_pis) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['cod_prsa'], "int"),
GetSQLValueString($_POST['cod_nme'], "text"),
GetSQLValueString($_POST['cod_aplds'], "text"),
GetSQLValueString($_POST['txt_nome_aclme'], "text"),
GetSQLValueString($_POST['txt_aplds_aclme'], "text"),
GetSQLValueString($_POST['txt_tlfno_trbllo'], "text"),
GetSQLValueString($_POST['txt_tlfno_dmclo'], "text"),
GetSQLValueString($_POST['txt_tlfno_mbl'], "text"),
GetSQLValueString($_POST['txt_fx'], "text"),
GetSQLValueString($_POST['cod_crro_1'], "text"),
GetSQLValueString($_POST['cod_crro_2'], "text"),
GetSQLValueString($_POST['cod_url'], "text"),
GetSQLValueString($_POST['cod_ra'], "text"),
GetSQLValueString($_POST['cod_nmr_ra'], "text"),
GetSQLValueString($_POST['cod_nmr_pso'], "text"),
GetSQLValueString($_POST['cod_endrzo_info_pls'], "text"),
GetSQLValueString($_POST['cod_cp'], "text"),
GetSQLValueString($_POST['cod_pblcn'], "text"),
GetSQLValueString($_POST['cod_prvnca'], "text"),
GetSQLValueString($_POST['cod_pis'], "text"));
mysql_select_db($database_bd_contactos$bd_contactos);
$Result1 mysql_query($insertSQL$bd_contactos) or die(mysql_error());
}
if (
$tags = isset($_POST["txt_tag"]) ? $_POST["txt_tag"] : false); {
$tags explode(","$tags);
$insertSQL2 "insert into tags (txt_tag) values \n";
$contador 0;
foreach(
$tags as $item){
if(
$contador$insertSQL2 .= ", ";
$contador++;
$insertSQL2 .= "\n('$item')";
}

mysql_select_db($database_bd_contactos$bd_contactos);
$Result12 mysql_query($insertSQL2$bd_contactos) or die(mysql_error());
}
if (
$tags2 = isset($_POST["tpo_tag"]) ? $_POST["tpo_tag"] : false); {
$tags2 explode(","$tags2);
$insertSQL3 "insert into tags (tpo_tag,cod_tpo_tag,cod_itm) values (\n,persoa,cod_prsa)";
$contador 0;
foreach(
$tags2 as $item){
if(
$contador$insertSQL3 .= ", ";
$contador++;
$insertSQL3 .= "\n('$item')";
}

mysql_select_db($database_bd_contactos$bd_contactos);
$Result13 mysql_query($insertSQL3$bd_contactos) or die(mysql_error());

  #2 (permalink)  
Antiguo 04/06/2008, 04:36
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Relacionar 2 tablas

hola

primero, antes de hacer el insert, deberias de hacer una consulta tipo SELECT para extraer de la BD el ID que te interesa y despues insertarlo en la tabla TAGS
  #3 (permalink)  
Antiguo 04/06/2008, 05:03
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 0
Respuesta: Relacionar 2 tablas

Hola gracias por contestar.

Pero el id no está en la base de datos, el id se introduce nuevo y quiero relacionarlo con el tag y tipo que le meta. vamos que es un nuevo registro
  #4 (permalink)  
Antiguo 04/06/2008, 05:13
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Relacionar 2 tablas

si es un nuevo registro, deberias de tener un campo ID autoincrement que te diga que ese registro nuevo es el nº 6, por ejemplo, i ese id lo extraes con una consulta a esa tabla y lo insertas en la otra, es a si como se relacionan dos tablas

tabla1---> ID_PERSONA (autoincrement), nombre, apellidos............
tabla2---> ID_TAGS (autoincrement), datos,datos,............, ID_PERSONA

Esta es la idea

Un saludo
  #5 (permalink)  
Antiguo 05/06/2008, 01:59
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 0
Respuesta: Relacionar 2 tablas

Probé lo siguiente.

Leí por ahi que con la funcion mysql_insert_id se podía sacar elúltimo id insertado asi que cree dicha variable

Código PHP:
$last_id mysql_insert_id();
if (
$tags2 = isset($_POST["tpo_tag"]) ? $_POST["tpo_tag"] : false); {               
   
$tags2 explode(","$tags2);
 
$insertSQL3 "insert into tags (tpo_tag,cod_tpo_obxcto,cod_itm) values ('\n','e','$last_id')";
$contador 0;
foreach(
$tags2 as $item){
    if(
$contador)  $insertSQL3 .= ", ";
    
$contador++;
    
$insertSQL3 .= "\n('$item')"
Pero da fallo
Algo está equivocado en su sintax cerca '('')' en la linea 2

tpo_tag se saca del formulario, cod_tpo_obxcto es un valor establecido por mi "e" y cod_item es a quien le establezco la variable del ultimo id pero algo peta, alguién sabe porque?
  #6 (permalink)  
Antiguo 05/06/2008, 04:14
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Relacionar 2 tablas

aqui en los value del SQL

values ('\n','e','$last_id')";

no se si esos son valores validos para una sentencia SQL
  #7 (permalink)  
Antiguo 05/06/2008, 04:33
 
Fecha de Ingreso: abril-2008
Mensajes: 70
Antigüedad: 16 años
Puntos: 0
Respuesta: Relacionar 2 tablas

Si, creo que el fallo está en los valores. El valor \n creo que es el que hace petar.
En Tpo_tag hago un explode que corta la cadena y me inserta en la base de datos diferentes palabras que le meta cada una con su id por eso tiene q tener valor \n .

La variable $last_id' me la está reconociendo pq le acabo de meter un echo y me representa el valor autoincrement
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 04:00.