Foros del Web » Programando para Internet » PHP »

Hacer un insert a dos tablas a la vez

Estas en el tema de Hacer un insert a dos tablas a la vez en el foro de PHP en Foros del Web. Cordial saludo!!! Quiero hacer una consulta hay dos tablas que tienen los mismos campos, la misma estructura, la cual hay un campo llamado sala y ...
  #1 (permalink)  
Antiguo 22/09/2009, 15:15
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Sonrisa Hacer un insert a dos tablas a la vez

Cordial saludo!!!
Quiero hacer una consulta hay dos tablas que tienen los mismos campos, la misma estructura, la cual hay un campo llamado sala y quiero que al escoger la sala de sistemas tambien me guarde esos mismos campos en otra tabla.

Ejemplo: Estoy llenando los campos de un formulario y cuando vaya a guardar o hacer el insert pregunte si ese campo es igual a sistemas entonces me guarde esos mismos datos de ese formulario que se guardan en la tabla X para que me los guarde tambien en la tabla Y.

Gracias
  #2 (permalink)  
Antiguo 22/09/2009, 15:28
 
Fecha de Ingreso: octubre-2007
Ubicación: Capital Federal
Mensajes: 215
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Hacer un insert a dos tablas a la vez

Hola...

IF ($_POST['sala'] == "sistemas")
{
// insert into tabla1......
// insert into tabla2......
}
  #3 (permalink)  
Antiguo 22/09/2009, 15:34
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Hacer un insert a dos tablas a la vez

No me genera problema tener dos insert seguidos?, gracias por tu aporte
  #4 (permalink)  
Antiguo 22/09/2009, 15:52
 
Fecha de Ingreso: octubre-2007
Ubicación: Capital Federal
Mensajes: 215
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Hacer un insert a dos tablas a la vez

Ninguno.

Si por alguna extraña razón no te tomara el 2do insert... cambiale la variable:

