Foros del Web » Programando para Internet » PHP »

Relacionar campos de 2 tablas distintas

Estas en el tema de Relacionar campos de 2 tablas distintas en el foro de PHP en Foros del Web. Hola ete tema lo plantee en la seccion de base de datos pero me di cuenta que en realidad el problema lo tengo en el ...
  #1 (permalink)  
Antiguo 18/09/2008, 23:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Relacionar campos de 2 tablas distintas

Hola ete tema lo plantee en la seccion de base de datos pero me di cuenta que en realidad el problema lo tengo en el php por lo que decidi plantear nuevamente el problama que tengo pero en esta seccion del foro, pido disculpa a los administradores del foro y espero no causar inconvenientes.

Paso a explicar el problema que tengo:

Son 2 tablas en una base de datos.
Tabla 1 contiene 2 capos: IDT1 Y ESTADOT1
Tabla 2 contiene 1 campo: IDT2

Supongamos que la tabla 1 ya tiene ingresados los siguientes datos:
IDT1 ESTADOT1
1 ok
2 ok
3 ok
4 ok

Tabla 2 no tiene datos todavia.
A la misma le asigno datos mediante un formulario html, este los envia a un php el cual se conecta a la base de datos e inserta el dato ingresado en la tabla 2 en el campo IDT2. mediatne el siguiente codigo (aclaro que no esta completo dejo una parte para que se pueda entender mejor):


Código:
$id_1  = $_GET["ID2"]; //Dato enviado desde el html.
$sql  = "INSERT INTO tabla2 ($id_1)"; 		
 $sql .= "VALUES ('$IDT2')"; //inserto el dato ingresado en la tabla2 en el campo IDT2
Logicamente esto lo que hace es insertar un dato ingresado en el campo de la tabla.

Hasta ahi todo bien, el tema es que yo cuando ingreso esa id la cual tiene que ser igual a alguna de las id de la tabla1
supongampos que el dato ingresado es 4, lo que busco es que en la TABLA1 en la ID con el dato 4 cambie ESTADOT1 a por ejemplo a "no" o sea que quede algo asi:

IDT1 ESTADOT1
1 ok
2 ok
3 ok
4 no

Espero que se entienda la idea y que alguien me pueda dar una mano.
  #2 (permalink)  
Antiguo 19/09/2008, 04:55
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 19 años
Puntos: 0
Respuesta: Relacionar campos de 2 tablas distintas

Al insertar en la Tabla2, actualiza en ese momento la Tabla1, buscando por el valor enviado desde el formulario y buscando por el IDT1

Código PHP:
$sql  "UPDATE tabla1 set ESTADOT1 = 'no' WHERE IDT1=".$_GET["ID2"]; 
A ver que tal.
__________________
Saludos!

Última edición por lanceusp; 19/09/2008 a las 04:56 Razón: Me faltaba unas comillas.
  #3 (permalink)  
Antiguo 19/09/2008, 07:26
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Relacionar campos de 2 tablas distintas

Cita:
Iniciado por lanceusp Ver Mensaje
Al insertar en la Tabla2, actualiza en ese momento la Tabla1, buscando por el valor enviado desde el formulario y buscando por el IDT1

Código PHP:
$sql  "UPDATE tabla1 set ESTADOT1 = 'no' WHERE IDT1=".$_GET["ID2"]; 
A ver que tal.
Hola gracias! ahora lo pruebo y aviso. Pregunta: En la base de datos tengo que hacer algo a los campos? Porque me habian comentado algo de primary key o algo asi. Utilizo mysql front 2.5
  #4 (permalink)  
Antiguo 19/09/2008, 07:49
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Relacionar campos de 2 tablas distintas

lanceusp probe el codigo que me diste y me funciono pero solo colocando ese codigo solo ahora yo como tambien necesito hacer un insert en la tabla2 al mismo tiempo que un update en la tabla 1 no me funciono dejo parte del codigo para que se vea lo que hice.

Código PHP:
<?php

// realizo conexion a la base de datos

// tomo los datos enviados por el formulario y los coloco en variables.

    
$Id1 $_GET["ID1"];         

   
$sql  "INSERT INTO TABLA2 (IDT2)";            
   
$sql .= "VALUES ('$Id1')";
   
$sql .= "UPDATE TABLA1 SET ESTADOT1 = 'no' WHERE IDT1 = $Id1";     
   
$res mysql_query($sql,$Conex);                        
?>
Si coloco solo el insert sin la parte de update me realiza el insert sin problema lo mismo si coloco el update sin el insert me funciona lo mas bien ahora estando los dos juntos no realiza ni el insert ni el update.
  #5 (permalink)  
Antiguo 19/09/2008, 11:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Relacionar campos de 2 tablas distintas

