Que falla en esta consulta?

Martita-

Pues no se porque no inserta el resultado... toy desquiciandome.

http://pastebin.com/668822

Mijatovic

No me hagas demasiado caso, pero juraría que te falta abrir y cerrar comillas simples antes y después de las dobles que insertan en el SQL la variable captengo, es decir, si no estoy equivocado, falta el ' en ," . $_POST['captengo'] . ", ...

Como por ejemplo aqui: '" . $_POST['serie'] . "'

EnZo

eso te iba a decir, es la unica que no esta entre comillas, aunque es posible que sea numerico asegurate de que lo es y si no ponle comillas. La consulta esta bien siempre y cuando esos campos sean correctos.

La comparacion es posible que puedas reducirla mucho mas en plan if (isset($_POST))

Creo que para verificar todos los campos no es necesario verificarlos individualmente.

Mijatovic

Enzo, tienes razon con lo del isset, pero en el caso de que necesite que todos los campos estén rellenos, el isset me temo que no le sirve, ya que devolvería true siempre que existiese un dato cualquiera, aunque todos los demás estuviesen vacíos.

Martita-

He probado mil veces poniendo las comillas de distintas maneras, y no hay forma de que inserte eso en la tabla :(

Mijatovic

No comprendo muy bien la concatenación que haces de
'" . $POST['variable'] . "' Yo en tu caso, metería cada $POST['variable'] en una variable ($variable) y luego simplemente en la consulta tendrías que poner '$variable', '$variable2' etc

Ya te digo que esa concatenación no me inspira confianza. Puedes probarlo de esta manera simplemente para ver si funciona y acotar un poco donde puede estar el problema.

Un saludo

Martita-

Voy a probar como dices.

Ko3iGoN

Yo en estos casos hago un test, una vez enviado el formulario crea una pagina donde escriba los $_POST['']; con salto de linea entre ellos, de esta forma te aseguras que todas las variables existen y las captura bien.
Luego solo deberas revisar la tabla SQL y comprobar que no te has dejado ningun registro o que tenga un nombre mal puesto.

Espero que te ayude.

Martita-

Nada, no hay forma xD.

$query = mysql_query("INSERT INTO listaanime (serie, captengo, captotal, ovatengo, ovatotal, pelitengo, pelitotal, viendola, vista, completa) values (".$serie." , ".$captengo." , ".$captotal." , ".$ovatengo." , ".$ovatotal." , ".$pelitengo." , ".$pelitotal." , ".$viendola." , ".$vista." , ".$completa.")") or die(mysql_error());

Ni asi ni con comillas simples.

Mijatovic

usa comillas simples para las variables y quitale el punto que concatena después de las comillas, es decir ('$valor1','$valor2'...etc)

EnZo

Cierto Mijatovic

Cuando algo me falla de este tipo hago un echo de la consulta copio el texto que me devuelve y me voy al phpmyadmin y la ejecuto desde el SQL si todo es correcto es problema del php.

Puedes pasarnos la estructura de la tabla?

Martita-

#10

Si no le pongo punto, la variable no se me marca en el editor de texto como valida... es decir, no se me colorea.

Como puedo pasarte la estructura?

Mijatovic

$query = mysql_query("INSERT INTO listaanime (serie, captengo, captotal, ovatengo, ovatotal, pelitengo, pelitotal, viendola, vista, completa) values ('$serie' , '$captengo' , '$captotal' , '$ovatengo' , '$ovatotal' , '$pelitengo' , '$pelitotal' , '$viendola' , '$vista' , '$completa')") or die(mysql_error());

Es cosa de tu editor. Esa sentencia colorea las variables en el que yo uso (ConTEXT). Pruebalo así a ver si te funciona. Asegurate de que he puesto todos los nombres bien y no he borrado ninguna letra de más :)

Martita-

