Foros del Web » Programando para Internet » PHP »

capturar nombre de usuario logeado

Estas en el tema de capturar nombre de usuario logeado en el foro de PHP en Foros del Web. Hola gente, el tema es el siguiente. Tengo una base de datos donde varios usuario con nick diferentes registran datos, para mostrar esos datos hago ...
  #1 (permalink)  
Antiguo 11/05/2012, 10:39
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Pregunta capturar nombre de usuario logeado

Hola gente,
el tema es el siguiente. Tengo una base de datos donde varios usuario con nick diferentes registran datos, para mostrar esos datos hago la consulta basica:

Código PHP:
$datos_sql mysql_query("SELECT * FROM orders ORDER BY id DESC limit " $limit[0] . ', ' $limit[1]); 
Bien, ahora lo que quiero es que cuando un usuario haga el login, la consulta muestre solo sus entradas. He probado con esto:

Código PHP:
$login $_SESSION['login'];

$datos_sql mysql_query("SELECT * FROM orders WHERE usuario_name='".$login."' ORDER BY id DESC limit " $limit[0] . ', ' $limit[1]); 
$_SEESION['login'] es el nick que tendría que recuperar del login, usuario_name es el campo de la tabla mysql donde esta guardado el nick del usuario. La logica me dice que es así, pero no me funciona, en la primer consulta me muestra todos los registros de todos los usuarios.

Les agradezco la ayuda.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #2 (permalink)  
Antiguo 11/05/2012, 10:45
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: capturar nombre de usuario logeado

Todo parece estar bien, asegurate de que la variable se sesion "login" contenga efectivamente el nombre del usuario ($_SESSION['login']="nombre") y de haber inicial izado las sesiones (session_start();)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 11/05/2012, 10:45
 
Fecha de Ingreso: mayo-2012
Ubicación: San Salvador, El Salvador
Mensajes: 5
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: capturar nombre de usuario logeado

Pues entenderia yo que asi esta bien, imprime con echo lo que tiene $login, porque a veces uno piensa que la informacion que se guarda en la variable es la que se necesita y al final no es tan asi;
  #4 (permalink)  
Antiguo 11/05/2012, 10:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: capturar nombre de usuario logeado

Pues si, la lógica está bien, es posible que el problema sea otro.

Puede que no haya registros bajo ese usuario, deberías imprimir la consulta antes de ejecutarla y observar si está bien formulada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 11/05/2012, 11:34
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

Gracias por responder...
aunque se vea que esta bien hay algo que no... si imprimo con echo el login me lo muestra sin problemas, es como si el fallo estuviera en $user = $_SESSION['login'] por que al hacer la consulta el WHERE no reconoce el '$user' y si quito el WHERE me muestra todas ls consultas...

Espero alguna idea...

Saludos
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #6 (permalink)  
Antiguo 11/05/2012, 11:52
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

Ok, esto es muy raro, ahora me da este error:
Código MySQL:
Ver original
  1. Fallo en la seleccion de orders en la Base de Datos: Unknown column 'castor' in 'where clause'

donde castor es el nick, no la columna, como puede ser posible, esta es la consulta:

Código PHP:
Ver original
  1. $user = $_SESSION['login'];
  2.  
  3. $datos_sql = mysql_query("SELECT * FROM orders WHERE usuario_name=$user ORDER BY id DESC limit " . $limit[0] . ', ' . $limit[1]);
  4. if (!$datos_sql) {
  5. die("Fallo en la seleccion de orders en la Base de Datos: " . mysql_error());
  6. }
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #7 (permalink)  
Antiguo 11/05/2012, 11:53
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: capturar nombre de usuario logeado

haz esto y pega el resultado aqui:

echo "SELECT * FROM orders WHERE usuario_name='".$login."' ORDER BY id DESC limit " . $limit[0] . ', ' . $limit[1];

------------------------

en tu último post pones esto:

mysql_query("SELECT * FROM orders WHERE usuario_name=$user ORDER BY id DESC limit " . $limit[0] . ', ' . $limit[1]);

Debe llevar comillas:

