PHP - Problema con sesiones

   
Vista:

Problema con sesiones

Publicado por Elisa (71 intervenciones) el 11/08/2014 13:44:32
Buenos días.

Es la primera vez que trabajp con sesiones y me estoy volviendo un poco loca .

Tengo un buscador por nombre de empresa, y lo que quiero es que un botón suba una ruta a todas aquellas tablas cuyo nombre de empresa sea el escrito en el buscador.

Por tanto, tengo dos php.

Creo que el código del php lo tengo bien, ya que en el php al que me lleva el botón de insertar (segundo php) me muestra bien la empresa que he recogido en la sesión. Pero es en la consulta de insert en la que algo me está fallando, hay gente que dice que WHERE no es una cláusula de INSERT INTO y otra gente que dice que sí. La verdad es que no le veo mucho sentido al WHERE en mi código, pero si no lo pongo, no se cómo decirle que suba la ruta sólo en las tablas que quiero. Llevo algunos días con ello y no se qué más probar ni preguntar =( me estoy desesperando un poco, así que si me echarais una mano os lo agradecería...

El código que tengo en la consulta es este:

1
2
3
4
5
//$SESSION['buscar'] me recoge la empresa introducida en el php de la búsqueda
 
echo $SESSION['buscar'];
 
mysql_query("INSERT INTO `{v1}` VALUES ('$v1', '$fila[Dispositivos]', 'puertos[Puerto]', '$puertos[Puerto]' , '$puertos[Puerto]', '$nombreDirectorio', now(), '$SI', '$NO', null, 'empresa2[nombre_de_la_empresa]') WHERE nombre_de_la_empresa=".$SESSION['buscar']);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas

Problema con sesiones

Publicado por Vainas (254 intervenciones) el 11/08/2014 16:26:32
Buenas. Vamos por partes.

1. No desesperes que la programacion es asi. Tomatelo con calma que al final se soluciona
2. usas session_start() para mantener las sessiones entre paginas?. Si quieres mantener los valores sera necesario que antes de usar$_SESSION['buscar'] uses session_start();
3. Imprime los valores para comprobar que no tienes error en ese sitio. Por ejemplo imprime con echo el valor de $_SESSION['buscar'].
4. Fijate que es con barra baja los valores que vienen del servidor $_SESSION[], $_POST[], $_GET[]...
5. Pienso que tu base de datos es mysql asi que buscamos primero documentacion en la web sobre INSERT: http://www.w3schools.com/php/php_mysql_insert.asp

y lo siguiente es en la documentacion oficial: http://dev.mysql.com/doc/refman/5.6/en/insert.html

1
2
3
4
5
6
7
8
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Yo en ningun lado veo el WHERE. Creo que es mas de sentencias SELECT, UPDATE y DELETE

Usar algun programa para insertar datos en tu base de datos, como phpmyadmin. yo uso HeidiSQL Portable. Con esto puedes crear primero la sentencia que vas a usar y luego ya incluirla dentro de tu php.

Ya te comente en un anterior post que tenias problemas al escapar las variables en la sentencia. Revisemos de nuevo cosas de la sentencia mysql:

1
2
INSERT INTO table_name
VALUES (value1,value2,value3,...);

Aqui hay que destacar que cuando los valores son VARCHAR o texto en general hay que colocar comillas a los valores asi:

1
2
INSERT INTO table_name
VALUES ('xxx','ccc','eee',...);

Por que crees que es necesario meter el valor de la tabla en corchetes?

1
`{v1}`

si la tabla se llama v1 con poner v1 te basta:

1
$sql = "INSERT INTO v1 VALUES ";

Que pasa con las variables dentro del string? que hay que escaparlas asi:

1
$values = "(".$v1.")";

Pero es que encima esto tiene un problema por que como dijimos antes a los valores de tipo texto hay que meterlos dentro de comillas con lo que el texto queda asi.

1
$values = "('".$v1."')";

Al final todo queda mas o menos asi:

1
2
3
$sql = "INSERT INTO v1 VALUES ";
$values = "('".$v1."','".$fila[Dispositivos]."','".puertos[Puerto]."','".$puertos[Puerto]."','".$puertos[Puerto]."','".$nombreDirectorio."',".now().",'".$SI."','".$NO."', NULL,'".empresa2[nombre_de_la_empresa]."');";
$sentencia = $sql.$values;

Desconozco si todos los valores son de tipo VARCHAR o hay alguno de tipo fecha o entero... Yo los pongo todos como texto pensando que es asi.

Podrias imprimir el valor de $sentencia antes de ejecutarlo y comprobar si es lo mismo que tienes creado para introducir tus pripias sentencias con phpmyadmin o algun otro programa para base de datos.

Espero que te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con sesiones

Publicado por Elisa (71 intervenciones) el 12/08/2014 08:29:00
Muchísimas gracias por tu extenso post Vainas.

1. Lo se, pero a veces uno se desespera! =)
2.Utilizo session_start() en ambos .php
3.He imprimido $_SESSION['buscar'] en la página a la que me lleva el botón de insertar y me imprime correctamente lo que introduzco en el cuadro de texto de la búsqueda dentro del php anterior.
4.Todo lo tengo con barra baja.
5. Mi base de datos es mysql y utilizo xampp.

Se que en ninguna de las páginas oficiales aparece la cláusula WHERE para INSERT, pero busqué en otras y había gente que lo utilizaba, así que probé; por eso preguntaba si mi consulta estaba bien , porque tampoco le veía mucho sentido a la misma...

Yo quiero que se inserte una fila nueva cada vez que inserto el contenido, no modificarla, así que no veía otra forma de proceder que con INSERT...

`{v1}` ; culpa mía, al escribir la consulta se me ha olvidado el $; la tabla se llama `{$v1}` , he dado dinamismo a la interfaz.

El php del botón insertar, lo estoy utilizando en otras dos pestañas de mi interfaz, esta vez sin sesiones, y en ambos casos todo me funciona bien; inserta contenido, modifica otros datos que le pido...pero es esta consulta, con la condición de la búsqueda la que me está dado problemas. Pensaré en utilizar UPDATE y que me vaya actualizando cada vez que doy al botón, y aunque funciona bien, probaré a cambiar todas las variables con las comillas necesarias que me explicas, por si puede dar lugar a errores en otras partes de la interfaz más tarde.

Muchas gracias de nuevo por todas las explicaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar