Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] variables de sesion en INSET INTO

Estas en el tema de variables de sesion en INSET INTO en el foro de PHP en Foros del Web. Hola a todos y gracias de antemano. El otro día me solucionasteis una cuestión y vuelvo con otro problema. En mi página he creado 55 ...

  #1 (permalink)  
Antiguo 02/12/2013, 15:48
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
variables de sesion en INSET INTO

Hola a todos y gracias de antemano. El otro día me solucionasteis una cuestión y vuelvo con otro problema.
En mi página he creado 55 variables de sesión, pregunto si son muchas. He logrado concatenar 5 para que se registren en mi tabla sin problemas, pero el problema enpieza cuando pongo las 55. Me sale este error:

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 ') VALUES ('101','A','Montanosa','5','3','2.5','0','0','','' ,'','0','0','4','2.' at line 2

es curioso porque en el mensaje este salen los valores correctos pero no los manda a la tabla.

La forma que he utilizado despues de probar de mil maneras es esta:

VALUES ('".$empresa."','".$zona."','".$orientacion."','". $_SESSION['Comedor_largo1']."', etcetera 55 variables de sesion......terminado...asi."')"

Ahora lo pondre con espacios para que se entienda mejor:

, ' " .$variablede[sesion]. " '

¿Sabéis a que se puede deber? Gracias a todos
  #2 (permalink)  
Antiguo 02/12/2013, 17:10
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 2 meses
Puntos: 206
Respuesta: variables de sesion en INSET INTO

Una tabla de 55 columnas es un horror de la naturaleza. Aprende a normalizar tu base de datos YA, por lo menos hasta el nivel 3.
  #3 (permalink)  
Antiguo 02/12/2013, 17:23
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Gracias por la contestación, pero las necesito.
Si yo necesito saber cuanto pesas, cuanto mides, que pie calzas, de que color son tus ojos, tu pelo, si es largo y si eres alegre, como hago para normalizar eso en una tabla?
  #4 (permalink)  
Antiguo 02/12/2013, 17:27
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Me dejo la mitad de los datos en el tintero y los que me faltan me los invento?
  #5 (permalink)  
Antiguo 02/12/2013, 17:39
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 2 meses
Puntos: 206
Respuesta: variables de sesion en INSET INTO

Repartiendo las columas en varias tablas siguiendo algun patrón. Por ejemplo atributos físicos, personalidad, etc.
  #6 (permalink)  
Antiguo 02/12/2013, 17:44
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: variables de sesion en INSET INTO

Cita:
Iniciado por conceptuando Ver Mensaje
Gracias por la contestación, pero las necesito.
Si yo necesito saber cuanto pesas, cuanto mides, que pie calzas, de que color son tus ojos, tu pelo, si es largo y si eres alegre, como hago para normalizar eso en una tabla?
¿Cómo se normaliza?
Conociendo el escenario real. Que necesites todas las 55 variables no implica que todas compongan la misma entidad.
Por otro lado lo de peso, calzado, ojos y demás, se suena a ejemplo imaginario, y no a una entidad real. No parece ser lo que en realidad estás diseñando.

¿Por qué no nos dices qué es realmente lo que componen esos datos, y veremos cómo se podría normalizar.
Pero desde ya que por experiencia, en el mundo real, rara vez existen tablas con tantos datos si ya están normalzaidas, a menos que se trate de maquinarias... y aún así no lo son en todos los casos.

Explicanos el escenario real.
__________________
¿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 02/12/2013, 17:54
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Reúno datos de una vivienda, de los 55, 50 pertenecen a las medidas, largo, ancho, alto, ventanas, paredes. ademas esa vivienda puede llegar a tener 10 habitaculos, por lo tanto son 50 datos del mismo tipo.

La pagina además tiene otras tres tablas mas con mas datos.

Mi pregunta inicial es la que plantee más arriba, esto que me deciis ya lo he hecho, vuelvo a agradecer vuestras contestaciones, pero os pido si me podeis ayudar en lo que pregunte. Un saludo.
  #8 (permalink)  
Antiguo 02/12/2013, 18:20
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: variables de sesion en INSET INTO

Bueno, la descripción que has dado, a mi (como DBA dedicado al tema) no me habla de una tabla, sino de al menos media docena, por lo que sin dudas lo que tienes se podría normalizar, y mucho.
Pero, bueno, estás en tu derecho de hacer doble trabajo (uno ahora, y otra vez cuando veas que ese diseño no sirve para propósitos productivos).

Como sea, si quieres saber por qué te da error, es simple:

- Al menos una de las variables puede estar metiendo basura.
- El armado de la consulta tiene errores que serían fáciles de resolver si usaras un editor con corrector sintáctico (al menos NetBeans).
- La construcción de la consulta puede tener errores de PHP que terminar rompiendo la sintaxis de SQL (recordar que SQL NO ES PHP).

En definitiva, sin ver el código completo de cómo armas esa consulta... es difícil saber por dónde está fallando. Lo que sí tenemos seguro es que MySQL no está recibiendo una query bien escrita.

Para mayor claridad, MySQL no te dice que el error esta en esa parte. Te dice que está cerca de allí, porque esa es la última parte que mas o menos entendió bien. Puede estar antes, o puede estar después.

Postea todo ese codigo y veremos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 02/12/2013, 18:27
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Este es el codigo:
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_cnx_metahogar = "localhost";
$database_cnx_metahogar = "bdmetahogar";
$username_cnx_metahogar = "root";
$password_cnx_metahogar = "";
$empresa = 101;
$cnx_metahogar = mysql_pconnect($hostname_cnx_metahogar, $username_cnx_metahogar, $password_cnx_metahogar) or trigger_error(mysql_error(),E_USER_ERROR);


mysql_select_db($database_cnx_metahogar, $cnx_metahogar);
$sql = "INSERT INTO tbl_datos_vivienda (idContadorDatos,intActivo,strZonaClimatica,strOri entacion,intComedorLargo,intComedorAncho,intComedo rAlto,intComedorVentanas,intComedorParedes,intHabi t1Largo,intHabit1Ancho,intHabit1Alto,intHabit1Vent anas,intHabit1Paredes,intHabit2Largo,intHabit2Anch o,intHabit2Alto,intHabit2Ventanas,intHabit2Paredes ,intHabit3Largo,intHabit3Ancho,intHabit3Alto,intHa bit3Ventanas,intHabit3Paredes,intHabit4Largo,intHa bit4Ancho,intHabit4Alto,intHabit4Ventanas,intHabit 4Paredes,intBanoLargo,intBanoAncho,intBanoAlto,int BanoVentanas,intBanoParedes,intAseoLargo,intAseoAn cho,intAseoAlto,intAseoVentanas,intAseoParedes,int Pasillo1Largo,intPasillo1Ancho,intPasillo1Alto,int Pasillo1Ventanas,intPasillo1Paredes,intPasillo2Lar go,intPasillo2Ancho,intPasillo2Alto,intPasillo2Ven tanas,intPasillo2Paredes,intRecibidorLargo,intReci bidorAncho,intRecibidorAlto,intRecibidorVentanas,i ntRecibidorParedes,intCocinaLargo, intCocinaAncho, intCocinaAlto, intCocinaVentanas, intCocinaParedes,)
VALUES (NULL,'".$empresa."','".$zona."','".$orientacion." ','".$_SESSION['Comedor_largo1']."','".$_SESSION['Comedor_ancho1']."','".$_SESSION['Comedor_alto1']."','".$_SESSION['Comedor_retorno_ventana1']."','".$_SESSION['Comedor_retorno_paredes1']."','".$_SESSION['Hab_1_largo5']."','".$_SESSION['Hab_1_ancho5']."','".$_SESSION['Hab_1_alto5']."','".$_SESSION['Hab_1_retorno_ventana5']."','".$_SESSION['Hab_1_retorno_paredes5']."','".$_SESSION['Hab_2_ancho6']."','".$_SESSION['Hab_2_alto6']."','".$_SESSION['Hab_2_retorno_ventana6']."','".$_SESSION['Hab_2_retorno_paredes6']."','".$_SESSION['Hab_3_largo7']."','".$_SESSION['Hab_3_ancho7']."','".$_SESSION['Hab_3_alto7']."','".$_SESSION['Hab_3_retorno_ventana7']."','".$_SESSION['Hab_3_retorno_paredes7']."','".$_SESSION['Hab_4_largo8']."','".$_SESSION['Hab_4_ancho8']."','".$_SESSION['Hab_4_alto8']."','".$_SESSION['Hab_4_retorno_ventana8']."','".$_SESSION['Hab_4_retorno_paredes8']."','".$_SESSION['Bano_largo3']."','".$_SESSION['Bano_ancho3']."','".$_SESSION['Bano_alto3']."','".$_SESSION['Bano_retorno_ventana3']."','".$_SESSION['Bano_retorno_paredes3']."','".$_SESSION['Aseo_largo2']."','".$_SESSION['Aseo_ancho2']."','".$_SESSION['Aseo_alto2']."','".$_SESSION['Aseo_retorno_ventana2']."','".$_SESSION['Pasillo_1_largo9']."','".$_SESSION['Pasillo_1_ancho9']."','".$_SESSION['Pasillo_1_alto9']."','".$_SESSION['Pasillo_1_retorno_ventana9']."','".$_SESSION['Pasillo_1_retorno_paredes9']."','".$_SESSION['Pasillo_2_largo10']."')" or die(mysql_error());

mysql_query($sql, $cnx_metahogar) or die(mysql_error());
$status = "ok";

?>
  #10 (permalink)  
Antiguo 02/12/2013, 18:56
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Basura se puede referir a que no registra nada la variable, osea que la variable no tiene valor determinado?
Como editor uso Dreamweaver.
  #11 (permalink)  
Antiguo 02/12/2013, 19:35
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: variables de sesion en INSET INTO

Cita:
Como editor uso Dreamweaver.


Eso no lo menciones como editor. Es una herramienta de diseño de webs, no un editor de PHP. No sirve para lo que necesitas en esa etapa.

Bueno, yendo al código, tiene muchos errores. Muchos. Pero unos cuantos de ellos no sé si son producto del copy+Paste o son errores de tecleo.

Por empezar, hay unos cuantos campos cuyos nombres están partidos por un espacio en blanco, lo que seguro genera un error de sintaxis.

Además, al final hay una coma de más sin correspondiente campo final, en la declaración de campos del INTO.

Luego, estás metiendo un "or die" luego de la creación de la sentencia, que francamente no sé para qué sirve, pero seguro que no existe ningún mysql_error() en ese punto, por cuanto aún no has ejecutado nada.

Y finalmente no podemos saber si no se rompe la sintaxis por el contenido de las variables no numéricas, porque no solo no las estás sanitizando, ni validando, sino que además las tomas directamente del objeto sesión, lo que es una mala práctica.

Este es tu código, algo más legible. Te sugiero no hacer códigos "chorizo" como ese. Hazlo de forma que puedas leerlo con facilidad:

Código PHP:
<?php

# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_cnx_metahogar "localhost";
$database_cnx_metahogar "bdmetahogar";
$username_cnx_metahogar "root";
$password_cnx_metahogar "";
$empresa 101;
$cnx_metahogar mysql_pconnect($hostname_cnx_metahogar$username_cnx_metahogar$password_cnx_metahogar) or trigger_error(mysql_error(), E_USER_ERROR);


mysql_select_db($database_cnx_metahogar$cnx_metahogar);
$sql "INSERT INTO tbl_datos_vivienda (idContadorDatos, ";
$sql .= "intActivo,  strZonaClimatica, strOri entacion, intComedorLargo, ";
$sql .= "intComedorAncho, intComedo rAlto, intComedorVentanas, intComedorParedes, intHabi t1Largo, ";
$sql .= "intHabit1Ancho, intHabit1Alto, intHabit1Vent anas, intHabit1Paredes, intHabit2Largo,  ";
$sql .= "intHabit2Anch o, intHabit2Alto, intHabit2Ventanas, intHabit2Paredes, intHabit3Largo, ";
$sql .= "intHabit3Ancho, intHabit3Alto, intHa bit3Ventanas, intHabit3Paredes, intHabit4Largo, ";
$sql .= "intHa bit4Ancho, intHabit4Alto, intHabit4Ventanas, intHabit 4Paredes, intBanoLargo, ";
$sql .= "intBanoAncho, intBanoAlto, int BanoVentanas, intBanoParedes, intAseoLargo, intAseoAn cho, ";
$sql .= "intAseoAlto,intAseoVentanas, intAseoParedes, int Pasillo1Largo, intPasillo1Ancho, intPasillo1Alto, ";
$sql .= "int Pasillo1Ventanas, intPasillo1Paredes, intPasillo2Lar go, intPasillo2Ancho, intPasillo2Alto, ";
$sql .= "intPasillo2Ven tanas, intPasillo2Paredes, intRecibidorLargo, intReci bidorAncho, intRecibidorAlto,  ";
$sql .= "intRecibidorVentanas,i ntRecibidorParedes, intCocinaLargo, intCocinaAncho, intCocinaAlto,  ";
$sql .= "intCocinaVentanas, intCocinaParedes,) "/// Esa coma seguro genera error de sintaxis
$sql .= "VALUES (NULL,'" $empresa "', '" $zona "',  ";
$sql .= "'" $orientacion " ', '" $_SESSION['Comedor_largo1'] . "',  ";
$sql .= "'" $_SESSION['Comedor_ancho1'] . "', ";
$sql .= "'" $_SESSION['Comedor_alto1'] . "', ";
$sql .= "'" $_SESSION['Comedor_retorno_ventana1'] . "', ";
$sql .= "'" $_SESSION['Comedor_retorno_paredes1'] . "', ";
$sql .= "'" $_SESSION['Hab_1_largo5'] . "', ";
$sql .= "'" $_SESSION['Hab_1_ancho5'] . "', ";
$sql .= "'" $_SESSION['Hab_1_alto5'] . "', ";
$sql .= "'" $_SESSION['Hab_1_retorno_ventana5'] . "', ";
$sql .= "'" $_SESSION['Hab_1_retorno_paredes5'] . "', ";
$sql .= "'" $_SESSION['Hab_2_ancho6'] . "', ";
$sql .= "'" $_SESSION['Hab_2_alto6'] . "', ";
$sql .= "'" $_SESSION['Hab_2_retorno_ventana6'] . "', ";
$sql .= "'" $_SESSION['Hab_2_retorno_paredes6'] . "', ";
$sql .= "'" $_SESSION['Hab_3_largo7'] . "', ";
$sql .= "'" $_SESSION['Hab_3_ancho7'] . "', ";
$sql .= "'" $_SESSION['Hab_3_alto7'] . "', ";
$sql .= "'" $_SESSION['Hab_3_retorno_ventana7'] . "', ";
$sql .= "'" $_SESSION['Hab_3_retorno_paredes7'] . "', ";
$sql .= "'" $_SESSION['Hab_4_largo8'] . "', ";
$sql .= "'" $_SESSION['Hab_4_ancho8'] . "', ";
$sql .= "'" $_SESSION['Hab_4_alto8'] . "', ";
$sql .= "'" $_SESSION['Hab_4_retorno_ventana8'] . "', ";
$sql .= "'" $_SESSION['Hab_4_retorno_paredes8'] . "', ";
$sql .= "'" $_SESSION['Bano_largo3'] . "', ";
$sql .= "'" $_SESSION['Bano_ancho3'] . "', ";
$sql .= "'" $_SESSION['Bano_alto3'] . "', ";
$sql .= "'" $_SESSION['Bano_retorno_ventana3'] . "', ";
$sql .= "'" $_SESSION['Bano_retorno_paredes3'] . "', ";
$sql .= "'" $_SESSION['Aseo_largo2'] . "', ";
$sql .= "'" $_SESSION['Aseo_ancho2'] . "', ";
$sql .= "'" $_SESSION['Aseo_alto2'] . "', ";
$sql .= "'" $_SESSION['Aseo_retorno_ventana2'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_largo9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_ancho9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_alto9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_retorno_ventana9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_retorno_paredes9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_2_largo10'] . "')" or die(mysql_error());

mysql_query($sql$cnx_metahogar) or die(mysql_error());
$status "ok";
?>
Para completarlo, efectivamente, el modelo de datos que tienes es incorrecto, y si, se puede y se debería normalizar. pero ese es tema de otro foro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 02/12/2013, 19:42
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Gracias, voy a leer detenidamente todo lo que me has escrito y a tomar nota. En cuanto lo tenga comento y explico cuales han sido los errores. Gracias de nuevo.
  #13 (permalink)  
Antiguo 02/12/2013, 20:12
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Ok, aquí estoy de nuevo.

El tema de los espacios en blanco se debe de ser por el copia y pega.

Efectivamente había una coma al final que no pintaba nada.

El "or die" me quedo de cuando empece a crear la conexión que me tiraba error, ya lo elimine porque tampoco pinta nada.

Variables no numéricas solo son las tres primeras, $empresa $ zona y $orientacion, el resto si lo son y pueden contener decimales, las tengo definidas en los campos de la tabla como decimales.

Por ultimo, PhpMyAdmin me dice esto ahora:

MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). ( La consulta tardó 0.0013 seg )
  #14 (permalink)  
