Foros del Web » Programando para Internet » PHP »

Se podría hacer un INSERT...WHERE ???

Estas en el tema de Se podría hacer un INSERT...WHERE ??? en el foro de PHP en Foros del Web. Buenas. Se puede insertar en una tabla con la clausula where??? Al igual que se puede hacer un SELECT....WHERE.... Se podría hacer un INSERT...WHERE....???? Si ...
  #1 (permalink)  
Antiguo 11/11/2009, 11:02
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Se podría hacer un INSERT...WHERE ???

Buenas. Se puede insertar en una tabla con la clausula where???

Al igual que se puede hacer un SELECT....WHERE....

Se podría hacer un INSERT...WHERE....????


Si es posible como sería la sintaxis?

Gracias
  #2 (permalink)  
Antiguo 11/11/2009, 11:03
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Se podría hacer un INSERT...WHERE ???

:S lo que necesitas es UPDATE no INSERT
  #3 (permalink)  
Antiguo 11/11/2009, 11:05
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Se podría hacer un INSERT...WHERE ???

Man cuál es tu problema de php?

Te aconsejo que vayas al foro del respectivo motor de Base de Datos que estés manejando.


Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #4 (permalink)  
Antiguo 11/11/2009, 11:16
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

Os cuento un poco y gracias por la rapidez de sus respuestas, no me lo esperaba.

Resulta que tengo un desplegable con 100 empresas, yo elijo la que quiero y pulso aceptar. Seguidamente se me abre un menu donde yo puedo elegir la opción de consultar los datos de la empresa elegida (en el desplegable). Pues bien...yo si se hacer eso...una SELECT que segun la empresa elegida en el desplegable me muestre todos sus datos.

Ahora bien...el problema está en que quiero hacer un gestor de tareas. Cuando yo selecciono la empresa en el desplegable, nuevamente se me vuelve a abrir el menu con la opcion de gestor de tareas. Al pulsar en gestor de tareas puedo añadir nuevas tareas, pero claro...no se como puedo hacer un INSERT teniendo en cuenta la empresa elegida. Se me guardan todos los datos en base de datos excepto el identificador de la empresa elegida (que siempre se guarda como cero) y eso no es correcto.

No se si me entendeis jeje.

Para que lo veáis mas claro os pongo el código de la SELECT que funciona al pelo caramelo.

Cita:
$sql = "SELECT id_soci,nombre,cif,domicilio) FROM sociedades WHERE id_soci=".$ruta;
Os informo que $ruta lo he rescatado del la emrpesa que yo seleccioné en el desplegable.

Pues me gustaría hacer lo mismo pero con un INSERT, es decir, que me tenga en cuenta la empresa que yo he seleccionado en el desplegable como en la SELECT.
  #5 (permalink)  
Antiguo 11/11/2009, 11:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Se podría hacer un INSERT...WHERE ???

En ese caso, se supone que algún campo de la tabla tareas está relacionado con la tabla de empresas. Sólo tienes que insertar el dato en el campo correspondiente:
Código MySQL:
Ver original
  1. INSERT INTO tareas (id_empresa, ...) VALUES ('$id_empresa', ...);
Donde tienes en $id_empresa la empresa seleccionada.

No existe (y no tiene mucho sentido) un "INSERT... WHERE"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 11/11/2009, 11:23
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Se podría hacer un INSERT...WHERE ???

$sql = mysql_query("SELECT id_soci,nombre,cif,domicilio FROM sociedades WHERE id_soci='$ruta'");
^^
  #7 (permalink)  
Antiguo 11/11/2009, 11:23
Avatar de dcreate  
Fecha de Ingreso: octubre-2009
Ubicación: Veracruz
Mensajes: 536
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: Se podría hacer un INSERT...WHERE ???

si pero lo q buscas se haria conn un update ya q en un insert genera una fila nueva no puede buscar datos ya q no existen, y un update actualiza datos q ya existen

ejemplo:

Código php:
Ver original
  1. $sql=myql_query("UPDATE sociedades SET nombre='$nombre',cfi='$cif',domilicio='$domicilio' WHERE id_soci='$ruta'");
  #8 (permalink)  
Antiguo 11/11/2009, 11:29
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

Cita:
Iniciado por dcreate Ver Mensaje
si pero lo q buscas se haria conn un update ya q en un insert genera una fila nueva no puede buscar datos ya q no existen, y un update actualiza datos q ya existen

