Foros del Web » Programando para Internet » PHP »

dos insert en una consulta

Estas en el tema de dos insert en una consulta en el foro de PHP en Foros del Web. Tengo una consulta Es posible hacer dos insert en una consulta , tengo un formulario que me inserta X datos estos se insertan en una ...
  #1 (permalink)  
Antiguo 25/04/2011, 06:42
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
dos insert en una consulta

Tengo una consulta

Es posible hacer dos insert en una consulta , tengo un formulario que me inserta X datos estos se insertan en una tabla , a su vez esta tabla es dependiente de otra tabla que hace la relacion de muchos a muchos .pongo el codigo de referencia si alguien me pudiese ayudar de antemano gracias .

case subeimagen:
$sql_imagen="INSERT INTO proyectos (archivo,nombreproyecto,idareaespecializacion,fech a) values('".$HTTP_POST_FILES['archivo']['name']."','".$_POST["nombreproyecto"]."','".$_POST["areaespecializacion"]."',NOW())";
$result_imagen=mysql_query($sql_imagen,$link);
//deberia ir el otro insert
$sqlx="INSERT INTO proyectosdisenador (idproyectodisenador,iddisenador,idproyecto) values('".$_POST["idproyectodisenador"]."','".$_POST["iddisenador"]."','".$_POST["idproyecto"]."',)";
$result_imagen=mysql_query($sql_imagen,$link);
///
//copia archivo en carpeta temporal
if(move_uploaded_file($_FILES['archivo']['tmp_name'],"/home/industr8/public_html/plaho/d/proyectos/".$_FILES['archivo']['name']."")){
header("location:index.php?v=misproyectos");
}
break;
  #2 (permalink)  
Antiguo 25/04/2011, 07:38
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: dos insert en una consulta

si se puede hacer pero $HTTP_POST_FILES esta descontinuado en su lugar usa $_FILES
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 25/04/2011, 07:53
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

si lo del $files lo tenia en cuenta solo que lo otro del insert no me resulta ya que intento enviar esos id del segundo query como hidden dentro de mi formulario y no pasa nada , estoy un poco confundido alguien me podria encaminar un poco .

gracias
  #4 (permalink)  
Antiguo 25/04/2011, 08:06
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: dos insert en una consulta

el problema es una coma de mas:

$sqlx="INSERT INTO proyectosdisenador (idproyectodisenador,iddisenador,idproyecto) values('".$_POST["idproyectodisenador"]."','".$_POST["iddisenador"]."','".$_POST["idproyecto"]."',)";
  #5 (permalink)  
Antiguo 25/04/2011, 08:27
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

hice la modificacion que me indicaste pero me arroja error pongo codigo de mi formulario haber si se entiende mejor

<form action="operacion.php" method="POST" enctype="multipart/form-data">
<input type="hidden" value="subeimagen" name="operacion">
<input type="hidden" name="idproyectodisenador">
<input type="hidden" name="iddisenador">
<input type="hidden" name="idproyecto">
<br>
<h5>SUBIR PROYECTOS</h5><br>
<table cellspacing="7" border="0" widht="500" bgcolor="#efeff5" class="letras">
<tr>
<td>Subir Im&aacute;gen</td>
<td><input name="archivo" type="file"></td>
</tr>
<tr>
<td>Nombre del Proyecto:</td>
<td><input type="text" name="nombreproyecto"></td>
</tr>


y este es mi archivo que ejecuta dicha accion
case subeimagen:
$sql_imagen="INSERT INTO proyectos (archivo,nombreproyecto,idareaespecializacion,fech a) values('".$HTTP_POST_FILES['archivo']['name']."','".$_POST["nombreproyecto"]."','".$_POST["areaespecializacion"]."',NOW())";
$result_imagen=mysql_query($sql_imagen,$link);

$sqlx="INSERT INTO proyectosdisenador (idproyectodisenador,iddisenador,idproyecto) values('".$_POST["idproyectodisenador"]."','".$_POST["iddisenador"]."','".$_POST["idproyecto"]."')";
$resultx=mysql_query($sqlx,$linkx);