No funciona asi tampoco :(

EnZo

si usas phpmyadmin selecciona la tabla correspondiente y arriba sale un boton que pone exportar

y tambien haz un echo de la sentencia SQL y pegala aqui

Mijatovic

Una pregunta muy tonta.
¿has hecho la conexión a la base de datos y a la tabla con mysql_connect y mysql_select_db?

De ser así, ¿que error te está dando? el 'or die (mensaje)' te lo debería estar mostrando por pantalla y quizá ayude.

Si no da error, ¿Está insertando registros en blanco? ¿Tienes campo autonumérico? ¿Si cambias la consulta de insert por una de select *, te la realiza o peta igual?

Danos toda la información que puedas. Seguro que es un problema muy tonto y entre todos te podemos echar una mano.

Martita-

#16

Si claro, he hecho la conexion.

Voy a probar lo del echo, a ver que da.

Tengo campos numericos, si, todos menos "viendola" "vista" "completada" y "serie" son numericos.

#15

La tabla:

CREATE TABLE IF NOT EXISTS listaanime (
serie varchar(30) NOT NULL default '',
captengo int(3) NOT NULL default '0',
captotal char(3) NOT NULL default '',
ovatengo int(3) NOT NULL default '0',
ovatotal int(3) NOT NULL default '0',
pelitengo int(3) NOT NULL default '0',
pelitotal int(3) NOT NULL default '0',
viendola char(2) NOT NULL default '',
vista char(2) NOT NULL default '',
completa char(2) NOT NULL default '',
id int(11) NOT NULL auto_increment,
PRIMARY KEY (id)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

EnZo

Pues ya sabes donde esta el problema. Los que sean numericos no le pongas comillas.

Martita-

Nada, asi tampoco funciona.

$query = mysql_query("INSERT INTO listaanime (serie, captengo, captotal, ovatengo, ovatotal, pelitengo, pelitotal, viendola, vista, completa) values ('$serie' , $captengo , $captotal , $ovatengo , $ovatotal , $pelitengo , $pelitotal , '$viendola' , '$vista' , '$completa')") or die(mysql_error());

Yo ya no se que le pasa xD

Mijatovic

Que error te da? Que responde el echo de la query? se inserta algo en la base de datos? Con decir solo 'no funciona' solo podemos dar palos de ciego xD

Martita-

El echo me devuelve todas las variables bien.

EnZo

, $captotal ,

es char y no lleva comillas

Martita-

#22

De igual modo, le he puesto comillas y nada.

Si las variables me las devuelve bien, el problema no estara en el formulario?

EnZo

haz un echo de la consulta copiala vete al phpmyadmin selecciona la base de datos correspondiente y arriba sale un boton que pone SQL entra y pega el resultado del echo si hace la inserccion esque es problema del codigo php

Martita-

Hago un echo de la consulta, pero solo me sale el formulario normal. Nada escrito.

Esque algunas variables las considera variables y a otras no, con el echo, y me da error de variable.

Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in /home/mc000623/public_html/flistaanime.php on line 17

EnZo

pega el script entero incluyendo el formulario, lo hago yo ahora que tengo la estructura de la tabla. Mas alternativas para ayudarte no se me ocurren

Martita-

http://pastebin.com/669218

Mijatovic

Dos cosas,

la asignación $POST['loquesea'] = $loquesea, es incorrecta, debería ser $loquesea = $POST['loquesea'].

Por otra parte, esas asignaciones, deberían ir dentro de la condición, antes de la consulta, ya que si alguno de los valores no se introduce en el formulario, te petará seguro antes de llegar a la consulta.

Para terminar, si después de hacer esos dos cambios te sigue petando, intenta lo siguiente:

$consulta = "INSERT INTO listaanime (serie, captengo, captotal, ovatengo, ovatotal, pelitengo, pelitotal, viendola, vista, completa) values ('$serie' , $captengo , '$captotal' , $ovatengo , $ovatotal , $pelitengo , $pelitotal , '$viendola' , '$vista' , '$completa')";
$query = mysql_query($consulta) or die (mysql_error());

Separando la consulta de la ejecución de la query, tenemos más posibilidades de ver donde falla.

Espero que te sirva.

EnZo

http://pastebin.com/669304

raul84

Una cosa que no tiene nada que ver. No es mejor usar $REQUEST en vez de $POST ??

Vale para post y get y ademas da mas seguridad si no me equivoco, pero vamos que no estoy seguro

Usuarios habituales

  • raul84
  • EnZo
  • Mijatovic
  • Martita-
  • Ko3iGoN