ejemplo:

Código php:
Ver original
  1. $sql=myql_query("UPDATE sociedades SET nombre='$nombre',cfi='$cif',domilicio='$domicilio' WHERE id_soci='$ruta'");
No, un update no es ya que no existen datos en la base de datos... solo existe un identificador de sociedad (id_soci) que lo selecciono cuando elijo la sociedad en el desplegable.
  #9 (permalink)  
Antiguo 11/11/2009, 11:30
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Se podría hacer un INSERT...WHERE ???

entonces debes hacer un insert normal...

analiza bien .. tomate un descanzo derrepente cuando se pasa mucho tiempo frente al tarro uno se bloquea..
  #10 (permalink)  
Antiguo 11/11/2009, 11:31
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

Cita:
Iniciado por David Ver Mensaje
En ese caso, se supone que algún campo de la tabla tareas está relacionado con la tabla de empresas. Sólo tienes que insertar el dato en el campo correspondiente:
Código MySQL:
Ver original
  1. INSERT INTO tareas (id_empresa, ...) VALUES ('$id_empresa', ...);
Donde tienes en $id_empresa la empresa seleccionada.

No existe (y no tiene mucho sentido) un "INSERT... WHERE"
Te pongo mi INSTER para que lo veas claramente. Probé lo que me dijiste, pero algo tengo que estar haciendo mal.

Cita:

function insertar_tarea($id_tarea, $id_soci, $usuario, $tarea, $tiempo, $fecha)


{
$con = conexion_bd();


$query = "select *
from tareas
where id_tarea='$id_tarea'";

$result = mysql_query($query);
if (!$result || mysql_num_rows($result)!=0)
return false;

$query = "insert into tareas values
('$id_tarea', '$ruta', '$usuario', '$tarea', '$tiempo', '$fecha')";

$result = mysql_query($query);
if (!$result)
return false;
else
return true;
}
$ruta lo llamo antes de la función para que me recoja el valor que yo seleccioné en el desplegable, al igual que hice cuando hice la SELECT y me lo recupera perfecto. Pero con el INSERT no se que pasa que no me lo toma. Recupero el valor de $ruta así:

Cita:
$ruta=$_GET['pob1'];
  #11 (permalink)  
Antiguo 11/11/2009, 11:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Se podría hacer un INSERT...WHERE ???

Debes tener en cuenta el alcance de las variables. $ruta no existe dentro de la función, debes usar $GLOBALS['ruta'] o usar la palabra clave global:
Código PHP:
Ver original
  1. global $ruta;
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 11/11/2009, 11:40
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

Cita:
Iniciado por David Ver Mensaje
Debes tener en cuenta el alcance de las variables. $ruta no existe dentro de la función, debes usar $GLOBALS['ruta'] o usar la palabra clave global:
Código PHP:
Ver original
  1. global $ruta;

Pues ahora que lo dices puede ser que tengas razón, pero llevo tiempo sin tocar PHP y me esta costando una barbaridad. No sabría donde meter el $GLOBAL dentro de mi función. Echame una mano y dejame los numeros de tu cuenta corriente que en breve te hago un abono.
  #13 (permalink)  
Antiguo 11/11/2009, 11:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Se podría hacer un INSERT...WHERE ???

En lugar de $ruta usa $GLOBALS['ruta'], así de simple.

Para despejar dudas, nada mejor que leer el manual:
http://php.net/manual/en/language.variables.scope.php
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 11/11/2009, 11:54
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

David, agradezco tu paciencia. He probado sin éxito lo siguiente:

Cita:
$query = "insert into tareas values
('$id_tarea', '$GLOBALS[ruta]', '$usuario', '$tarea', '$tiempo', '$fecha')";
También probé sin las comillas:
Cita:
$query = "insert into tareas values
('$id_tarea', $GLOBALS[ruta], '$usuario', '$tarea', '$tiempo', '$fecha')";
E incluso poniendo ruta como $ruta:

Cita:
$query = "insert into tareas values
('$id_tarea', '$GLOBALS[$ruta]', '$usuario', '$tarea', '$tiempo', '$fecha')";
No se que está pasando macho, pero me estoy volviendo loco.
  #15 (permalink)  
Antiguo 11/11/2009, 11:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Se podría hacer un INSERT...WHERE ???