Antiguo 02/12/2013, 20:24
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 6 meses
Puntos: 56
Respuesta: variables de sesion en INSET INTO

Deberias de comprobar tambien los valores que admites como NOT NULL por que esos valores si no los introdujeras te darian fallo.
Pero haz lo que te estan aconsejando, que ellos no seran los que tengan los problemas.

Ten encuenta que estas planteando mal tus tablas.
un piso puede tener distintos valores, pero las tablas podrias crearlas con valores absolutos.
por ejemplo, si tienes la altura, crea una tabla con todas las alturas posibles y con un id.
asi con las propiedades que pudieras hacer esto.
Y en la tabla que usas para el piso en vez de estar repitiendo cadenas largas lo que haces es poner el id que le correspondiera de la tabla.
  #15 (permalink)  
Antiguo 02/12/2013, 21:12
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: variables de sesion en INSET INTO

Cita:
Iniciado por conceptuando Ver Mensaje
Por ultimo, PhpMyAdmin me dice esto ahora:

MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). ( La consulta tardó 0.0013 seg )
Un INSERT por definición no devuelve datos. Devuelve éxito o error, pero no datos.
En ese sentido, el mensaje de phpMyadmin, indicaría que todo anduvo bien.
Para verificar si se ha realizado tienes tres modos:
1) Si se ejecutó exitosamente, la función de PHP devuelve TRUE.
2) Si tiene un autoincrement, la función respectiva (mysql_insert_id()) devuelve un numero positivo mayor a 1.
3) Consultas por el dato primario ingresado y devuelve un registro.