mysql_query("SELECT * FROM orders WHERE usuario_name='$user' ORDER BY id DESC limit " . $limit[0] . ', ' . $limit[1]);
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Última edición por stramin; 11/05/2012 a las 11:55 Razón: Agregando contenido
  #8 (permalink)  
Antiguo 11/05/2012, 11:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: capturar nombre de usuario logeado

Repito, ¿puedes imprimir la consulta donde usas WHERE para ver si está bien?

Edito: OK, creo que ya sabes por qué.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 11/05/2012, 11:58
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

ok, esto es lo que me imprime:
Código PHP:
Ver original
  1. SELECT * FROM orders WHERE usuario_name='didakh' ORDER BY id DESC limit 0, 10
  2. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/didakh/public_html/mostrarresultados.php on line 54

el warning es del while que no encuentra nada
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #10 (permalink)  
Antiguo 11/05/2012, 12:03
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

Con comillas tampoco me muestra nada, aunque como ven, recupera correctamente el $login en el WHERE..., esto es muy raro y no le veo la solucion, ya he probado de todo (bueno, eso que estan pensando no)
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #11 (permalink)  
Antiguo 11/05/2012, 13:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: capturar nombre de usuario logeado

Bueno pues, ahora copia la consulta tal cual la imprimiste y ejecutala en tu phpMyAdmin o desde la consola de MySQL.

¿Eso te da resultados?

El punto es que aparentemente la consulta está bien formulada, debes corroborarlo con alguna herramienta que no sea tu código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 11/05/2012, 14:41
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

Bueno, he realizado este código, sin nada, básico:
Código PHP:
Ver original
  1. <?php
  2.  
  3. //1. Crear conexión a la Base de Datos
  4. $conexion = mysql_connect("localhost","****","****");
  5. if (!$conexion) {
  6. die("Fallo la conexión a la Base Didakh: " . mysql_error());
  7. }
  8. //2. Seleccionar la Base de Datos a utilizar
  9. $seleccionar_bd = mysql_select_db("didakh_clientes", $conexion);
  10. if (!$seleccionar_bd) {
  11. die("Fallo la selección de la Base de Orders: " . mysql_error());
  12. }
  13.  
  14.  $user = $_SESSION["login"];
  15.  
  16. $consulta = mysql_query("SELECT * FROM orders Where usuario_name='$user'");
  17. if (!$consulta) {
  18. die("Fallo en la seleccion de orders en la Base de Datos: " . mysql_error());
  19. }
  20.  
  21. while ($fila = mysql_fetch_array($consulta))
  22. {
  23. echo " ".$_SESSION['login']." ";
  24. echo" ".$fila['lead_id']." ";
  25. echo" ".$fila['usuario_name']." ";
  26. echo" <p><a href='logout.php'>borrar</a></p> ";
  27. }
  28.  
  29. mysql_close($conexion);
  30.  
  31. ?>

no me muestra nada, la base de datos, tiene los campos que pido con informacion y en el campo de usuario_name el nick con el que he ingresado, pero nada de nada.... como puede ser?
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #13 (permalink)  
Antiguo 11/05/2012, 14:54
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: capturar nombre de usuario logeado

Veo que no estás poniendo la variable de conexión, prueba así:

mysql_query("SELECT * FROM orders Where usuario_name='$user'",$conexion);

Prueba a hacer lo que dijo pateketrueke, pega la consulta que salio del echo en tu gestor de BD, o sea esta:

SELECT * FROM orders WHERE usuario_name='didakh' ORDER BY id DESC limit 0, 10
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #14 (permalink)  
Antiguo 11/05/2012, 15:33
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

ok, si pongo SELECT * FROM orders WHERE usuario_name='didakh' ORDER BY id DESC limit 0, 10 me arroja:
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0003 sec )

y si pongo
SELECT * FROM orders WHERE 1
Showing rows 0 - 3 ( 4 total, Query took 0.0007 sec)

conclusion que saco..... la linea del SELECT esta mal, pero en que parte?, misterios de php.

estoy empezando a pensar en otro metodo para presentar los resultados de los ingresos por usuario, pero
no se me ocurre como.....
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..

