Foros del Web » Programando para Internet » PHP »

La solución está en el foro

Estas en el tema de La solución está en el foro en el foro de PHP en Foros del Web. Muy buenas; He titulado este mensaje así debido a que tengo un problema que está resuelto en esta página. Me explico: Tengo una base de ...
  #1 (permalink)  
Antiguo 29/11/2002, 10:04
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
La solución está en el foro

Muy buenas;

He titulado este mensaje así debido a que tengo un problema que está resuelto en esta página. Me explico:

Tengo una base de datos que contiene usuarios que se han dado de alta en mi web, y lo que necesito saber es cómo hacer para que, cada vez que acceda a mi web, un mensaje me indique el número de usuarios que se han dado de alta en mi web desde que la visité por última vez. Esto se realiza, como ya abrán visto, cuando se entra en este magnífico foro, que aparece un mensaje en el que te dice:

"Hola ferent, han habido 89 nuevos Temas y 143 nuevos Mensajes desde tu última Visita.
Hora actual: 05:00 PM Última visita: 29-11-2002 02:21 PM."

más un link que te lleva a esos nuevos mensajes:
Ver nuevos mensajes

¿Alguien sabe cómo se realiza esto?

La razón por la que lo necesito es para llevar un control total de la gente que se ha registrado en mi web si tener que acceder a la base, con el peligro de que no recuerde si el último que se dio de alta era pepito o jaimito.

Muchas gracias por la atención y por la ayuda.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #2 (permalink)  
Antiguo 29/11/2002, 10:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. no se como tendas estructurada tu base de datos .. pero solo se trata de ir haciendo consultas segun los criterios que quieras ...

Tal vez te hace falta un manual de SQL para ayudarte a saber que tipo de consultas bajo q condiciones puedes hacer..

Todo dependerá de tu base de datos y tablas q tengas .. asi de como gestiones la información de tus usuarios en esas tablas .. ¿ o no tienes eso ahora?

Un saludo,
  #3 (permalink)  
Antiguo 29/11/2002, 11:33
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Te puedo explicar el proceso a seguir, luego programarlo es cosa tuya.

1- Cuando alguien se registre en tu página, en el formulario de registro pones un campo hidden con value time() (tendrás que hacerlo en php) y obviamente pones el respectivo campo para que se guarde en la base de datos. Así sabes en que instante se registró un usuario.
2- Al entrar en tu página se tiene que leer una cookie (lee el paso 3 ahora) cuyo contenido es el time() de tu última visita. Lo guardamos por ejemplo en $ultima
3- Al abrir, después de leer la cookie, se tiene que guardar una cookie nueva cuyo contenido sea time(). Así se borra la anterior y queda la nueva, con esto queda grabada tu última visita.
4- De seguido tienes que hacer una consulta a la base de datos para que te retorne todos los usuarios cuyo campo que contiene el time() es mayor que $ultima. Es decir, te selecciona los usuarios que se han registrado desde tu última visita que es lo que querías.

Todo esto obviamente hay que formalizarlo, espero que te sea de gran ayuda. Por cierto, que si no me equivoco, esto vale tanto para ti como para cualquier usuario que visite tu pagina.
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #4 (permalink)  
Antiguo 29/11/2002, 11:38
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
me pondré manos a la obra, gracias.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #5 (permalink)  
Antiguo 29/11/2002, 11:40
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Estamos para eso
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #6 (permalink)  
Antiguo 29/11/2002, 11:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
1- Cuando alguien se registre en tu página, en el formulario de registro pones un campo hidden con value time() (tendrás que hacerlo en php) y obviamente pones el respectivo campo para que se guarde en la base de datos. Así sabes en que instante se registró un usuario.

eso no es necesario ..
A la hora de hacer tu INSERT en tu tabla campo DATETIME o TIMESTAMP .. tan solo usa NOW() .. eso será la hora del servidor sin tener q ir usando la del cliente y/o estar pasandole ese tipo de parametros ...

Por lo demas yo usaria sesiones en vez de cookies .. y si lo q estbas explicando es como hace un contador de vistias activas .. puedes ver este mismo como ejemplo.

http://www.miscodigos.com/JLMCodigos/script.php?id=243

El resto de estadisticas de tus usuarios .. insisto que no es mas que hacer consultas a tu tabla usuarios via SQL adecuado (www.mysql.com/doc)

Un saludo,
  #7 (permalink)  
Antiguo 29/11/2002, 12:01
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Cluster, yo eso no lo conocía, por eso intento hacerlo de la forma más fácil que sé. No dudo que se pueda hacer con la mitad de código que lo haría yo, pero no me compares contigo Ah, no es un contador de visitas activas, es lo que dice nuestro amigo: saber todos los movimientos que hubo desde su última visitas.
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.