//copia archivo en carpeta temporal
if(move_uploaded_file($_FILES['archivo']['tmp_name'],"/home/industr8/public_html/plaho/d/proyectos/".$_FILES['archivo']['name']."")){
header("location:index.php?v=misproyectos");
}
break;

Saludos .
  #6 (permalink)  
Antiguo 25/04/2011, 08:36
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: dos insert en una consulta

que tal,

el problema es que no ejecutas la segunda consulta, el nombre de la variable que tiene tu consulta es $sqlx, y en tu función estas poniendo $sql_imagen. Con el cambio la siguiente linea debería ser:

Código PHP:
Ver original
  1. mysql_query($sqlx,$link);

Saludos.

Edito: no revise tu ultimo mensaje, donde ya cambiaste eso. Cual es el error que te sale?

Última edición por quike88; 25/04/2011 a las 08:42
  #7 (permalink)  
Antiguo 25/04/2011, 08:50
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

quike88

hice el cambio como me indicaste pero solo se llena la 1 era tabla del primer query

case subeimagen:
$sql_imagen="INSERT INTO proyectos (archivo,nombreproyecto,idareaespecializacion,fech a) values('".$HTTP_POST_FILES['archivo']['name']."','".$_POST["nombreproyecto"]."','".$_POST["areaespecializacion"]."',NOW())";
$result_imagen=mysql_query($sql_imagen,$link);


$sqlx="INSERT INTO proyectosdisenador (idproyectodisenador,iddisenador,idproyecto) values('".$_POST["idproyectodisenador"]."','".$_POST["iddisenador"]."','".$_POST["idproyecto"]."')";
$resultx=mysql_query($sqlx,$link);

//copia archivo en carpeta temporal
if(move_uploaded_file($_FILES['archivo']['tmp_name'],"/home/industr8/public_html/plaho/d/proyectos/".$_FILES['archivo']['name']."")){
header("location:index.php?v=misproyectos");
}
break;

alguna idea ?
  #8 (permalink)  
Antiguo 25/04/2011, 08:58
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: dos insert en una consulta

aumenta esto a tus consultas a ver si te esta devolviendo algún error mysql

Código PHP:
Ver original
  1. $result_imagen=mysql_query($sql_imagen,$link) or die ("consulta1: ".mysql_error());
  2. $resultx=mysql_query($sqlx,$link) or die ("consulta2: ".mysql_error());
  #9 (permalink)  
Antiguo 25/04/2011, 09:10
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

gracias quikke 88

pude comprobar donde estaba el error estaba mal escrito el nombre de la tabla , efectivamente ahora inserta mi duda ahora queda en como rescato esos valores del iddisenador,idproyecto ?ya que esos valores me quedan en 0 y trato de enviarlos como hidden .

gracias por tu tiempo y atender a las consultas ..
  #10 (permalink)  
Antiguo 25/04/2011, 09:18
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: dos insert en una consulta

si te fijas tu formulario, no estas enviando valores en esos campos. con aumentarle value con los datos que requieras ya funcionaría.

<input type="hidden" name="idproyectodisenador" value="aqui el id">
<input type="hidden" name="iddisenador" value="aqui el id">
<input type="hidden" name="idproyecto" value="aqui el id">

Saludos.
  #11 (permalink)  
Antiguo 25/04/2011, 09:35
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

quikke

realice la siguiente modificación

<input type="hidden" name="iddisenador" value="<?php echo $_POST['iddisenador'];?>">
<input type="hidden" name="idproyecto" value="<?php echo $_POST['idproyecto'];?>">

pero aun asi me siguen apareciendo en 0

Saludos .
  #12 (permalink)  
Antiguo 25/04/2011, 09:52
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: dos insert en una consulta

si te sigue metiendo 0, entonces no te esta llegando ningún valor en $_POST['iddisenador'] y $_POST['idproyecto'].

Tienes un formulario anterior a este donde llenas esos datos?
  #13 (permalink)  
Antiguo 25/04/2011, 10:02
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

te muestro un poco la estructura de las tablas haber si me explico mejor