Última edición por desoler; 11/05/2012 a las 15:37 Razón: edito
  #15 (permalink)  
Antiguo 11/05/2012, 15:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: capturar nombre de usuario logeado

Cita:
Iniciado por desoler Ver Mensaje
ok, si pongo SELECT * FROM orders WHERE usuario_name='didakh' ORDER BY id DESC limit 0, 10 me arroja:
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0003 sec )

y si pongo
SELECT * FROM orders WHERE 1
Showing rows 0 - 3 ( 4 total, Query took 0.0007 sec)

conclusion que saco..... la linea del SELECT esta mal, pero en que parte?, misterios de php.

estoy empezando a pensar en otro metodo para presentar los resultados de los ingresos por usuario, pero
no se me ocurre como.....
Estás absolutamente equivocado, aquí el problema no es de php porque la consulta de SQL es otro lenguaje diferente.

Y además el hecho es que está bien formulada ya que el mensaje que recibes indica que se ejecuta bien pero efectivamente no da resultados, eso no es un error de php.
Cita:
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0003 sec )
Si MySQL te dice que no hay resultados, ¡entonces no hay resultados!

¿Estás seguro que en tu tabla hay algún registro bajo ese usuario?

Cita:
la linea del SELECT esta mal, pero en que parte?
PDTA: no eches culpas si no comprendes las diferencias entre lenguajes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 11/05/2012, 15:52
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

Hola pateketrueke,
vamos a ver, el echo que este pidiendo consejos y/o ayuda en el foro no quiere decir que sea un ignorante, tal ves no tenga el "amplio" conocimiento que tienes tu, pero no me parece educado poner un PDTA: "si no sabes diferenciar dos lenguajes".
La expresion que utilizo "misterios de php" la digo justamente por que la linea de código esta bien escrita ya que no es la primera ves que la utilizo.
Como podes observar, si hago una consulta generica en la misma consulta si arroja resultados "Showing rows 0 - 3 ( 4 total, Query took 0.0007 sec)", no así cuando utilizo WHERE.

Yo tomo tus consejos y los de los demás para aprender, ayudar y ser mejor persona, si tu haces lo mismo acepta este:
Si te tomas el tiempo para responder a un post, ayuda y no critiques tratando de "ignorantes" a los demás compañeros.

PD:(PDTA): Aun así agradezco tu tiempo.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #17 (permalink)  
Antiguo 11/05/2012, 16:22
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: capturar nombre de usuario logeado

Antes que nada, comprendo que sea normal en este foro que hayan discuciones así los viernes, es un hecho que se repite cada viernes, pero recuerda que Pateketrueke es uno de los maestros jedis del foro desde hace unos 700 siglos y en este caso tiene razón en lo que dice, son lenguajes independientes y PHP no tiene nada que ver ahí.

Dejando de lado eso y espero que no lo continues ni te lo tomes personal:

me dio curiosidad eso de que no te muestre el dato con el where, intenta esta y dime que resultado te da:

SELECT * FROM orders WHERE usuario_name LIKE '%didakh%' ORDER BY id DESC limit 0, 10

Tengo la ligera sospecha de que el problema podría ser un espacio ninja...

Luego si fuese posible prueba también esta:

SELECT * FROM orders WHERE usuario_name LIKE '%' ORDER BY id DESC limit 0, 10

Animo con tu problema!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #18 (permalink)  
Antiguo 11/05/2012, 16:42
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

Hola stramin,

Ok, tratare de postear otro dia que no sea viernes...jeje

esto es muy raro de verdad, principalmente por que no es el primer codigo que hago en php y mysql, no soy un "jedis" pero algo entiendo y esto no tiene logica.

ok, con esta en
SELECT * FROM orders WHERE usuario_name LIKE '%didakh%' ORDER BY id DESC limit 0, 10,
en el gestor SQL me da esto:
Showing rows 0 - 1 ( 2 total, Query took 0.0006 sec) [id: 29082048 - 29082045]
que es lo que necesito o sea que seria asi,