Última edición por ferny; 29/11/2002 a las 12:08
  #8 (permalink)  
Antiguo 29/11/2002, 12:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, ferny ..

Para eso son los foros .. para que todos aprendamos. Sale una pregunta y hay varias alternativas .. algunas más optimas que otras .. Yo todos los dias aprendo de foros.

Pero mi consejo es "todo lo que puedas hacer sobre tu base de datos con tu base de datos .. hazlo" .. El ejmplo mismo de NOW() (que es la funcion Mysql en ese caso para obtener la fecha/hora actual en la que se haga el INSERT o UPDATE sobre el campo afectado) .. Es la manera mas optima (optima= mas rapido el proceso y menos recursos del servidor).

Un saludo,
  #9 (permalink)  
Antiguo 29/11/2002, 13:12
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Caray!, me asombra cada día más la participación en este foro, y he de reconocer que desde aquel "ataque" a la base de datos, y la consecuente reforma, este foro es insuperable en lo que respecta a tecnología y participación.

Me he puesto manos a la obra, pero tengo un problema bastante tonto que no termino de solucionar, supongo que será porque llevo más de 8 hora delante de la pantalla. ¿Me ayudan?

es el típico paso de variables, tengo:

while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td><a href=\"borra.php?nombre=1\">Borra</a></td></tr>", $row["NOMBRE"],$row["APELLIDOS"]);

que es recogido por:

$link=Conectarse();
mysql_query("delete from PEDIDOS where NOMBRE = $nombre",$link);

y, claro, esto sólo me borra los datos cuyo nombre sea "1", ¿como hacer para que la variable fuera como en ASP:

"DELETE * FROM Productos WHERE nombre='" & nombre & "'"

Muchas gracias y disculpen las molestias causadas.
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #10 (permalink)  
Antiguo 29/11/2002, 15:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Seria: (si mal no entiendo)

Código PHP:
while($row mysql_fetch_array($result)) { 
printf("<tr><td> %s</td><td> %s </td><td><a href=\"borra.php?nombre=$row["NOMBRE"]\">Borra</a></td></tr>"$row["NOMBRE"],$row["APELLIDOS"]); 


$link=Conectarse(); 
mysql_query("delete from PEDIDOS where NOMBRE =' $nombre'",$link); 
Con la primera parte de cogido . generarias un link tipo:

borrar.php?nombre=pepe

y con la segunda parte de codigo .. estaba bien mas o menos ... le faltaban por standar las comillas simples a la hora de llamar a una variable PHP dentro de una consulta.

Como consejo .. es mas sencillo y efectivo hacer ese tipo de operaciones de "edicion y borrardo" de registros bajo Identificativos Númericos tal que el típico ID autonumerico si lo usas .. eso eviatara que borremos a dos nombre "pepe" si existen .. por ID autonumerico te aseguras q SOLO será ese el que vas a borrar.

Un saludo,
  #11 (permalink)  
Antiguo 02/12/2002, 03:25
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
No lo entiendo, y debería ser sencillo, vamos a ver, si hago lo que muy bien me explicas, me aparece el siguiente error:

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in...

Por cierto, el código original era:

while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s </td><td><a href=\"borra.phtml?id=%d\"> Borra</a></td></tr>", $row["Nombre"],$row["Apellidos"],$row["ID_Prueba"]);

y quisiera que alguien me explicara para qué sirve y qué hace el %d en la dirección y el %s en la tabla. Son comandos que no he visto en ningún tutorial (a lo mejor lo pasé por alto)

PD: Seguiré tu consejo sobre los ID´s. Gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.

Última edición por ferent; 02/12/2002 a las 03:33
  #12 (permalink)  
Antiguo 02/12/2002, 07:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo sinceramente no uso printf() para lo que estas haciendo ... uso el método clásico. ... (si quieres . www.php.net/manual/es .. y busca la funcion printf() par ver su sintaxis y uso).

echo "<td><tr>".$row['loquesea']."</td></tr>;

O como corresponda ... pero no printf() ..

Lanzar ese HTML con un "echo" ayuda a ver mas claro el código (no se si será mas optimo .. yo creo q si, pues printf() carga el motor de expresiones regulares .. cosa que en este caso concreto no le veo la necesidad ...).

Un ejemplo seria:

Código PHP:
echo "<table>";
while(
$row mysql_fetch_array($consulta)) {

echo <<< HTML
<tr>
    <td>$row
['nombre']</td>
    <td>$row
['apellidos']</td>
    <td><a href="dondesea.php?id=$row
[ID]"> Borrar </a></td>
</tr>
HTML;

}

echo 
"</table>"
Con esa estructura .. incluso puedes diseñar comodamente tus tablas y HTML en general con algun editor HTML visual tipo Dreamweaver y luego solo añadirle el código PHP que necesites.

Un saludo,
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 03:17.