La primera forma es correcta, justo después de esa línea haz un echo $query para ver qué imprime.

También, si la consulta (mysql_query) devuelve false imprime el valor de mysql_error()
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 11/11/2009, 12:09
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

Al hacer el echo $query me dice lo siguiente:

insert into tareas values ('', '', 'usuarioprueba', 'tarea23', '2', '2009-11-11')Tarea 'tarea23' fue agregada a la base de datos.

Lo puse yo cuando se inserta correctamente. Pero como ves...los 2 primeros valores estan en blanco '','' es como si no tomara los datos. En base de datos se inserta el primero valor y todos los demas excepto el 2º campo que es el id_sociedad
  #17 (permalink)  
Antiguo 11/11/2009, 12:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Se podría hacer un INSERT...WHERE ???

Muestra el código con que llamas a la función.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #18 (permalink)  
Antiguo 11/11/2009, 12:15
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

Aquí lo tienes. Es el script completo insertar_tarea.php

Cita:

<?php session_start();



require_once('funciones.php');


encabezado_html('Agregando una tarea');

$id_tarea = $HTTP_POST_VARS['id_tarea'];
$id_soci = $HTTP_POST_VARS['id_soci'];
$usuario = $HTTP_POST_VARS['usuario'];
$tarea = $HTTP_POST_VARS['tarea'];
$tiempo = $HTTP_POST_VARS['tiempo'];
$fecha = $HTTP_POST_VARS['fecha'];

?> <h3> <?php
if(insertar_tarea($id_tarea, $id_soci, $usuario, $tarea, $tiempo, $fecha))

echo "Tarea '".stripslashes($tarea)."' fue agregada a la base de datos.<br />";

else

echo "Tarea'".stripslashes($tarea).

"' No puede ser agregada a la base de datos.<br />";

?>
  #19 (permalink)  
Antiguo 11/11/2009, 12:18
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Se podría hacer un INSERT...WHERE ???

En ningún lugar estás asignando $ruta.

En cuanto a $id_tarea, comprueba que realmente tengas un campo con ese nombre. Por otro lado, si es AUTO_INCREMENT no es necesario especificarlo a la hora de insertar el dato.

P.S.: No uses $HTTP_POST_VARS, usa $_POST en su lugar.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #20 (permalink)  
Antiguo 11/11/2009, 12:30
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

Perdona David pero sin querer borré la declaración de $ruta. El script quedaría así:

Cita:

<?php session_start();

$ruta=$_GET['pob1'];


require_once('funciones.php');


encabezado_html('Agregando una tarea');

$id_tarea = $HTTP_POST_VARS['id_tarea'];
$id_soci = $HTTP_POST_VARS['id_soci'];
$usuario = $HTTP_POST_VARS['usuario'];
$tarea = $HTTP_POST_VARS['tarea'];
$tiempo = $HTTP_POST_VARS['tiempo'];
$fecha = $HTTP_POST_VARS['fecha'];

?> <h3> <?php
if(insertar_tarea($id_tarea, $id_soci, $usuario, $tarea, $tiempo, $fecha))

echo "Tarea '".stripslashes($tarea)."' fue agregada a la base de datos.<br />";

else

echo "Tarea'".stripslashes($tarea).

"' No puede ser agregada a la base de datos.<br />";

?>

Declaro $ruta arriba cuando abro para escribir en php. Supongo que debería de poner $ruta en algun sitio mas de este script, pero desconozco donde o como se hace.Respecto a id_tarea es autonumerico, por eso no se ve lo que se agrega,pero internamente en la base de datos sime lo hace bien (va numerando correlativo).
  #21 (permalink)  
Antiguo 11/11/2009, 12:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Se podría hacer un INSERT...WHERE ???

¿Cuando imprimes $ruta imprime el valor correcto? Ya que los demás datos los recibes por POST, me extraña que el valor para $ruta lo obtengas de $_GET (puede que efectivamente lo recibas por la URL, pero debes revisarlo)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #22 (permalink)  
Antiguo 11/11/2009, 12:37
 
Fecha de Ingreso: septiembre-2005
Mensajes: 379
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Se podría hacer un INSERT...WHERE ???

Lo estoy haciendo tal cual lo hice en la SELECT y funcionó a la hora de recuperar los datos de la empresa seleccionada. Le echaré un vistazo a ver que pasa. Gracias David, en breve tendrás noticias mias.
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 20:35.