Elige cual quieras y realiza la verificación. De todos modos lo más habitual es usar la primera opción, al menso programando desde PHP.
__________________
¿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; 03/12/2013 a las 06:04
  #16 (permalink)  
Antiguo 03/12/2013, 09:00
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Un INSERT por definición no devuelve datos. Devuelve éxito o error, pero no datos.
En ese sentido, el mensaje de phpMyadmin, indicaría que todo anduvo bien.
Para verificar si se ha realizado tienes tres modos:
1) Si se ejecutó exitosamente, la función de PHP devuelve TRUE.
2) Si tiene un autoincrement, la función respectiva (mysql_insert_id()) devuelve un numero positivo mayor a 1.
3) Consultas por el dato primario ingresado y devuelve un registro.

Elige cual quieras y realiza la verificación. De todos modos lo más habitual es usar la primera opción, al menso programando desde PHP.
Gracias por contestar, estoy en España y ya eran cerca de las cuatro de la mañana.

Cuando abro la tabla, esta está vacía, no a registrado ningún dato. Tengo echo's puestos en la página para ver si las variables tienen su valor y si lo tienen porque me las imprimen bien.
  #17 (permalink)  
Antiguo 03/12/2013, 09:36
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: variables de sesion en INSET INTO

las variables, tal vez. Pero debes mostrarnos la más importante:
Código PHP:
echo $sql///esta es la que neesitamos ver.

