Foros del Web » Programando para Internet » PHP »

Guardar datos de un formulario en tabla relacionada

Estas en el tema de Guardar datos de un formulario en tabla relacionada en el foro de PHP en Foros del Web. Hola amigos: Tengo el siguiente formulario: http://www.bancahipica.com/cargar/cargar_inscritos.php y tengo dos tablas en mysql relacionadas. En la primera guardo el contenido que no se repite (id_carrera, ...
  #1 (permalink)  
Antiguo 03/11/2009, 22:46
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Busqueda Guardar datos de un formulario en tabla relacionada

Hola amigos:

Tengo el siguiente formulario:

http://www.bancahipica.com/cargar/cargar_inscritos.php

y tengo dos tablas en mysql relacionadas.

En la primera guardo el contenido que no se repite (id_carrera, fecha, Carrera, Hipódromo, Fecha_carrera, Hora_carrera, Distancia, Cantidad en Premios, Caballos o Yeguas)

En la segunda relaciono con el id_carrera y la carrera y lleva los datos que se repiten (Nº, Nombre Caballo, P.P., Kg., Jinete, Entrenador, Propietario, Haras, Ret)

Lo que no se hacer es guardar estos datos en la segunda tabla. Creo que se hace con un foreach pero no se.

La idea es que en la tabla2 quede la relación siguiente:

id_carrera carrera n_caballo nombre_caballo etc
1 1 1 Pelicano
1 1 2 Lord One

etc....

para que cuando los vaya a mostrar me traiga en un form todos los de la carrera 1 y en otro los de la carrera 2 y asi sucesivamente.

El problema que tengo es para guarda en la 2da. tabla.

Por favor ayudenme a resolver esto, Gracias.
  #2 (permalink)  
Antiguo 04/11/2009, 07:16
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Guardar datos de un formulario en tabla relacionada

Podrías hacerlo con un foreach, pero en tu caso, por la estructura y los nombres de tus elementos HTML del formulario quizás lo más sencillo sea recorrer todos los campos con un for normal:
Código PHP:
    for($i=1$i<=13$i++)
    {
        if(!empty(
$_POST['n_caballo'.$i]))
        {
            
$sql="INSERT INTO...";
            .
            .
            .
        }
    } 
Espero que te haya ayudado. ¡Suerte!
  #3 (permalink)  
Antiguo 04/11/2009, 08:08
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar datos de un formulario en tabla relacionada

Gracias dggluz. Una pregunta más, a cada uno de los input que traen el n_caballo les pongo el mismo nombre?

Lo hice asi pero no me guarda nada:

Código PHP:
 for($i=1$i<=13$i++)
    {
        if(!empty(
$_POST['n_caballo'.$i]))
        {
            
mysql_query("INSERT INTO caballos VALUES '$n_caballo'");
        }
    } 
Que estoy haciendo mal?
  #4 (permalink)  
Antiguo 04/11/2009, 08:32
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Guardar datos de un formulario en tabla relacionada

Cita:
Iniciado por kimmy Ver Mensaje
Gracias dggluz. Una pregunta más, a cada uno de los input que traen el n_caballo les pongo el mismo nombre?

Lo hice asi pero no me guarda nada:

Código PHP:
 for($i=1$i<=13$i++)
    {
        if(!empty(
$_POST['n_caballo'.$i]))
        {
            
mysql_query("INSERT INTO caballos VALUES '$n_caballo'");
        }
    } 
Que estoy haciendo mal?
Mira, en realidad lo que está mal ahí es la sintaxis de la consulta SQL. Un query SQL correcto para la inserción de datos sería:
Código SQL:
Ver original
  1. INSERT INTO nombreDeLaTabla (nombreDeLaColumna1, nombreDeLaColumna2, ..., nombreDeLaColumnaN) VALUES (valorParaLaColumna1, valorParaLaColumna2, ..., valorParaLaColumnaN);
