Comunidad de diseño web y desarrollo en internet online

Relacionar tablas

Citar            
MensajeEscrito el 04 Jun 2008 10:12 am
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
[code

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());
}
[/code]

Por Hamwe

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Jun 2008 05:18 pm
No he entendido bien tu problema, te recomiendo que utilices los tags de code para formatear tu post y que trates de ser más conciso con tus explicaciones.

Si lo que quieres es insertar una serie de datos en dos tablas diferentes bastaría con hacer dos querys, una para cada tabla. Y si tienes problemas con recuperar el id con el que ingresaste el dato puede servirte la función mysql_insert_id()

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 05 Jun 2008 07:49 am
Lo que quiero es exactamente eso conseguir relacionar en la tabla tags el tag que le meta con el id que acabo de ingresar, ya vi por ahi que se puede lograr con la función que tu dices.

He modificado el codigo añadiendo una variable $Last id=mysql_insert_id

Código :

                  }
$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\')\";
}
 
   mysql_select_db($database_bd_contactos, $bd_contactos);
  $Result13 = mysql_query($insertSQL3, $bd_contactos) or die(mysql_error());


El problema está en cuando hago el insert en los valores que establezco que me da el siguiente fallo:

Algo está equivocado en su sintax cerca \'(\'\')\' en la linea 2

Por Hamwe

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Jun 2008 08:58 pm
Sería bueno que antes de enviar la consulta a la base de datos hicieras un echo para estar seguro de la forma en la que esta estructurada.

Por la descripción de tu error me parece que esta relacionado con el foreach que incluyes en tu código. Al parecer inserta valores dentro de paréntesis después de la consulta, pero no logro entender cual es el objetivo de hacerlo.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.