mysql_query($sql$cnx_metahogar) or die(mysql_error()); 
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #18 (permalink)  
Antiguo 03/12/2013, 10:14
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Da esto:

INSERT INTO tbl_datos_vivienda (intActivo, strZonaClimatica, strOrientacion, intComedorLargo, intComedorAncho, intComedorAlto, intComedorVentanas, intComedorParedes, intHabit1Largo, intHabit1Ancho, intHabit1Alto, intHabit1Ventanas, intHabit1Paredes, intHabit2Largo, intHabit2Ancho, intHabit2Alto, intHabit2Ventanas, intHabit2Paredes, intHabit3Largo, intHabit3Ancho, intHabit3Alto, intHabit3Ventanas, intHabit3Paredes, intHabit4Largo, intHabit4Ancho, intHabit4Alto, intHabit4Ventanas, intHabit4Paredes, intBanoLargo, intBanoAncho, intBanoAlto, intBanoVentanas, intBanoParedes, intAseoLargo, intAseoAncho, intAseoAlto,intAseoVentanas, intAseoParedes, intPasillo1Largo, intPasillo1Ancho, intPasillo1Alto, intPasillo1Ventanas, intPasillo1Paredes, intPasillo2Largo, intPasillo2Ancho, intPasillo2Alto, intPasillo2Ventanas, intPasillo2Paredes, intRecibidorLargo, intRecibidorAncho, intRecibidorAlto, intRecibidorVentanas,intRecibidorParedes, intCocinaLargo, intCocinaAncho, intCocinaAlto, intCocinaVentanas, intCocinaParedes) VALUES ('101', 'A', 'Montanosa ', '5', '3', '2.5', '0', '0', '', '', '', '0', '0', '3', '2.5', '0', '0', '', '', '', '0', '0', '5', '3', '2.5', '0', '0', '', '', '', '0', '0', '5', '3', '2.5', '0', '', '', '', '0', '0', '')'')'')'')'0')'0')'')'')'')'0')'0')'')'')'')'0') '0')