esta es la tabla que hace la relacion de que 1 disenador puede tener 1 o mas proyectos
proyectodisenador` (
`idproyectodisenador` int(255) NOT NULL auto_increment,
`iddisenador` int(255) NOT NULL,
`idproyecto` int(255) NOT NULL,
PRIMARY KEY (`idproyectodisenador`)

Esta es la tabla de los proyectos

proyectos` (
`idproyecto` int(255) NOT NULL auto_increment,
`nombreproyecto` varchar(255) NOT NULL,
`fecha` date NOT NULL,
`archivo` varchar(255) NOT NULL,
`idareaespecializacion` int(255) NOT NULL,
PRIMARY KEY (`idproyecto`)

esta es la tabla de los disenadores
disenador` (
`iddisenador` int(11) NOT NULL auto_increment,
`idareaespecializacion` int(255) NOT NULL,
`correoelectronico` varchar(255) NOT NULL,
`contrasena` varchar(255) NOT NULL,
`confirmacontrasena` varchar(255) NOT NULL,
`rut` varchar(30) NOT NULL,
`nombre` char(100) NOT NULL,
`segundonombre` text NOT NULL,
`apellidopaterno` char(100) NOT NULL,
`apellidomaterno` char(100) NOT NULL,
`fechanacimiento` varchar(100) NOT NULL,
`sexo` char(20) NOT NULL,
`nacionalidad` char(100) NOT NULL,
`direccion` varchar(255) NOT NULL,
`pais` char(100) NOT NULL,
`ciudad` char(100) NOT NULL,
`telefonofijo` varchar(30) NOT NULL,
`telefonomovil` varchar(30) NOT NULL,
`estadoacademico` char(30) NOT NULL,
`institucion` char(100) NOT NULL,
`disponibilidadtrabajo` char(30) NOT NULL,
`experiencialaboral` varchar(255) NOT NULL,
PRIMARY KEY (`iddisenador`)

te fijas que la primera tabla es la que hace la relacion de muchos a muchos

y este es el formulario donde ingreso esos datos

<form action="operacion.php" method="POST" enctype="multipart/form-data">
<input type="hidden" value="subeimagen" name="operacion">
<input type="hidden" name="iddisenador" value="<?php echo $_POST['iddisenador'];?>">
<input type="hidden" name="idproyecto" value="<?php echo $_POST['idproyecto'];?>">
<br>
<h5>SUBIR PROYECTOS</h5><br>
<table cellspacing="7" border="0" widht="500" bgcolor="#efeff5" class="letras">
<tr>
<td>Subir Im&aacute;gen</td>
<td><input name="archivo" type="file"></td>
</tr>
<tr>
<td>Nombre del Proyecto:</td>
<td><input type="text" name="nombreproyecto"></td>
</tr>
<tr>
<td>Tipo de Proyecto</td>
<td>
<SELECT NAME="areaespecializacion">
<?php
$sql="select * from areaespecializacion";
$resultado=mysql_query($sql,$link)or die(mysql_error());
while($row = mysql_fetch_array($resultado)) {
$idareaespecializacion=$row["idareaespecializacion"];
$areaespecializacion=$row["areaespecializacion"];

echo"<option value=$idareaespecializacion>$areaespecializacion</option>";

}
?>
</SELECT></td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
<tr>
<td></td>
<td valign="center"><input type="submit" value="Subir Proyecto" class="botones" /></td>
</tr>
</table>
</form>


Espero halla sido un poco mas claro


gracias ..
  #14 (permalink)  
Antiguo 25/04/2011, 10:37
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: dos insert en una consulta

el problema es que estas usando $_POST['iddisenador'] en tu formulario como si enviaras las variables desde una pagina anterior por el método POST.

de donde obtienes esos valores?
  #15 (permalink)  
Antiguo 25/04/2011, 11:01
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

el problema es ese que no se de donde debo tomar esos valores porque esa tabla la puse para poder hacer la relacion de que "1 disenador puede tener uno o muchos proyectos " ahi esta mi duda por eso intente enviarlos como hidden ?
??
  #16 (permalink)  
Antiguo 25/04/2011, 12:11
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: dos insert en una consulta

perdona matt_1985 pero podrías postear como tienes de nuevo actualmente ambos inserts?

o sea esta parte:

Cita:
case subeimagen:
$sql_imagen="INSERT INTO proyectos (archivo,nombreproyecto,idareaespecializacion,fech a) values('".$HTTP_POST_FILES['archivo']['name']."','".$_POST["nombreproyecto"]."','".$_POST["areaespecializacion"]."',NOW())";
$result_imagen=mysql_query($sql_imagen,$link);


$sqlx="INSERT INTO proyectosdisenador (idproyectodisenador,iddisenador,idproyecto) values('".$_POST["idproyectodisenador"]."','".$_POST["iddisenador"]."','".$_POST["idproyecto"]."')";
$resultx=mysql_query($sqlx,$link);

//copia archivo en carpeta temporal
if(move_uploaded_file($_FILES['archivo']['tmp_name'],"/home/industr8/public_html/plaho/d/proyectos/".$_FILES['archivo']['name']."")){
header("location:index.php?v=misproyectos");
}
break;
por que veo varios detalles...

Última edición por stramin; 25/04/2011 a las 12:17
  #17 (permalink)  
Antiguo 25/04/2011, 12:18
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

si no ahi problema aunque los insert los esta haciendo (era el nombre de la tabla el problema),pero el problema que tengo ahora es el que indico anteriormente .

case subeimagen:
$sql_imagen="INSERT INTO proyectos (archivo,nombreproyecto,idareaespecializacion,fech a) values('".$HTTP_POST_FILES['archivo']['name']."','".$_POST["nombreproyecto"]."','".$_POST["areaespecializacion"]."',NOW())";
//$result_imagen=mysql_query($sql_imagen,$link);
$result_imagen=mysql_query($sql_imagen,$link) or die ("consulta1: ".mysql_error());

$sqlx="INSERT INTO proyectodisenador (idproyectodisenador,iddisenador,idproyecto) values('".$_POST["idproyectodisenador"]."','".$_POST["iddisenador"]."','".$_POST["idproyecto"]."')";
//$resultx=mysql_query($sqlx,$link);
$resultx=mysql_query($sqlx,$link) or die ("consulta2: ".mysql_error());

//copia archivo en carpeta temporal
if(move_uploaded_file($_FILES['archivo']['tmp_name'],"/home/industr8/public_html/plaho/d/proyectos/".$_FILES['archivo']['name']."")){
header("location:index.php?v=misproyectos");
}
break;


Saludos
  #18 (permalink)  
Antiguo 25/04/2011, 12:26
Avatar de Unxky28  
Fecha de Ingreso: marzo-2006
Mensajes: 82
Antigüedad: 18 años
Puntos: 1
Respuesta: dos insert en una consulta

matt_1985,

Antes que nada un saludo,

1: Antes de colocar tu codigo ponlo en lo tags que te da el editor de está manera:
Código PHP:
Ver original
  1. <?php print("Codigo PHP "); ?>

Porque en la forma en lo posteas se ve defasto.

2: Sobre tu problema, haz una consulta antes para recuperar los Id´s de ambos y asi lo colocas en tu formulario de hidden. Saludos.
__________________
El Futuro esta en Tus Manos...
  #19 (permalink)  
Antiguo 25/04/2011, 12:28
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: dos insert en una consulta

ok, entonces no les estas enviando valores, estas leyendo un $_POST que no existe, me explico:

en el formulario tienes estos 2 campos invisibles:

<input type="hidden" name="iddisenador" value="<?php echo $_POST['iddisenador'];?>">
<input type="hidden" name="idproyecto" value="<?php echo $_POST['idproyecto'];?>">

ambos están vacíos por que según se ve, aún no has hecho envío de formularios si no me equivoco, por lo tanto debes poner valores aquí, para asegurarte que tengan valores ve el código fuente de esa parte de la página.

Por otro lado el insert esta intentando insertar la id del registro (idproyectodisenador) la cual es autoincremento por lo tanto no debes insertarla, borrala de ambos lados del insert, así:

$sqlx="INSERT INTO proyectosdisenador (iddisenador,idproyecto) values('".$_POST["iddisenador"]."','".$_POST["idproyecto"]."')";

de modo que solo insertes 2 campos
  #20 (permalink)  
Antiguo 25/04/2011, 12:40
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: dos insert en una consulta

ok Unxky28 y stramin entiendo voy a hacer lo que me indican , saludos y gracias por su tiempo .

Etiquetas: insert
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:13.