Foros del Web » Programando para Internet » PHP »

Problema con sesiones

Estas en el tema de Problema con sesiones en el foro de PHP en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 11/08/2014, 05:41
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Problema con sesiones

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:

Código PHP:
Ver original
  1. //$SESSION['buscar'] me recoge la empresa introducida en el php de la búsqueda
  2.  
  3. echo $SESSION['buscar'];
  4.  
  5. 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']);
  #2 (permalink)  
Antiguo 11/08/2014, 06:15
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Problema con sesiones

Hola y bienvenida!

A ver 2 cositas.. el where simplemente es un condicional .

Código MySQL:
Ver original
  1. EJECUTA CODIGO SQL {WHERE} condición1 AND condicion2
condicion1 y condicion2 Solo si son verdaderas Ejecutará el código.


Existen 2 operadores lógicos básicos que le puedes dar al {WHERE}
AND y OR

Código MySQL:
Ver original
  1. CODIGO SQL {WHERE} 1+3=4   AND  3+1=4
devolverá Verdadero porque se cumplen las dos condiciones y se ejecuta el sql

Código MySQL:
Ver original
  1. CODIGO SQL {WHERE} 1+3=4   AND  3+5=4
devolverá Falso porque se cumple 1 de las dos condiciones y no se ejecuta el sql

Es decir con AND siempre se tiene que cumplir todas y cada una delas condiciones que le hayas puesto .

El operador lógico OR se ejecutara si se cumple alguna de las condiciones .

Código MySQL:
Ver original
  1. CODIGO SQL {WHERE} 1+3=4   OR  3+5=4
Se ejecutará porque 3+1 = 4 y por tanto 1 de las 2 condiciones es True .

Dicho esto ,

Código MySQL:
Ver original
  1. 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']);

Aquí necesitamos saber como recuperas estos valores porque hay varios errores ..

Código PHP:
Ver original
  1. puertos[Puerto]

debería ser
Código HTML:
Ver original
  1. $puertos[Puerto]
en el caso que tengas una variable puertos , con un array asociativo.

Código MySQL:
Ver original
  1. WHERE nombre_de_la_empresa=".$SESSION['buscar']
;

Yo particularmente no evaluaría así! porque solo se ejecutaría el sql en el caso de que le pasáramos la info por sesiones... ademas el código es bastante vulnerable a inyecciones..

Si quieres insertar en bd datos por lógica no necesitas ninguna condición desde base de datos , pues es tu script quien manipula que se va a insertar ...

Ahora bién , si EXISTEN datos entonces si necesitas un condicional y debes hacer un UPDATE.

Por ejemplo : supongamos que tengas que actualizar la fecha de un cliente cada vez que entra,
y que recibimos el id de cliente por POST
Código MySQL:
Ver original
  1. mysql_query("UPDATE clientes SET  fecha_ultim_vsta='now()' WHERE user_id= '$POST_['id']'")

No se si era lo que necesitabas saber!

Un saludo y Ánimo!
  #3 (permalink)  
Antiguo 11/08/2014, 06:27
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: Problema con sesiones

Antes de proceder a escribir una query de SQL embebida en PHP, recomiendo enfáticamente leer un buen manual básico de SQL...
WHERE no es una cláusula de INSERT. Puede serlo de SELECT, UPDATE o DELETE, pero jamás de INSERT.
Esto está MAL:
Código MySQL:
Ver original
  1. INSERT INTO `{v1}`
  2. VALUES ('$v1', '$fila[Dispositivos]', 'puertos[Puerto]', '$puertos[Puerto]' , '$puertos[Puerto]',
  3. '$nombreDirectorio', now(), '$SI', '$NO', null, 'empresa2[nombre_de_la_empresa]')
  4. WHERE nombre_de_la_empresa=".$SESSION['buscar']);
Ejecutar eso te disparará un error de sintaxis, sea en MySQL, SQL Server, Oracle, DB2, Firebird, PosgreSQL o lo que quieras usar.

Nota:
Cita:
y otra gente que dice que sí
Esa otra gente te miente. O inventa cualquier cosa, o bien no estás entendiendo el ejemplo que te proveeen.

Cualquier duda, no te quedes con palabras dichas por cualquiera: Usa el Manual de Referencia del DBMS correspondiente y verás.
Los manuales no muerden... Ni tampoco dejan ciegos: http://dev.mysql.com/doc/refman/5.0/es/insert.html
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 11/08/2014, 07:01
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema con sesiones

gnzoloyo, te agradezco tus aportaciones, solo aclarar que en internet hay numerosas páginas que inducen a error diciendo que Where si puede usarse en insert into, luego no es que no entienda el ejemplo que me proveen; podría ser, claro, pero no es el caso.

Por otra parte decirte que en mi vida he tenido q leer distintos manuales de diferentes índoles, por lo que conozco de primera mano que no muerden, y gracias a Dios ciega parece que tampoco me he quedado. Tengo una duda que no logro solucionar desde hace semanas y pregunto en un foro por si alguien tiene la amabilidad de ayudarme, eso no quiere decir que no haya leído manuales de SQL. De nuevo, gracias por tus consejos.

Djoaq, te agradezco mucho tu explicación.
En el tema de los puertos tienes razón, al transcribir mi código olvidé poner $ delante, en efecto tengo un array asociativo y esa parte funciona bien en otro buscador que tengo dentro de la interfaz. El problema es que estoy probando tantas cosas que ya no sé qué podría funcionar, intentaré obviar el condicional en la consulta y hacerlo fuera con un if igualado a la sesión, por ejemplo, (no se si se puede, estoy aprendiendo sesiones ahora) a ver si de esa forma logro que funcione todo tal y como pretendo.

Muchas gracias!
  #5 (permalink)  
Antiguo 11/08/2014, 07:23
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: Problema con sesiones

Este tema lo empezaste en otro post, y allí te he respondido más detalladamente en cuanto a lo que correspondería hacer en referencia al caso del WHERE.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql, sesiones, tabla
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 04:11.