Los números son los datos que debería de haber registrado en la tabla, los ceros es porque los tengo puestos como predeterminados y los campos los tengo como FLOAT.

Lo que no entiendo son los últimos parentesis.
  #19 (permalink)  
Antiguo 03/12/2013, 10:39
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: variables de sesion en INSET INTO

Es una excelente pregunta, porque no veo que en este codigo tengas iteraciones que puedan explicarlo, a menos que $_SESSION esté recibiendo algo incorrecto en otra parte que no vemos...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #20 (permalink)  
Antiguo 03/12/2013, 11:36
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Es una excelente pregunta, porque no veo que en este codigo tengas iteraciones que puedan explicarlo, a menos que $_SESSION esté recibiendo algo incorrecto en otra parte que no vemos...
Que este recibiendo algo incorrecto? no lo entiendo, puede ser que sea que $_SESSION este recibiendo un valor distinto en dos sitios distintos?

Y si es así como es que el echo me da los resultados bien?
  #21 (permalink)  
Antiguo 03/12/2013, 11:45
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: variables de sesion en INSET INTO

Verifica el contenido de $_SESSION.
Integro.
De alguna parte salen esos paréntesis, y si no es del script que nos muestras, debe estar en otra parte.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #22 (permalink)  
Antiguo 03/12/2013, 11:54
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Verifica el contenido de $_SESSION.
Integro.
De alguna parte salen esos paréntesis, y si no es del script que nos muestras, debe estar en otra parte.
Esto no se como se hace.
  #23 (permalink)  
