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

Ayuda con in insert

Estas en el tema de Ayuda con in insert en el foro de Mysql en Foros del Web. Buenas ! gracias desde ya por ingresar a este hilo. Antecedentes: tengo dos tablas facturas y proveedores lo que no lo logro hacer es capturar ...
  #1 (permalink)  
Antiguo 03/12/2009, 10:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 21
Antigüedad: 14 años, 5 meses
Puntos: 0
Ayuda con in insert

Buenas ! gracias desde ya por ingresar a este hilo.


Antecedentes:
tengo dos tablas facturas y proveedores

lo que no lo logro hacer es capturar el id_proveedor y insertarlo en el ingreso de la factura llevo varios dias y aun no me cae.

si alguien me ayuda plz !!

aki esta el codigo

Código PHP:
$result=mysql_query("SELECT * FROM proveedor WHERE rut='".$_POST['rutcen']."'",$conexion);
$id_prov=mysql_fetch_array($result);
                
         
mysql_query("INSERT INTO centralizaciones (id_proveedor,  neto, num_doc) 
         VALUES ('$id_prov', 100, 696966)"
,$conexion); 

el error que me muestra es
" Duplicate entry '0' for key 1 "
  #2 (permalink)  
Antiguo 03/12/2009, 11:19
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Ayuda con in insert

pues creo que te esta diciendo que la llave esta duplicada y por eso no puedes insertar.
  #3 (permalink)  
Antiguo 03/12/2009, 12:09
 
Fecha de Ingreso: octubre-2009
Mensajes: 21
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con in insert

Cita:
Iniciado por Copia Ver Mensaje
pues creo que te esta diciendo que la llave esta duplicada y por eso no puedes insertar.


mmm como asi en la Base de datos ?? :/
onde ?

Gracias por la traduccion.
  #4 (permalink)  
Antiguo 03/12/2009, 13:41
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con in insert

Está diciendo que ya tienes un valor 0 en la clave 1.

Esto suele suceder cuando se inserta un valor erróneo en un campo: MySQL toma el valor por defecto. En tu caso supongo que será la clave id_proveedor la que te está dando problemas, ya que seguramente será un INT o algún otro número.

Prueba a quitarle las comillas simples a $id_prov.
  #5 (permalink)  
Antiguo 04/12/2009, 05:45
 
Fecha de Ingreso: octubre-2009
Mensajes: 21
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con in insert

le saque las comillas, y me dice

Unknown column 'Array' in 'field list'

y al modificar la pagina y ver que valor tiene $id_prov antes de hacer la consulta me muestra Array
  #6 (permalink)  
Antiguo 04/12/2009, 06: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: Ayuda con in insert

Empecemos por el principio: Postea la estructura de las tablas involucradas (y por postear la estructura me refiero a la sentencia CREATE TABLE ... que las genera), porque puede haber algo que no se ve a simple vista y que genere el problema.
__________________
¿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 04/12/2009, 06:21
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con in insert

A parte de lo que dice gnzsoloyo, $id_prov es una matriz, con lo cual debes de poner en la consulta el índice que te interesa ($id_prov[x]). Para ver los datos de la matriz usa print_r(), y no echo.
  #8 (permalink)  
Antiguo 04/12/2009, 06:25
 
Fecha de Ingreso: octubre-2009
Mensajes: 21
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con in insert

CREATE TABLE `centralizaciones` (
`id_centralizacion` smallint(6) NOT NULL,
`id_proveedor` varchar(6) NOT NULL,
`id_tipo_doc` smallint(6) NOT NULL,
`neto` mediumint(9) NOT NULL,
`num_doc` mediumint(9) NOT NULL,
PRIMARY KEY (`id_centralizacion`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;



CREATE TABLE `proveedor` (
`id_proveedor` mediumint(9) NOT NULL auto_increment,
`nombre_fan` varchar(50) NOT NULL,
`rut` varchar(12) NOT NULL,
PRIMARY KEY (`id_proveedor`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
  #9 (permalink)  
Antiguo 04/12/2009, 06: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: Ayuda con in insert

La primera está mal, porque lo que necesitas es el valor de sólo uno de los campos (id_proveedor), y no los tres:
Código sql:
Ver original
  1. SELECT id_proveedor FROM proveedor WHERE rut = valorpedido;

En la segunda, la PK (id_centralizacion) no es autoincremental, por lo que se entiende que la estás incrementando a través de la aplicación y deberías estar ingresandola directamente, además de que id_tipo_doc está declarado NOT NULL; por lo que también debe ingresarse obligatoriamente, ya que no tienen valores por default:

Código sql:
Ver original
  1. INSERT INTO centralizaciones (id_centralizacion, id_tipo_doc, id_proveedor,  neto, num_doc)
  2. VALUES ('$valor_id', '$id_prov', '$id_tipodoc', 100, 696966);

Si se desea que id_centralizacion sea autoincremental, y olvidarte de manejarlo, deberás modificar la estructura de la tabla:

Código sql:
Ver original
  1. CREATE TABLE `centralizaciones` (
  2. `id_centralizacion` SMALLINT(6) AUTO_INCREMENT PRIMARY KEY NOT NULL,
  3. `id_proveedor` VARCHAR(6) NOT NULL,
  4. `id_tipo_doc` SMALLINT(6) NOT NULL,
  5. `neto` mediumint(9) NOT NULL,
  6. `num_doc` mediumint(9) NOT NULL
  7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Un tip final: IDs autoincrementales, decláralos INT y no SMALLINT o MEDIUMINT, y también siempre UNSIGNED. Tarde o temprano puedes quedarte corto con eso.

Los detalles del PHP no los pongo porque en esta sección no se permite código de programación, sólo SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 04/12/2009, 07:26
 
Fecha de Ingreso: octubre-2009
Mensajes: 21
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con in insert

el valor de "$id_prov" es: Array ( [0] => 1 [id_proveedor] => 1 )

Gracias gnzsoloyo por las Aclaraciones.

modifique la el campo "id_centralizacion" a AUTO_INCREMENT

y los otros valores son not null lo que pasa es que fui modificando la consulta por el error del ingreso, para ir viendo que pasaba y olvide poner un valor referencial en el "id_tipo_doc"

quedando asi la consulta :

mysql_query("INSERT INTO centralizaciones (id_proveedor, id_tipo_doc, neto, num_doc)
VALUES ($id_prov[0], 1, 100, 696966)",$conexion);

faltaba el [0] para hacer el ingreso.(claro el array siempre deberia tener un solo dato)

consulta, siempre tendre que usar $id_prov=mysql_fetch_array($result) para rescatar el valor de la consulta slq otra tabla o abra otra forma de hacer mas facil ?

Gracias a todos por sus respuesta :D
  #11 (permalink)  
Antiguo 04/12/2009, 07:34
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: Ayuda con in insert

Cita:
consulta, siempre tendre que usar $id_prov=mysql_fetch_array($result) para rescatar el valor de la consulta slq otra tabla o abra otra forma de hacer mas facil ?
...esto ya es tema de PHP. Si hay otra forma, yo no la manejo, pero podría spostear ese problema directamente en el Foro de PHP.
Seguro que allí te ayudarán mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 22:38.