No todas las columnas son obligatorias, y por cada INSERT, tendrás un registro nuevo. Es decir que tienes que insertar todas las columnas que quieres de una sola vez, no de a una. Por otra parte, usas la variable $n_caballo ¿de dónde sale esa variable? No te puse el ejemplo completo antes porque creí que no haría falta, pero así lo haría yo:
Código PHP:
for($i=1$i<=13$i++)
{
    if(!empty(
$_POST['n_caballo'.$i])
    {
        if(isset(
$_POST['retirado'.$i]))
        {
            
$retirado='Sí';
        }
        else
        {
            
$retirado='No';
        }
        
$sql="INSERT INTO ".$tuTabla." (nro, nombre_caballo, pp, kg, jinete, entrenador, propietario, haras, ret) VALUES (".$_POST['n_caballo'.$i].", '".$_POST['nombre_caballo'.$i]."', ".$_POST['puesto'.$i].", ".$_POST['kg'.$i].", '".$_POST['jinete'.$i]."', '".$_POST['entrenador']."', '".$_POST['propietario'.$i]."', '".$_POST['haras'.$i]"', '".$retirado."');";
                
mysql_query($sql);
    }

El !empty está para comprobar que el usuario completó ese campo, sin embargo valido uno sólo porque validar todos es demasiado tedioso y supongo que si completó el primer campo de la "fila" de caballos, completo el resto de los campos para ese caballo ¿se entiende? Sin embargo según la aplicación, en ocasiones conviene validar TODOS los campos. Eso depende de cada aplicación y del usuario al que esté dirigido y el nivel de seguridad deseado.
Como puedes ver, los datos que son cadenas tengo que mandarlos entrecomillados, los que son números no hace falta. Por otro lado, los nombres de las columnas no sé si coinciden pues tu no los haz puesto. Así que tú sabrás qué cosas exactamente debes cambiar para que el script funcione. ¡Suerte!
  #5 (permalink)  
Antiguo 04/11/2009, 09:24
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar datos de un formulario en tabla relacionada

tengo que pasar todos estos datos n_caballo, nombre_caballo, p_partida, kg, n_jinete, entrenador, propietario, haras, ret para cada uno de las filas.

A todos ellos los meto en el mismo for? y el input donde los guardo lleva el mismo nombre? Por ejemplo los input n_caballos que se tienen que rellenar 13veces llevan el mismo nombre?

al hacer esta prueba con una tabla que cree de un solo campo para probar, no me guarda nada

Código PHP:
for($i=1$i<=13$i++)
    {
        if(!empty(
$_POST['n_caballo'.$i]))
        {
            
$sql="INSERT INTO caballos1 (n_caballo) VALUES (".$_POST['n_caballo'.$i].");"
        }
    } 
No entiendo...
  #6 (permalink)  
Antiguo 04/11/2009, 09:32
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Guardar datos de un formulario en tabla relacionada

Cita:
Iniciado por kimmy Ver Mensaje
tengo que pasar todos estos datos n_caballo, nombre_caballo, p_partida, kg, n_jinete, entrenador, propietario, haras, ret para cada uno de las filas.

A todos ellos los meto en el mismo for? y el input donde los guardo lleva el mismo nombre? Por ejemplo los input n_caballos que se tienen que rellenar 13veces llevan el mismo nombre?

al hacer esta prueba con una tabla que cree de un solo campo para probar, no me guarda nada

Código PHP:
for($i=1$i<=13$i++)
    {
        if(!empty(
$_POST['n_caballo'.$i]))
        {
            
$sql="INSERT INTO caballos1 (n_caballo) VALUES (".$_POST['n_caballo'.$i].");"
        }
    } 
No entiendo...
Ahí no guarda nada porque no estás guardando nada: debes hacer mysql_query para enviar la consulta SQL, sino sólo estás asignando un valor (de tipo string) a una variable.
Piensa qué es lo que haces en el for, es sencillo. ¡Suerte!
PD: quizás te sirva de referencia darte una vuelta por el manual.
  #7 (permalink)  
Antiguo 09/11/2009, 14:21
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar datos de un formulario en tabla relacionada

Gracias dggluz si lo pude hacer.
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 18:54.