Antiguo 03/12/2013, 12:20
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

se hace con echo print $Sesion, el resultado es este:

[Comedor_comedor1] => 6
[Comedor_largo1] => 5
[Comedor_ancho1] => 3
[Comedor_alto1] => 2.5
[Comedor_retorno_ventana1] => 0
[Comedor_retorno_paredes1] => 0
[Hab_1_habitacion1] => 5
[Hab_1_largo5] =>
[Hab_1_ancho5] =>
[Hab_1_alto5] =>
[Hab_1_retorno_ventana5] => 0
[Hab_1_retorno_paredes5] => 0
[Hab_2_habitacion2] => 0
[Hab_2_ancho6] => 3
[Hab_2_alto6] => 2.5
[Hab_2_retorno_ventana6] => 0
[Hab_2_retorno_paredes6] => 0
[Hab_3_habitacion3] => 0
[Hab_3_largo7] =>
[Hab_3_ancho7] =>
[Hab_3_alto7] =>
[Hab_3_retorno_ventana7] => 0
[Hab_3_retorno_paredes7] => 0
[Hab_4_habitacion4] => 0
[Hab_4_largo8] => 5
[Hab_4_ancho8] => 3
[Hab_4_alto8] => 2.5
[Hab_4_retorno_ventana8] => 0
[Hab_4_retorno_paredes8] => 0
[Bano_bano1] => 5
[Bano_largo3] =>
[Bano_ancho3] =>
[Bano_alto3] =>
[Bano_retorno_ventana3] => 0
[Bano_retorno_paredes3] => 0
[Aseo_aseo1] => 0
[Aseo_largo2] => 5
[Aseo_ancho2] => 3
[Aseo_alto2] => 2.5
[Aseo_retorno_ventana2] => 0
[Aseo_retorno_paredes2] => 0
[Pasillo_1_pasillo1] => 4
[Pasillo_1_largo9] =>
[Pasillo_1_ancho9] =>
[Pasillo_1_alto9] =>
[Pasillo_1_retorno_ventana9] => 0
[Pasillo_1_retorno_paredes9] => 0
[Pasillo_2_pasillo2] => 0
[Pasillo_2_largo10] =>
[Pasillo_2_ancho10] =>
[Pasillo_2_alto10] =>
[Pasillo_2_retorno_ventana10] => 0
[Pasillo_2_retorno_paredes10] => 0
[Recibidor_recibidor1] => 0
[Recibidor_largo11] =>
[Recibidor_ancho11] =>
[Recibidor_alto11] =>
[Recibidor_retorno_ventana11] => 0
[Recibidor_retorno_paredes11] => 0
[Cocina_largo4] =>
[Cocina_ancho4] =>
[Cocina_alto4] =>
[Cocina_retorno_ventana4] => 0
[Cocina_retorno_paredes4] => 0
[Cocina_cocina_11] => 0
  #24 (permalink)  
Antiguo 03/12/2013, 12:29
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Yo hasta donde puedo deducir y es posible que me equivoque, los valores que no son ceros están bien, lo que son cero tambien, porque lo puse como predeterminados y los que están en blanco... no lo se, estas variables en esta ocasión no tienen valor porque no se les ha introducido previamente.
  #25 (permalink)  
Antiguo 03/12/2013, 12:46
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

No se si los parentesis son por culpa de las variables que no les asigne valor, pero quizás esto se podria solucionar con un if, osea, si la variable tiene valor, marcar el valor como hacen las que lo tienenn y si no lo tiene (osea es null y no estoy seguro de si no tiene valor sea null) marcar como cero para que registre en la tabla cero.