Bueno no se como pero solita se me ocurrio una idea y probe y me funciono no se si estara bien la forma de hacerlo pero bueno..

Código PHP:
<?php 

// realizo conexion a la base de datos 

// tomo los datos enviados por el formulario y los coloco en variables. 

    
$Id1 $_GET["ID1"];          

   
$sql  "INSERT INTO TABLA2 (IDT2)";             
   
$sql .= "VALUES ('$Id1')"
   
$sql2 .= "UPDATE TABLA1 SET ESTADOT1 = 'no' WHERE IDT1 = $Id1";      
   
$res mysql_query($sql,$Conex);
   
$res2 mysql_query($sql2,$Conex);                           
?>

Ahora quiero lograr colocar mensajes de errores la idea seria que si la id ingresada ya esta en la tabla1 como "no" no se pueda realizar el insert ni el update o sea que solo se pueda hacer esto para cuando ESTADOT1 de la TABLA1 este en "libre". Se me ocurrio con un if pero no se como tomar los datos de la tabla1 para saber si esta en "libre" o en "no"


Código PHP:
<?php 

   $Id1 
$_GET["ID1"];          
   
$estado "SELECT * FROM TABLA1 WHERE IDT1 = $Id1";
   if (
$estado=='libre'){
   
$sql  "INSERT INTO TABLA2 (IDT2)";             
   
$sql .= "VALUES ('$Id1')"
   
$sql2 "UPDATE TABLA1 SET ESTADOT1 = 'no' WHERE IDT1 = $Id1";      
   
$res mysql_query($sql,$Conex);
   
$res2 mysql_query($sql2,$Conex);  
   
$mensaje "datos insertados";

else {
   
$mensaje "la id ingresada se encuentra no disponible";
}      

echo 
"$mensaje";                
?>
Mi problema creo que radica en
Código PHP:
 $estado "SELECT * FROM TABLA1 WHERE IDT1 = $Id1 
Dado a que aca lo que hago es ponerle a $estado el valor del campo IDT1 que correspone al del dato ingresado en $Id ... creo

Saludos. y gracias
  #6 (permalink)  
Antiguo 20/09/2008, 10:39
 
Fecha de Ingreso: septiembre-2008
Mensajes: 8
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Relacionar campos de 2 tablas distintas

Estuve buscando hacer lo que necesitaba de una forma mas facil pero la verdad que no pude lograr pensar en nada vuelvo a plantear lo que estoy buscando hacer para ver si alguien me puede ayudar porque ya estoy entrando en un estado de crisis

TABLA1 campos: "IDT1" "ESTADOT1"
TABLA2 capos: "IDT2"

TABLA1 datos ya insertados:

IDT1 ESTADOT1
1 libre
2 libre
3 libre


IDT2
1
2
3


Código PHP:
<?php  

// realizo conexion a la base de datos  

// tomo los datos enviados por el formulario y los coloco en variables.  

   
$Id $_GET["ID"];           
   
$sql  "INSERT INTO TABLA2 (IDT2)";              
   
$sql .= "VALUES ('$Id1')";  
   
$sql2 .= "UPDATE TABLA1 SET ESTADOT1 = 'no' WHERE IDT1 = $Id";       
   
$res mysql_query($sql,$Conex); 
   
$res2 mysql_query($sql2,$Conex);                            
?>
Yo lo que busco hacer es lo siguiente:

Ingreso por ejemplo el numero 3 en mi formulario presiono el boton submit
y ahi mi php tiene que fijarse si ese numero ingresado se encuentra en la TABLA1
Si no se encuentra me tiene que dar error, luego si este numero si esta en la TABLA1 pero el ESTADOT1 que le corresponde esta en "no" tambien debe dar error y no permitir hacer el INSERT. Osea solo puedo hacer el insert en la TABLA2 cuando el numero ingresadoa se encuentra en la TABLA1 y con estado "libre"

Ejemlo:

Datos en la tabla en primera instancia:

IDT1 ESTADOT1
1 libre
2 libre
3 no


IDT2 (vacio)


1) ingreso numero 2 presiono submit:
mensaje: "Datos insertados"
Mi tabla pasa a quedar asi:

IDT1 ESTADOT1
1 libre
2 no
3 no


IDT2
2

2) ingreso numero 4 presiono submit:
mensaje: "ID no encontrada"
no se realiza insert la tabla se mantiene igual que en el caso 1


3) ingreso numero 3 presiono submit:
mensaje: "el estado de la id no esta libre"
no se realiza insert la tabla se mantiene igual que en el caso 1

Bueno espero que se pueda entender la idea yo si tuviera mas conocimientos podria pensarlo sola pero no es el caso por eso necesito ayuda ya que esto es importante para mi

ojala que alguien me de una mano
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 01:24.