Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Insertar datos en una tabla

Estas en el tema de Insertar datos en una tabla en el foro de Mysql en Foros del Web. Hola amigos, veran tengo un pequeño problema a ver si me pueden ayudar: Tengo una tabla en una base de datos con una serie de ...
  #1 (permalink)  
Antiguo 23/07/2014, 04:54
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Insertar datos en una tabla

Hola amigos, veran tengo un pequeño problema a ver si me pueden ayudar:

Tengo una tabla en una base de datos con una serie de campos.

Cuando hago update funciona bien, actualiza sin problemas.


Pero cuando hago un insert into no va. y no se en que estoy equivocandome.

les mostrare que es elo que tengo:

Una tabla llamada: "cat_idiomas"

y en dicha tabla tengo los siguientes campos:

id_curso
id_categoria_foranea
nombre_curso
comentario
nombre_tema_1
contenido_tema_1
nombre_tema_2
contenido_tema_2
.
.
.
.
nombre_tema_10
contenido_tema_10


Bien una vez dicho esto utilizo la siguiente sentencia para insertarle datos a la tabla:


Código MySQL:
Ver original
  1. INSERT INTO cat_idiomas (id_categoria_foranea, nombre_curso, comentario)
  2. VALUES ('$id_categoria_foranea', '$nombre_nuevo_curso', '$nuevo_comentario';

Cita:
Editado: Código de programacion no permitido en foros de BBDD. Leer las normas del foro, por favor.
Decir que las variables de php que llegan por post, llegan perfectamente desde el formulario, asi que el problema deberia ser del sql, que algo no estoy haciendo bien.


Gracias de antemano.

Última edición por gnzsoloyo; 23/07/2014 a las 05:45
  #2 (permalink)  
Antiguo 23/07/2014, 05:10
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Insertar datos en una tabla

Te muestra algun error al intentar insertar? Si es asi muestranoslo por favor.

Saludos.
  #3 (permalink)  
Antiguo 23/07/2014, 05:17
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Insertar datos en una tabla

Pues veras, no muestra ningun error, solo que no se inserta la fila en la base de datos con los datos puestos.

Ahora te comento:

acabo ahora mismo de poner lo siguiente:

Código MySQL:
Ver original
  1. INSERT INTO cat_idiomas (id_categoria_foranea, nombre_curso, comentario,
  2.         nombre_tema_1, nombre_tema_2, nombre_tema_3, nombre_tema_4, nombre_tema_5,
  3.         nombre_tema_6, nombre_tema_7, nombre_tema_8, nombre_tema_9, nombre_tema_10,
  4.         contenido_tema_1, contenido_tema_2, contenido_tema_3, contenido_tema_4, contenido_tema_5,
  5.         contenido_tema_6, contenido_tema_7, contenido_tema_8, contenido_tema_9, contenido_tema_10)
  6.         VALUES ('$id_categoria_foranea', '$nombre_nuevo_curso', '$nuevo_comentario',
  7.         'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio',
  8.         'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio', 'vacio')

Cita:
Editado: Código de programacion no permitido en foros de BBDD. Leer las normas del foro, por favor.
Y para mi sorpresa, si, inserta ya los datos en la tabla.

Pero ocurre un pequeño problema:

dicha tabla tiene, ya, 6 cursos es decir con

id=1
id=2
id=3
.
.
.
id=6


PUes bien cuando pongo la sentencia que en este post he puesto, me inserta los datos, si, pero me coloca los datos al principio de la tabla con id=0.

cuando deberia ser al final de la tabla con id=7, osea en ultimo lugar.

¿Por que ocurre esto?


Última edición por gnzsoloyo; 23/07/2014 a las 05:46
  #4 (permalink)  
Antiguo 23/07/2014, 05:29
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Insertar datos en una tabla

No tendras asignado en esa tabla el autoincrement. Puedes leer sobre ello en http://dev.mysql.com/doc/refman/5.0/...increment.html

Saludos.
  #5 (permalink)  
Antiguo 23/07/2014, 05:45
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Insertar datos en una tabla

ops!!!, tenias razón se me olvidó ponerle auto incremental, si es un lobo me come ejejejeej


gracias .
  #6 (permalink)  
Antiguo 23/07/2014, 08:12
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Insertar datos en una tabla

Una cosa mas.

Si mi intencion es conseguir lo siguiente:

Insertar unos valores para los campos de cualquier tabla, donde se cumpla la condicion que:

" id_categoria_foranea = $id_categoria_foranea"


¿Como se pondria?, por que estoy poniendo esto y no funciona:

Código MySQL:
Ver original
  1. INSERT INTO * (id_categoria_foranea, nombre_curso, comentario,
  2.         nombre_tema_1, nombre_tema_2, nombre_tema_3, nombre_tema_4, nombre_tema_5,
  3.         nombre_tema_6, nombre_tema_7, nombre_tema_8, nombre_tema_9, nombre_tema_10,
  4.         contenido_tema_1, contenido_tema_2, contenido_tema_3, contenido_tema_4, contenido_tema_5,
  5.         contenido_tema_6, contenido_tema_7, contenido_tema_8, contenido_tema_9, contenido_tema_10)
  6.         VALUES ('$id_categoria_foranea', '$nombre_nuevo_curso', '$nuevo_comentario',
  7.         'nombre tema 1', 'nombre tema 2', 'nombre tema 3', 'nombre tema 4', 'nombre tema 5',
  8.         'nombre tema 6', 'nombre tema 7', 'nombre tema 8', 'nombre tema 9', 'nombre tema 10',
  9.         'contenido tema 1', 'contenido tema 2', 'contenido tema 3', 'contenido tema 4', 'contenido tema 5',
  10.         'contenido tema 6', 'contenido tema 7', 'contenido tema 8', 'contenido tema 9', 'contenido tema 10')
  11.         WHERE select * from id_categoria_foranea = $id_categoria_foranea

Cita:
Editado: Código de programacion no permitido en foros de BBDD. Leer las normas del foro, por favor.
gracias de nuevo.
  #7 (permalink)  
Antiguo 23/07/2014, 08:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Insertar datos en una tabla

No existe en WHERE en el INSERT. La query así no te funcionará jamás.

Tampoco puedes poner un INSERT INTO *. Eso no existe en ningun DBMS.

Ahora bien, volviendo al inicio, cuando describes esto:
Cita:
y en dicha tabla tengo los siguientes campos:

id_curso
id_categoria_foranea
nombre_curso
comentario
nombre_tema_1
contenido_tema_1
nombre_tema_2
contenido_tema_2
.
.
.
.
nombre_tema_10
contenido_tema_10
lo que nos muestra es que tienes la base MUY mal diseñada.
Esa tabla debería normalizarse, y con eso resolverías la mayor parte de los problemas. O al menos simplificarías todas las queries.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 23/07/2014, 09:10
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 10 meses
Puntos: 5
Respuesta: Insertar datos en una tabla

Ok, gnzsoloyo,

Me queda claro que no existe el where en el insert.

Y que tampoco puedo poner insert into *

tambien me queda claro que hay que diseñar la bbdd de otra forma, cosa que hare seguro.

Pero eso sera la siguiente vez por que por falta de tiempo no puedo normalizar-rectificar ya nada por falta de tiempo.

Bien dicho esto:

¿Podrias decirme como podria insertar estos datos en cualquier tabla (y son 7 tablas) donde se cumpla la condicion de id_categoria_foranea?

Gracias.
  #9 (permalink)  
Antiguo 23/07/2014, 09:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Insertar datos en una tabla

Cita:
¿Podrias decirme como podria insertar estos datos en cualquier tabla (y son 7 tablas) donde se cumpla la condicion de id_categoria_foranea?
No existe un método que permita meter algo en "cualquier tabla". SQL es un lenguaje imperartivo, y sólo indicando en qué tabla quieres hacerlo lo hará.
Esto implicaría que deberías recorrer toda la base, tabla por tabla, evaluar las relaciones, y de acuerdo a eso crear ese insert.
Pero de acuerdo a lo que dices sólo tienes siete (7) tablas relacionadas de alguna forma con esa otra, y por consecuenica bien podrías hacerlo sin problemas.
Mi sugerencia es que desarrolles todas las validaciones apra cada escenario dentro de un stored procedure, tal que de acuerdo a los parametros recibidos haga el insert que corresponda.
Como no sé cómo son las tablas, ni que condiciones evaluar (el modelo es tuyo, yo no lo veo), no te puedo decir qué criterios usar para el arbol de decisiones. Eso lo conoces tu.

Ahora bien, cuando preguntas:
Cita:
¿Podrias decirme como podria insertar estos datos en cualquier tabla (y son 7 tablas) donde se cumpla la condicion de id_categoria_foranea?
Debo entender que lo que quieres saber es cómo identificar las tablas que tienen un campo relacionado como FK respecto de otra tabla base.
Esto lo puedes ver sin problemas en la base INFORMATION_SCHEMA, que es la que adminsitra las bases en MySQL, donde la tabla TABLE_CONSTRAINTS es la que contiene esa información.
Por supuesto, eso siempre que las tablas sean InnoDB, porque de lo contrario sólo tu puedes saberlo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 23/07/2014 a las 10:18

Etiquetas: campo, php, sql, tabla
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 07:32.