Como digo, ya no me sale ninguna idea mas. Gracias
  #26 (permalink)  
Antiguo 03/12/2013, 13:09
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Quizás así?

$ultimo_Comedor_comedor1 = "";
if ($_SESSION['Comedor_comedor1'] = NULL) {
$ultimo_Comedor_comedor1 = 0;
} elseif ($_SESSION['Comedor_comedor1'] >= 0){
$ultimo_Comedor_comedor1 = $_SESSION['Comedor_comedor1'];
}

Y después poner $ultimo_Comedor_comedor1 en Value de mi INSERT INTO.

Lo pregunto porque como sabéis son mas de 50 variables.
  #27 (permalink)  
Antiguo 03/12/2013, 13:53
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

Y se me ocurre y lo busco y no lo encuentro, quizás existe la forma de hacer un if masivo, osea con solo if pero todas las variables... eso aligeraría el trabajo y el código.
  #28 (permalink)  
Antiguo 03/12/2013, 14:25
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: variables de sesion en INSET INTO

A cómo yo lo veo, si no sabemos de dónde vienen esos caracteres, difícilmente puedas resolverlo de ningún modo.
Si no es mucho insistir, ¿podrías postear el código completo de ese script, ahora ya corregido en base a lo que hablamos?
Por simple verificación, porquer estoy basando mi analisis en el primero tuyo y en el que yo reformé.
Y si es posible, postea la parte en donde toman valor $empresa, $zona y $orientación.

Simples precauciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #29 (permalink)  
Antiguo 03/12/2013, 14:29
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

$empresa tiene valor absoluto = 101 Ahí va el escript:

Código PHP:
<?php 
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_cnx_metahogar "localhost";
$database_cnx_metahogar "bdmetahogar";
$username_cnx_metahogar "root";
$password_cnx_metahogar "";
$empresa 101;
$cnx_metahogar mysql_pconnect($hostname_cnx_metahogar$username_cnx_metahogar$password_cnx_metahogar) or trigger_error(mysql_error(), E_USER_ERROR);