con esta: SELECT * FROM orders WHERE usuario_name LIKE '%' ORDER BY id DESC limit 0, 10
me da esto, que es igual que poner LIKE '1'
Showing rows 0 - 3 ( 4 total, Query took 0.0005 sec) [id: 29082050 - 29082045]

o sea que la primera esta bien, que sacas en claro de esto, por que eso de "espacio ninja" me suena a chino (nunca mejor dicho)... jeje

como acomodo mi codigo para matar este "espacio chino"?

Muchas gracias por el avance, ahora por lo menos se que el fallo viene desde Occidente...jeje
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #19 (permalink)  
Antiguo 11/05/2012, 16:47
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: capturar nombre de usuario logeado

Perfecto, te recomiendo que lo dejes así, los espacios japoneses podrían ser 2:

1) Espacios: A esto me refiero con espacios ninja, a que puede haber uno o más espacios alrededor del texto, por ejemplo: " didakh", "didakh ", " didakh ", e incluso "didakh ___"

2) Diferencias de mayúsculas: o sea que es posible que en la BD tengas el nombre con mayúsculas, como "Didakh" o "DIDAKH"
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #20 (permalink)  
Antiguo 11/05/2012, 16:58
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

ok, cuando te refieres a que lo deje así es que lo deje como lo tengo?:

$datos_sql = mysql_query("SELECT * FROM orders WHERE usuario_name='$user' ORDER BY id DESC limit " . $limit[0] . ', ' . $limit[1]);
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #21 (permalink)  
Antiguo 11/05/2012, 17:02
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: capturar nombre de usuario logeado

ok, solucionado,
Lo tuyo ha sido enorme, un millon de gracias.
Ahora para aprender y no te quiero robar mas tiempo, por que se producen estos espacios o a que se deben?
mas que nada para corregir el fallo y si, efectivamente tenia un espacio antes y otro después.

Muchas gracias
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #22 (permalink)  
Antiguo 11/05/2012, 17:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: capturar nombre de usuario logeado

Es posible que al insertar tus registros previamente hayas agregado sin querer los espacios, ese tipo de detalles no se suelen ver si no depuras tus consultas a cada paso que das.

Vamos, que los espacios no se producen solos, al programar debiste cometer algún error ya sea al insertar tus registros o bien, al generar tu consulta actual.

Deberías revisar el primer caso para así evitar problemas posteriores.

PDTA: mi trato no es despectivo bajo ningún motivo, simplemente la oscuridad actúa en mi tanto como la fuerza.

Edito: y dicho mejor, no deberías cuestionar la fuerza.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 11/05/2012 a las 17:43
  #23 (permalink)  
Antiguo 12/05/2012, 23:13
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: capturar nombre de usuario logeado

Es común que la gente agregue espacios cuando ingresa datos en los formularios, ya que el sistema generalmente los elimina automáticamente (en otras palabras los programadores hemos mal acostumbrado a los usuarios facilitandoles el ingreso).

La razón por la que no es buena idea usar esta consulta:

SELECT * FROM orders WHERE usuario_name LIKE '%didakh%' ORDER BY id DESC limit 0, 10

Es que con ella podría ingresar un usuario simplemente escribiendo "dida", "da", e incluso sin escribir nada "".

Para este tipo de casos existe en php la funcion trim, que actua como repelente de asiáticos, la cual deberías poner en cada ingreso de formulario a tu base de datos.

Básicamente lo que hace es eliminar los espacios samurai que hayan alrededor del texto ingresado, podrías usarlo algo así:

$name=$_POST['name'];
$name=mysql_real_escape_string($name); // Para evitar que se guarde en tu BD alún caracter de escape o comilla
$name=trim($name); // para eliminar los espacios alrededor del texto
mysql_query("INSERT INTO names VALUES ('$name')");

Eso si eres un programador ordenado, ahora si eres un programador ahorrativo:

mysql_query("INSERT INTO names VALUES ('".trim(mysql_real_escape_string($_POST['name']))."')");

(Por cierto no soy racista ni nada, solo me hizo gracia el hilo oriental que llevamos XD)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Etiquetas: mysql
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 07:01.