Foros del Web » Programando para Internet » PHP »

De un resultado, ingresar a una tabla

Estas en el tema de De un resultado, ingresar a una tabla en el foro de PHP en Foros del Web. Es algo sencillo pero me estoy complicando, tengo un formulario que digamos me bota cantidad de registros variables, osea a veces me muestra 2 o ...
  #1 (permalink)  
Antiguo 25/04/2014, 10:35
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
De un resultado, ingresar a una tabla

Es algo sencillo pero me estoy complicando, tengo un formulario que digamos me bota cantidad de registros variables, osea a veces me muestra 2 o 3 o mas registros, lo que quiero es que estos registros que son resultado de busqueda ahora se guarden en otra tabla, ejemplo

1er formulario- buscar nombres con luis
2do resultado - 3 nombres: luis miranda, luis araoz y luis fernandez
3ro estos 3 resultados guardarlos en otra tabla, usar un insert into que inserte todos los resultados en diferentes registros

me estoy complicando en este ultimo punto, porq mi insert into no siempre sera por 3 resultados a veces sera por mas o menos cantidad, por favor agradezco su apoyo ideas.. =)
  #2 (permalink)  
Antiguo 25/04/2014, 10:43
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 16 años, 2 meses
Puntos: 36
Respuesta: De un resultado, ingresar a una tabla

Una pregunta, para que quieres los resultados insertarlos en una nueva tabla si ya estan en una guardados?
  #3 (permalink)  
Antiguo 25/04/2014, 10:51
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

porque en la primera busqueda es una tabla general de datos, la quiero llevar a una segunda para filtros que hace el sistema, no es solo busco y lo mismo lo gurado en otra tabla sino que busco bajo un criterio, a esos registros asigno otros datos mas y esos ya mas completos los almaceno en otra tabla, para eso necesito hacer esto gracias alguna idea de como hacerlo?
  #4 (permalink)  
Antiguo 25/04/2014, 11:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: De un resultado, ingresar a una tabla

Podrías pasarle a la función un array o un objeto con los datos que deseas insertar, en la función recibes al array u objeto y con sus componentes (los datos), formas la sentencia para realizar la inserción. Sería bueno ver el código que has elaborado para ese propósito.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 25/04/2014, 12:13
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

los datos los recibo bien, eso lo tengo claro, solo tengo problemas con el insert into que sea condicional que pueda ingresar cualquier cantidad de datos
  #6 (permalink)  
Antiguo 25/04/2014, 12:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: De un resultado, ingresar a una tabla

Si ya tienes un SELECT que te devuelva un registro por cada nombre, puedes usar lo mismo paga guardar en la tabla.
Código SQL:
Ver original
  1. INSERT INTO tabla2(nombre)
  2. SELECT nombre
  3. FROM tabla1
  4. WHERE [condiciones]
Este es un tema más del Foro de Bases de Datos que de pHP...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 25/04/2014, 13:32
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

haber explico mejor
tengo 3 tablas,

1 tengo numeros almacenados del 1 al 1000
2 tengo varios usuarios
3 tabla destino

tengo el php siguiente

Código PHP:
<?
                                                                        
include("conexion.php");
                                                                        
$sql="select * from tabla where numero between '$_POST[desde]' and '$_POST[hasta]'";
                                                                        
$w=mysql_query($sql);
                                                                        while(
$t=mysql_fetch_row($w))
                                                                        {
                                                                            echo 
'
                                                                                    <table><tr><td>
                                                                                    <input type"text" value="'
.$t[1].'" name="numero"></td>
                                                                                '
;
                                                                        }
                                                                    
?>
este es el archivo q me muestra el resultado digamos entre el 1 al 3 esos 3 registros quiero asignarlos a un usuario y almacenarlos en la tercera tabla
  #8 (permalink)  
Antiguo 26/04/2014, 02:10
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: De un resultado, ingresar a una tabla

¿Y cuál es la sentencia que usas para insertar los datos? ¿En qué parte te complicas? Pues, a primera vista, no parece tan complicado que digamos. Por cierto, si vas a crear más de un elemento <input>, al menos hazlo en forma de array, es decir, añade un par de corchetes (de apertura y cerrado []) al nombre.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 26/04/2014, 15:05
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

mira ahora estoy usando
Código PHP:
$sql "INSERT INTO tabla_destino (numero) 
                        SELECT numero FROM tabla_origen
                        WHERE numero between '$_POST[desde]' and '$_POST[hasta]' and estado = 'Sin asignar'"

esto me funciona agrega los registros a la tabla destino pero no me permite insertar los datos de la segunda tabla usuarios; por otro lado, estoy usando un solo input type, o ahi anda el problema
  #10 (permalink)  
Antiguo 26/04/2014, 15:27
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: De un resultado, ingresar a una tabla

En el bucle que muestras en el anterior mensaje, generas un elemento <input> por cada iteración. No sé si desde esos elementos es que recoges los datos que deseas insertar, pues en este último bloque de código que muestras, no veo que recojas los datos de dicho(s) input(s). Ojo, trata a los inputs como un array, de otro modo, solo tomará el último valor.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 26/04/2014, 15:32
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

al probar con array uso en el input de mi resultado el name="numero[] y en el siguiente formulario

foreach ( $_POST['numero'] as $num ){
echo $num;
}

y como dices ya no tengo solo el ultimo registro sino todos pero nose justo eso como recoger estos elementos e insertarlos en mi tabla destino

ahi estoy cruzado sorry si es algo sencillo pero no me sale me atore hehe gracias
  #12 (permalink)  
Antiguo 26/04/2014, 15:41
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

pruebo hacer insert into numero values ( '','$num')
pero igual solo me toma el ultimo valor y no reconoce todos
  #13 (permalink)  
Antiguo 26/04/2014, 15:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: De un resultado, ingresar a una tabla

A ver, supongamos que tenemos un array de inputs de nombre nombres[], yo deseo insertar estos datos en una tabla de la BD, cada uno como un registro nuevo. En este caso, haría es lo siguiente.

Código PHP:
Ver original
  1. //Me conecto a la base de datos
  2. $conexion = new mysqli ("servidor", "usuario", "contraseña", "base de datos");
  3.  
  4. //Si no se realiza la conexión, termino la ejecución del script, caso contrario, continuo
  5. if ($conexion->connect_error)
  6.     exit ("No se pudo realizar la conexión a la base de datos: " . $conexion->connect_error);
  7.  
  8. //Función para desinfectar a los datos
  9. function desinfectar ($dato){
  10.     global $conexion;
  11.     return strip_tags($conexion->real_escape_string($dato));
  12. }
  13.  
  14. //Aplico la función en cada dato recibido
  15. $_POST['nombres'] = array_map("desinfectar", $_POST['nombres']);
  16.  
  17. //Procedo a darle formato al grupo de datos que insertaré en la BD
  18. $datos = "('" . implode("'), ('", $_POST['nombres']) . "')";
  19.  
  20. //Inserto los datos
  21. echo $conexion->query("INSERT INTO tabla (nombre) VALUES $datos") ? "Se insertaron los datos" : "No se insertaron los datos";

Con el formato que aplico al grupo de datos, estos tomarán la siguiente forma:

Código HTML:
Ver original
  1. ('dato1'), ('dato2'), ('datoN')

Y así puedes insertar el grupo entero de una sola vez. Eso es todo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #14 (permalink)  
Antiguo 26/04/2014, 15:56
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

inserta solo un campo en blanco y me vota el mensaje

Warning: mysqli::real_escape_string() expects parameter 1 to be string, array given in C:\AppServ\www\test\nuevo.php on line 16
Se insertaron los datos
  #15 (permalink)  
Antiguo 26/04/2014, 16:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: De un resultado, ingresar a una tabla

La alerta es por la conexión, seguramente estás usando la extensión MySQL en lugar de la extensión mejorada MySQLi, además, la hago en el estilo orientado a objetos. Por lo pronto, obvia la desinfección de datos y sáltate directamente a la línea 18 de mi ejemplo que es en donde le doy el formato al grupo de datos. Ojo con el nombre del array, debe tener el mismo que le asignaste en tu código.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 26/04/2014 a las 21:04
  #16 (permalink)  
Antiguo 26/04/2014, 19:55
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

funciona a la perfeccion, pero ahora dime quiero agregar otros datos mas en esa misma tabla, con esto solo puedo agregar esa sola columna..
  #17 (permalink)  
Antiguo 26/04/2014, 20:46
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

mira lo tengo asi y funciona muy bien pero como digo solo puedo almacenar esa columna, no puedo guardar otras columnas en la misma tabla

Código PHP:
include("conexion.php");
                                                                
$datos "('" implode("'), ('"$_POST['numero']). "')";
                                                                
$sql="insert into tabla_destino (numero) VALUES $datos";
                                                                
mysql_query($sql); 
gracias
  #18 (permalink)  
Antiguo 26/04/2014, 21:07
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: De un resultado, ingresar a una tabla

Los otros datos que deseas insertar, ¿Son únicos o también son arrays como en este caso?

Bueno, supongamos que fueran datos simples, por ejemplo, tenemos un array con los nombres 'Ana', 'Luisa' y 'María', el número 25 y la palabra 'Ejemplo'. Todo esto en tres variables distintas, siendo la primera un array con los 3 nombres. Si quisiera añadir 3 registros a la tabla de la BD en donde cada registro contenga un nombre, el número y la palabra, haría lo siguiente:

Código PHP:
Ver original
  1. /*!
  2.  * $_POST['nombres'] es el array de los nombres
  3.  * $_POST['numero'] es el número
  4.  * $_POST['palabra'] es la palabra
  5.  */
  6.  
  7. $datos = "('" . implode("', {$_POST['numero']}, '{$_POST['palabra']}'), (", $_POST['nombres']) . ", {$_POST['numero']}, '{$_POST['palabra']}')";
  8.  
  9. mysql_query("INSERT INTO tabla (nombre, numero, palabra) VALUES $datos") ? "Se insertaron los datos" : "No se insertaron los datos";

La sentencia tomaría la siguiente forma:

Código MySQL:
Ver original
  1. INSERT INTO tabla (nombre, numero, palabra)
  2. VALUES ('Ana', 25, 'Ejemplo'), ('Luisa', 25, 'Ejemplo'), ('María', 25, 'Ejemplo')

Espero que eso sea lo que necesitas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 26/04/2014 a las 21:27 Razón: Adición de la solución
  #19 (permalink)  
Antiguo 27/04/2014, 12:17
Avatar de PeruClic  
Fecha de Ingreso: junio-2007
Ubicación: Arequipa, Peru
Mensajes: 533
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: De un resultado, ingresar a una tabla

si amigo mil gracias eso justo es lo que necesito, pero no me funciona tus codigos, en mi tabla solo tengo 3 columnas, un id autonumerico, el numero q es array y usuario q es el nombre de quien se le asigna el numero,
  #20 (permalink)  
Antiguo 27/04/2014, 12:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: De un resultado, ingresar a una tabla

¿Y cómo estás intentando hacerlo? Muéstranos el código que has elaborado para dicho propósito.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: formulario, registro, resultado, tabla, variable
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 13:04.