Foros del Web » Programando para Internet » PHP »

Alguien ve el error??

Estas en el tema de Alguien ve el error?? en el foro de PHP en Foros del Web. Buenos dias a todos!! Tengo la siguiente consulta para insertar un producto en la base de datos pero me da un error y no sé ...
  #1 (permalink)  
Antiguo 22/07/2008, 01:20
 
Fecha de Ingreso: septiembre-2007
Mensajes: 100
Antigüedad: 16 años, 7 meses
Puntos: 0
Alguien ve el error??

Buenos dias a todos!!

Tengo la siguiente consulta para insertar un producto en la base de datos pero me da un error y no sé porque.

La consulta es:

Código PHP:
$sql "INSERT INTO galeria (nombre_archivo, ancho, alto, titulo, descripcion, torneado, rectificado, fresado, taladrado, estriado, roscado, brochado, pulido, barra_redonda, barra_hexagonal, barra_cuadrada, pieza_forja, pieza_fundicion, acero_carbono, acero_aleado, acero_inoxidable, aluminio, laton, bronce) VALUES ('" $nombre_imagen "', " .  $_POST["ancho"] . ", " $_POST["alto"] . ", '" $_POST["titulo"] . "', '" $_POST["descripcion2"] . "', " $_POST["torneado"] . ", " $_POST["rectificado"] . ", " $_POST["fresado"] . ", " $_POST["taladrado"] . ", " $_POST["estriado"] . ", " $_POST["roscado"] . ", " $_POST["brochado"] . ", " $_POST["pulido"] . ", " $_POST["barra_redonda"] . ", " $_POST["barra_hexagonal"] . ", " $_POST["barra_cuadrada"] . ", " $_POST["pieza_forja"] . ", " $_POST["pieza_fundicion"] . ", " $_POST["acero_carbono"] . ", " $_POST["acero_aleado"] . ", " $_POST["acero_inoxidable"] . ", " $_POST["aluminio"] . ", " $_POST["laton"] . ", " $_POST["bronce"] . ")"
Siendo en la base de datos nombre_archivo y titulo de tipo varchar, ancho y alto de tipo int, descripcion de tipo text y el resto de tipo tinyint. Además todos los valores a partir de descripción los recojo de las casillas de verificación que marca el usuario y no sé si estarán bien pasados. Yo supongo que se pasarán igual que los demas input.

El error que me da es el siguiente:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , , , , , , , , , , , , , , , , , )' at line 1
Espero que me puedan ayudar porque llevo dos días mirándolo y ya no veo nada.

Muchas gracias.
  #2 (permalink)  
Antiguo 22/07/2008, 01:32
 
Fecha de Ingreso: septiembre-2007
Mensajes: 100
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Alguien ve el error??

Hola de nuevo:

Creo que el error me lo da por culpa de las casillas de verificación.

¿Cómo puedo recoger los valores de esas casillas? ¿Y luego como los paso a la base de datos? El tipo de esos datos en la base de datos lo tengo como tinyint, ¿tiene que ser otro?

Las casillas de verificación las tengo así:

Código HTML:
<input type="checkbox" name="torneado">Torneado
Cuando intento modificar el producto el error que me da es:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on', barra_redonda = '', barra_hexagonal = 'on', barra_cuadrada = '', pieza_forj' at line 1
Por eso creo que el error me lo da en las casillas de verificacion, tanto al insertar como al modificar los productos.

Espero vuestras respuestas y muchas gracias por ellas.
  #3 (permalink)  
Antiguo 22/07/2008, 02:26
 
Fecha de Ingreso: septiembre-2007
Mensajes: 100
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Alguien ve el error??

Nadie sabe el fallo??

Es que ya estoy desesperada.

Ahora he probado a cambiar en la base da datos el valor y en vez de ponerlo como tinyint lo he puesto como int y lo que hago es:

Código PHP:
if ($_POST["torneado"] == 'on')
    
$torneado 1;
else
    
$torneado 0
Y esto con todos. Y en la consulta le paso:

Código PHP:
$sql "UPDATE galeria SET titulo = '" $_POST["titulo"] . "', descripcion = '" $_POST["descripcion2"] . "', torneado = " $torneado ", rectificado = " $rectificado ", fresado = " $fresado ", taladrado = " $taladrado ", estriado = " $estriado ", roscado = " $roscado ", brochado = " .  $brochado ", pulido = " $pulido ", barra_redonda = " $barra_redonda ", barra_hexagonal = " $barra_hexagonal ", barra_cuadrada = " $barra_cuadrada ", pieza_forja = " $pieza_forja ", pieza_fundicion = " $pieza_fundicion ", acero_carbono = " $acero_carbono ", acero_aleado = " $acero_aleado ", acero_inoxidable = " $acero_inoxidable ", aluminio = " $aluminio ", laton = " $laton ", bronce = " $bronce " WHERE foto_id = " $_GET["foto_id"]; 
Y me da el error:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' estriado = 0, roscado = 0, brochado = 0, pulido = 0, barra_redonda = 1, barra_h' at line 1
Asi que ponga lo que ponga en la base de datos, siempre me da error.

¿Sabeís por qué?
  #4 (permalink)  
Antiguo 22/07/2008, 02:33
 
Fecha de Ingreso: julio-2008
Ubicación: El Puerto de Santa María
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Alguien ve el error??

El checkbox, al no tener el dato value te devolverá ON si está activado y nada si no está activado.

Con lo de la base de datos no te puedo ayudar

Saludos

EDIT: Lo siento, no leí el último mensaje
  #5 (permalink)  
Antiguo 22/07/2008, 02:37
 
Fecha de Ingreso: septiembre-2007
Mensajes: 100
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Alguien ve el error??

No pasa nada.

Muchas gracias de todas formas por tu aportación.
  #6 (permalink)  
Antiguo 22/07/2008, 04:17
 
Fecha de Ingreso: noviembre-2003
Ubicación: alicante
Mensajes: 44
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: Alguien ve el error??

Los nombres de los campos deberian ir tal como `nombre de campo`,`otro campo`,.. este carácter es el acento grave.
En cuanto a los valores deben ir entre comillas simples tal como '$valor_a_asignar','$otro_valor',...

No se si te funcionará el asignar directamente los valores directamente desde el $_POST, por otra parte yo siempre utilizo $_POST['valor'] con comillas simples, no se si tiene diferente funcionamiento o no, nunca lo he probado.

Prueba con "INSET * INTO galeria (`campo1`,`campo2`, `campo3`,...) VALUES('$VALOR1','$VALOR2','$VALOR3',...)";

con eso te deberia funcionar

Saludos
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 14:03.