mysql_select_db($database_cnx_metahogar$cnx_metahogar);
$sql "INSERT INTO tbl_datos_vivienda (intActivo, ";
$sql .= " strZonaClimatica, strOrientacion, intComedorLargo, ";
$sql .= "intComedorAncho, intComedorAlto, intComedorVentanas, intComedorParedes, intHabit1Largo, ";
$sql .= "intHabit1Ancho, intHabit1Alto, intHabit1Ventanas, intHabit1Paredes, intHabit2Largo,  ";
$sql .= "intHabit2Ancho, intHabit2Alto, intHabit2Ventanas, intHabit2Paredes, intHabit3Largo, ";
$sql .= "intHabit3Ancho, intHabit3Alto, intHabit3Ventanas, intHabit3Paredes, intHabit4Largo, ";
$sql .= "intHabit4Ancho, intHabit4Alto, intHabit4Ventanas, intHabit4Paredes, intBanoLargo, ";
$sql .= "intBanoAncho, intBanoAlto, intBanoVentanas, intBanoParedes, intAseoLargo, intAseoAncho, ";
$sql .= "intAseoAlto,intAseoVentanas, intAseoParedes, intPasillo1Largo, intPasillo1Ancho, intPasillo1Alto, ";
$sql .= "intPasillo1Ventanas, intPasillo1Paredes, intPasillo2Largo, intPasillo2Ancho, intPasillo2Alto, ";
$sql .= "intPasillo2Ventanas, intPasillo2Paredes, intRecibidorLargo, intRecibidorAncho, intRecibidorAlto,  ";
$sql .= "intRecibidorVentanas,intRecibidorParedes, intCocinaLargo, intCocinaAncho, intCocinaAlto,  ";
$sql .= "intCocinaVentanas, intCocinaParedes) ";
$sql .= "VALUES ('" $empresa "', '" $zona "',  ";
$sql .= "'" $orientacion " ', '" $_SESSION['Comedor_largo1'] . "',  ";
$sql .= "'" $_SESSION['Comedor_ancho1'] . "', ";
$sql .= "'" $_SESSION['Comedor_alto1'] . "', ";
$sql .= "'" $_SESSION['Comedor_retorno_ventana1'] . "', ";
$sql .= "'" $_SESSION['Comedor_retorno_paredes1'] . "', ";
$sql .= "'" $_SESSION['Hab_1_largo5'] . "', ";
$sql .= "'" $_SESSION['Hab_1_ancho5'] . "', ";
$sql .= "'" $_SESSION['Hab_1_alto5'] . "', ";
$sql .= "'" $_SESSION['Hab_1_retorno_ventana5'] . "', ";
$sql .= "'" $_SESSION['Hab_1_retorno_paredes5'] . "', ";
$sql .= "'" $_SESSION['Hab_2_ancho6'] . "', ";
$sql .= "'" $_SESSION['Hab_2_alto6'] . "', ";
$sql .= "'" $_SESSION['Hab_2_retorno_ventana6'] . "', ";
$sql .= "'" $_SESSION['Hab_2_retorno_paredes6'] . "', ";
$sql .= "'" $_SESSION['Hab_3_largo7'] . "', ";
$sql .= "'" $_SESSION['Hab_3_ancho7'] . "', ";
$sql .= "'" $_SESSION['Hab_3_alto7'] . "', ";
$sql .= "'" $_SESSION['Hab_3_retorno_ventana7'] . "', ";
$sql .= "'" $_SESSION['Hab_3_retorno_paredes7'] . "', ";
$sql .= "'" $_SESSION['Hab_4_largo8'] . "', ";
$sql .= "'" $_SESSION['Hab_4_ancho8'] . "', ";
$sql .= "'" $_SESSION['Hab_4_alto8'] . "', ";
$sql .= "'" $_SESSION['Hab_4_retorno_ventana8'] . "', ";
$sql .= "'" $_SESSION['Hab_4_retorno_paredes8'] . "', ";
$sql .= "'" $_SESSION['Bano_largo3'] . "', ";
$sql .= "'" $_SESSION['Bano_ancho3'] . "', ";
$sql .= "'" $_SESSION['Bano_alto3'] . "', ";
$sql .= "'" $_SESSION['Bano_retorno_ventana3'] . "', ";
$sql .= "'" $_SESSION['Bano_retorno_paredes3'] . "', ";
$sql .= "'" $_SESSION['Aseo_largo2'] . "', ";
$sql .= "'" $_SESSION['Aseo_ancho2'] . "', ";
$sql .= "'" $_SESSION['Aseo_alto2'] . "', ";
$sql .= "'" $_SESSION['Aseo_retorno_ventana2'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_largo9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_ancho9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_alto9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_retorno_ventana9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_1_retorno_paredes9'] . "', ";
$sql .= "'" $_SESSION['Pasillo_2_largo10'] . "')";
$sql .= "'" $_SESSION['Pasillo_2_largo10'] . "')";
$sql .= "'" $_SESSION['Pasillo_2_ancho10'] . "')";
$sql .= "'" $_SESSION['Pasillo_2_alto10'] . "')";
$sql .= "'" $_SESSION['Pasillo_2_retorno_ventana10'] . "')";
$sql .= "'" $_SESSION['Pasillo_2_retorno_paredes10'] . "')";
$sql .= "'" $_SESSION['Recibidor_largo11'] . "')";
$sql .= "'" $_SESSION['Recibidor_ancho11'] . "')";
$sql .= "'" $_SESSION['Recibidor_alto11'] . "')";
$sql .= "'" $_SESSION['Recibidor_retorno_ventana11'] . "')";
$sql .= "'" $_SESSION['Recibidor_retorno_paredes11'] . "')";
$sql .= "'" $_SESSION['Cocina_largo4'] . "')";
$sql .= "'" $_SESSION['Cocina_ancho4'] . "')";
$sql .= "'" $_SESSION['Cocina_alto4'] . "')";
$sql .= "'" $_SESSION['Cocina_retorno_ventana4'] . "')";
$sql .= "'" $_SESSION['Cocina_retorno_paredes4'] . "')";

mysql_query($sql$cnx_metahogar);
$status "ok";

?>
  #30 (permalink)  
Antiguo 03/12/2013, 14:31
 
Fecha de Ingreso: enero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: variables de sesion en INSET INTO

$zona:

Código PHP:
<?php
session_start
();

$recibido_zonas $_POST['strZonaClimatica'];

$_SESSION['zona'] = $recibido_zonas;

$zonas $_POST['strZonaClimatica'];

switch (
$zonas) {
    case 
"A":        
        echo 
"<SCRIPT>window.location='zona.php';</SCRIPT>";
        break;
   
    case 
"B":
        echo 
"<SCRIPT>window.location='zona.php';</SCRIPT>";
        break;
    case 
"C":
        echo 
"<SCRIPT>window.location='zona.php';</SCRIPT>";
        break;
    case 
"D":
        echo 
"<SCRIPT>window.location='zona.php';</SCRIPT>"
        break;    
    case 
"E":
        echo 
"<SCRIPT>window.location='zona.php';</SCRIPT>";
        break;
}
?>

Etiquetas: mysql, sql, tabla, variable, variables
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 09:11.