// insert 1
$result=mysql_query("insert.......

// insert 2
$result2=mysql_query("insert.......


Saludos.
  #5 (permalink)  
Antiguo 25/09/2009, 13:30
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Hacer un insert a dos tablas a la vez

Tengo un problema no me hace el insert en ninguna tabla:

Mira tengo este codigo:

$vbeam = isset($_POST['vbeam'])? 1: 0; // estado del check, envia 1 si esta visible o 0 si no lo esta a la bd
$sql = "insert into neiva(reserva,fecha,horaini,horafin,sala,videobeam ,responsable,evento) values('1','$fecha','$horaini','$horafin','$sala', '$vbeam','$responsable','$evento')";
$res = query($sql);
if($res){
echo "Evento grabado";
redireccionar('3','mostrar.php');
}else{
echo "Error al grabar evento: ".mysql_error($res);
}
desconectar($conexion);
}else{
?>
  #6 (permalink)  
Antiguo 25/09/2009, 14:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Hacer un insert a dos tablas a la vez

$res = mysql_query($sql);

saludos
__________________
...___...
  #7 (permalink)  
Antiguo 25/09/2009, 14:56
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Información Respuesta: Hacer un insert a dos tablas a la vez

Ok, listo, pero para los dos insert en tablas diferentes....

IF ($_POST['sala'] == "Gerencia")
{
$sql = "insert into neiva(reserva,fecha,horaini,horafin,sala,videobeam ,responsable,evento) values('1','$fecha','$horaini','$horafin','$sala', '$vbeam','$responsable','$evento')";
$sql = "insert into bogota(reserva,fecha,horaini,horafin,sala,videobea m,responsable,evento) values('1','$fecha','$horaini','$horafin','$sala', '$vbeam','$responsable','$evento')";
}
$res = mysql_query($sql);
if($res){
echo "Evento grabado";
redireccionar('3','mostrar.php');
}else{
echo "Error al grabar evento: ".mysql_error($res);
}
desconectar($conexion);
}else{
?>
  #8 (permalink)  
Antiguo 29/09/2009, 08:39
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Información Respuesta: Hacer un insert a dos tablas a la vez

Hola que tal, este insert no me esta ejecutando en ninguna de las dos tablas... alguien me puede colaborar.
  #9 (permalink)  
Antiguo 29/09/2009, 08:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Hacer un insert a dos tablas a la vez

Te bota algún error?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #10 (permalink)  
Antiguo 30/09/2009, 09:50
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Información Respuesta: Hacer un insert a dos tablas a la vez

No, no genera nada, hace como si los insertara pero no lo hace...
  #11 (permalink)  
Antiguo 30/09/2009, 10:29
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Hacer un insert a dos tablas a la vez

inglus... pero te imprime el echo de evento grabado?

Cuando aplicas el segundo $sql se sobreescribe la variable unicamente con el segundo insert.


Prueba esto:
Código php:
Ver original
  1. echo "Evento grabado ".$sql;
y dinos que imprime la variable.

Para que los insert se ejecuten lo mas rapido posible, te recomendaría un trigger desde mysql que inserte los mismos valores en una tabla al momento de insertar en la otra.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #12 (permalink)  
Antiguo 01/10/2009, 07:29
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Información Respuesta: Hacer un insert a dos tablas a la vez

El codigo esta de esta menera:

IF ($_POST['sala'] == "Gerencia")
{
$sql = "insert into neiva(reserva,fecha,horaini,horafin,sala,videobeam ,responsable,evento) values('1','$fecha','$horaini','$horafin','$sala', '$vbeam','$responsable','$evento')";
$sql = "insert into bogota(reserva,fecha,horaini,horafin,sala,videobea m,responsable,evento) values('1','$fecha','$horaini','$horafin','Sala Grande(14P)--1701','$vbeam','$responsable','$evento')";
}
echo"evento grabado".$sql;
$res = mysql_query($sql);
if($res){
echo "Evento grabado";
redireccionar('3','mostrar.php');
}else{
echo "Error al grabar evento: ".mysql_error($res);
}
desconectar($conexion);
}else{
?>
  #13 (permalink)  
Antiguo 01/10/2009, 07:31
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Hacer un insert a dos tablas a la vez

No mu8estra nada la variable $sql o nisiquiera los mensajes que pones a imprimir?

si está entrando a este if? IF ($_POST['sala'] == "Gerencia")
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #14 (permalink)  
Antiguo 01/10/2009, 07:34
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Información Respuesta: Hacer un insert a dos tablas a la vez

no nada, muestra de nuevo el formulario donde estoy capturando los datos... no sale nungun mensaje de error
  #15 (permalink)  
Antiguo 01/10/2009, 07:39
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Hacer un insert a dos tablas a la vez

Me imagino que el action del form está direccionandose a si mismo.

Y No estas recogiendo correctamente del formulario el campo llamado sala.
Tenes un botón que tenga en el name=sala y como el valor sea value=gerencia?

Parece que ni estas mandando está variable para entrar a operar dentro del if.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #16 (permalink)  
Antiguo 01/10/2009, 07:40
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Información Respuesta: Hacer un insert a dos tablas a la vez

Bueno este es todo el codigo completo, con el formulario incluido:

<html>
<link href="estilo.css" rel="stylesheet" type="text/css">
<?php
include_once("funciones.php");
$fecha = $_POST['fecha'];
$horaini = $_POST['horaini'];
$horafin = $_POST['horafin'];
$sala = $_POST['sala'];
$vbeam = $_POST['vbeam'];
$responsable = $_POST['responsable'];
$evento = $_POST['evento'];
if($fecha != "" && $horaini != "" && $horafin != "" && $sala != "" && $vbeam != "" && $responsable != "" && $evento != ""){
$conexion = conectar();
$vbeam = isset($_POST['vbeam'])? 1: 0; // estado del check, envia 1 si esta visible o 0 si no lo esta a la bd
IF ($_POST['sala'] == "Gerencia")
{
$sql = "insert into neiva(reserva,fecha,horaini,horafin,sala,videobeam ,responsable,evento) values('1','$fecha','$horaini','$horafin','$sala', '$vbeam','$responsable','$evento')";
$sql = "insert into bogota(reserva,fecha,horaini,horafin,sala,videobea m,responsable,evento) values('1','$fecha','$horaini','$horafin','Sala Grande(14P)--1701','$vbeam','$responsable','$evento')";
}
echo"evento grabado".$sql;
$res = mysql_query($sql);
if($res){
echo "Evento grabado";
redireccionar('3','mostrar.php');
}else{
echo "Error al grabar evento: ".mysql_error($res);
}
desconectar($conexion);
}else{
?>

<style type="text/css">
<!--
.Estilo20 { font-size: 9px;
font-weight: bold;
}
.Estilo21 {
color: #CC0000;
font-weight: bold;
font-style: italic;
}
-->
</style>
<form action="agregar.php" method="post" name="f1">
<table border=0 cellspacing="0">
<tr><td colspan="2"><span class="Estilo21">[AGREGAR EVENTO]</span></td></tr>
<tr><td>Fecha</td><td><input type="text" name="fecha" value='<? echo date("Y-m-d"); ?>'<i>Por favor respete el formato</i></td></tr>
<tr><td valign="TOP"><div align="left">
<p>Hora Inicio </p>
<p>Hora Final </p>
</div></td><td><p>
<input name="horaini" type="text" value="HH:MM:SS" />
</p>
<p>
<input name="horafin" type="text" value="HH:MM:SS" />
</p></td></tr>
<tr><td align="center"><div align="left">Sala</div></td>
<td align="center"><div align="left"><span class="Estilo20">
<select name="sala">
<option>--Seleccione--</option>
<option value="Contabilidad">Contabilidad</option>
<option value="Recursos Humanos">Recursos Humanos</option>
<option value="Auditorio">Auditorio</option>
<option value="Gerencia">Gerencia</option>
</select>
</span></div></td>
</tr>
<tr>
<td align="center"><div align="left">Video Beam
</div></td>
<td align="center"><div align="left">
<input type="checkbox" name="vbeam" value="checkbox">
</div></td>
</tr>
<tr>
<td align="center"><div align="left">Responsable
</div></td>
<td align="center"><div align="left">
<input name="responsable" type="text" size="40" maxlength="40" />
</div></td>
</tr>
<tr>
<td align="center">Observaciones</td>
<td align="center"><div align="left">
<textarea rows="5" cols="20" name="evento"></textarea>
</div></td>
</tr>
<tr>
<td colspan="2" align="center"><input name="submit" type="submit" value="Enviar" /></td>
</tr>
</table>
</form>

<?
}
?>
</html>
  #17 (permalink)  
Antiguo 01/10/2009, 07:50
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Hacer un insert a dos tablas a la vez

asumiendo que el contenido de agregar.php es este que pones, debes hacer impresiones de las variables para saber si entran o no a los ifs.

Código php:
Ver original
  1. <?php
  2. include_once("funciones.php");
  3. $fecha = $_POST['fecha'];
  4. $horaini = $_POST['horaini'];
  5. $horafin = $_POST['horafin'];
  6. $sala = $_POST['sala'];
  7. $vbeam = $_POST['vbeam'];
  8. $responsable = $_POST['responsable'];
  9. $evento = $_POST['evento'];
  10. echo "las variables son: ".$fecha." ".$horaini." ".$horafin." ".$sala etc;

Si están todas llenas, entrarán al if sin problema.

Analiza paso por paso y detecta en que parte tienes problemas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #18 (permalink)  
Antiguo 01/10/2009, 08:17
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
Información Respuesta: Hacer un insert a dos tablas a la vez

No logro entenderte, si lo hago con un solo insert si me agrega pero cuando son con dos no hace nada.. ademas se insertan valores en tablas distintas
  #19 (permalink)  
Antiguo 01/10/2009, 08:20
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Hacer un insert a dos tablas a la vez

entonces haz esto:

Código php:
Ver original
  1. IF ($_POST['sala'] == "Gerencia")
  2. {
  3. $sql = "insert into neiva(reserva,fecha,horaini,horafin,sala,videobeam ,responsable,evento) values('1','$fecha','$horaini','$horafin','$sala', '$vbeam','$responsable','$evento')";
  4. $sql2 = "insert into bogota(reserva,fecha,horaini,horafin,sala,videobea m,responsable,evento) values('1','$fecha','$horaini','$horafin','Sala Grande(14P)--1701','$vbeam','$responsable','$evento')";
  5. }
  6. echo"evento grabado".$sql;
  7. $res = mysql_query($sql);
  8. $res = mysql_query($sql2);
  9. if($res){
  10. echo "Evento grabado";
  11. redireccionar('3','mostrar.php');
  12. }else{
  13. echo "Error al grabar evento: ".mysql_error($res);
  14. }
  15. desconectar($conexion);
  16. }else{

sobreescribes la variable $sql antes de ejecutarla.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #20 (permalink)  
Antiguo 01/10/2009, 08:44
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Hacer un insert a dos tablas a la vez

Ok, perfecto, eres muy amable...
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:13.