Foros del Web » Programando para Internet » PHP »

[Petición/duda]¿Hay alguna forma de limitar la creación de registros de la BD?

Estas en el tema de [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la BD? en el foro de PHP en Foros del Web. Hola, estoy creando una web de 0 y bueno como soy bastante nuevo en PHP quiero saber si alguien me puede ayudar con lo siguiente: ...
  #1 (permalink)  
Antiguo 21/09/2014, 09:13
 
Fecha de Ingreso: septiembre-2014
Mensajes: 5
Antigüedad: 9 años, 7 meses
Puntos: 0
Pregunta [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la BD?

Hola, estoy creando una web de 0 y bueno como soy bastante nuevo en PHP quiero saber si alguien me puede ayudar con lo siguiente:

Quiero que un usuario solo pueda crear un "POST" cada 24 Horas y si podrían explicarme también como hacer por ejemplo que un administrador no tenga esas limitaciones.
[Aclaración] Trabajo con Dreamweaver y tengo varios grupos definidos ya.

Muchas gracias, espero su respuesta.
  #2 (permalink)  
Antiguo 21/09/2014, 15:41
 
Fecha de Ingreso: marzo-2011
Ubicación: Oaxaca
Mensajes: 252
Antigüedad: 13 años, 1 mes
Puntos: 17
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Quiero que un usuario solo pueda crear un "POST" cada 24 Horas

no se como tengas tu base de datos, pero en una de tus tablas, debes tener un campo que te permita contar numero de post hechos al día (si no han hecho ningun post, el valor sera de 0)

Cuando un usuario desee hacer un post, se hace una consulta, comparando el valor que tiene ese campo, si el valor es 0, el usuario puede hacer su post, si el valor es 1, el usuario no podra hacer ese post.

por ultimo, tendrias que hacer una configuracion en tu manejador de base de datos para que al cambio de dia en la hora del servidor, ese campo se ponga en automatico 0 para todos tus usuarios.

asi es como lo tendrias que hacer amigo

[Aclaración] no te recomiendo que uses Dreamweaver, te generara malas practicas, mas si estas empezando con el desarrollo web

espero que te sirva mi comentario amigo
  #3 (permalink)  
Antiguo 21/09/2014, 15:56
 
Fecha de Ingreso: abril-2014
Mensajes: 37
Antigüedad: 10 años
Puntos: 2
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Buenas tardes, ciertamente la solución que te da juangemelo01 efectivamente va a funcionar, pero me parece que si vas a hacer consultas a la base de datos para limitar esa creación, no es tan necesario agregar campos que validen cuantos post ha hecho el usuario, y además configurar un evento que modifique el valor de ese campo.

Yo lo haría de ésa forma:

Suponiendo que tenemos una tabla llamada POST, en esa tabla tenemos:

post
id
id_user
fecha_post
descripcion_post

Entonces una vez que el usuario en concreto vaya a hacer un nuevo post, primero consulta en la tabla por su id y compara que si el ultimo post fue realizado el día de hoy, no deje hacer el post, de lo contrario si.

Pero bueno, cada quien con su forma de trabajar. Espero poder ayudarte.
  #4 (permalink)  
Antiguo 21/09/2014, 16:38
 
Fecha de Ingreso: septiembre-2014
Mensajes: 5
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Cita:
Iniciado por juangemelo01 Ver Mensaje
Quiero que un usuario solo pueda crear un "POST" cada 24 Horas

no se como tengas tu base de datos, pero en una de tus tablas, debes tener un campo que te permita contar numero de post hechos al día (si no han hecho ningun post, el valor sera de 0)

Cuando un usuario desee hacer un post, se hace una consulta, comparando el valor que tiene ese campo, si el valor es 0, el usuario puede hacer su post, si el valor es 1, el usuario no podra hacer ese post.

por ultimo, tendrias que hacer una configuracion en tu manejador de base de datos para que al cambio de dia en la hora del servidor, ese campo se ponga en automatico 0 para todos tus usuarios.

asi es como lo tendrias que hacer amigo

[Aclaración] no te recomiendo que uses Dreamweaver, te generara malas practicas, mas si estas empezando con el desarrollo web

espero que te sirva mi comentario amigo
Vale, entiendo lo que quieres decir el tema es que no se exactamente como hacerlo
He entendido que tenia que hacer en la tabla de los usuarios un nuevo campo para activacion y desactivacion (1-0)
Además he pensado en poner un campo oculto en el formulario con el numero 0 (Desactivación) y de filtro la variable del usuario MM_Username.

¿Pero como puedo hacer que cada 24 Horas este numero se resetee a 1 para que vuelva a poder hacer un POST?

Un saludo y muchisimas gracias
  #5 (permalink)  
Antiguo 23/09/2014, 01:26
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

No haría falta resetearlo cada 24 horas. Si guardas el último post del usuario, simplemente puedes comparar su timestamp con el timestamp del tiempo actual en el que el usuario quiere hacer post. Si es mayor de 24 horas, le dejas hacerlo y guardas el tiempo del post, si no miras si ya ha hecho algún post. En caso que no lo haya hecho también le dejas hacerlo.

Échale un ojo a las funciones de fecha y hora que te serán muy útiles para esto:

http://php.net/manual/es/ref.datetime.php
  #6 (permalink)  
Antiguo 23/09/2014, 11:42
 
Fecha de Ingreso: septiembre-2014
Mensajes: 5
Antigüedad: 9 años, 7 meses
Puntos: 0
Información Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Cita:
Iniciado por json Ver Mensaje
No haría falta resetearlo cada 24 horas. Si guardas el último post del usuario, simplemente puedes comparar su timestamp con el timestamp del tiempo actual en el que el usuario quiere hacer post. Si es mayor de 24 horas, le dejas hacerlo y guardas el tiempo del post, si no miras si ya ha hecho algún post. En caso que no lo haya hecho también le dejas hacerlo.

Échale un ojo a las funciones de fecha y hora que te serán muy útiles para esto:

http://php.net/manual/es/ref.datetime.php
Bueno gracias, tiro la toalla, dejo el tema abierto haber si hay suerte y alguien me deja los codigos PHP o una explicación paso a paso. Un saludo
  #7 (permalink)  
Antiguo 23/09/2014, 12:08
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Te lo ha explicado bien eldimarzioxp.

Debes de tener una tabla que guarda los post. Esa tabla debe tener un campo que guarde la fecha en la que se inserta el post en datetime.

Entonces, en la pagina donde tengas el codigo que guarda el comentario debes hacer lo siguiente:
-Variables y datos de conexion.
-Lo primero, buscas el ultimo post del usuario y seleccionas el campo de registro.
-Lo segundo, si el valor de "registro" es inferior a 24 horas de diferencia haces un echo indicandole que no puede crear un nuevo post pues no han pasado 24 horas.
-Lo tercero, si el valor es superior a 24 horas, le deja guardar el post, creas el INSERT y todo lo demas.

Asi por encima es lo que tienes que hacer.
El codigo es bastante sencillo.
  #8 (permalink)  
Antiguo 23/09/2014, 12:34
 
Fecha de Ingreso: septiembre-2012
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

seria algo haci, haces un consulta y escojes el ultimos post del user
supongo que tienes algo haci

tabla posts

//----------------------------//
ID_POST | USER | fecha
------------------------------
1 | juan | 54254125(formato timestamp)


entonces haces una consulta.. algo haci
debes de tener ya una variable con el user, puede ser una session o una variable que la pases por post, preferible que sea una variable de session
<?php
//cramos variable
$variableUser = $_SESSION['user'];

//hacemos la cnsulta
$q = mysql_query("SELECT * FROM posts WHERE USER = ". $variableUser." ORDER BY ID_POST DESC LIMIT 1");

//realizamos un array de los datos que nos da la bd
$datos = mysql_fetch_array($q);

//realizamos condicion a la fecha actual le restamos la del ultimo posts
// y verificamos si ha pasado 24 horas

if(time() - $datos >= 86400){

// codigo si el user publica despues de 24 horas

}
else{
// codigo si publica antes de 24 horas
}

?>

en teoria deberia funcionar (tenga años que no hago algo en php XD)

espero te sirva y investiga sobre el timestamp
Saludos!
  #9 (permalink)  
Antiguo 23/09/2014, 13:05
 
Fecha de Ingreso: septiembre-2014
Mensajes: 5
Antigüedad: 9 años, 7 meses
Puntos: 0
Pregunta Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Cita:
Iniciado por gajosu Ver Mensaje
seria algo haci, haces un consulta y escojes el ultimos post del user
supongo que tienes algo haci

tabla posts

//----------------------------//
ID_POST | USER | fecha
------------------------------
1 | juan | 54254125(formato timestamp)


entonces haces una consulta.. algo haci
debes de tener ya una variable con el user, puede ser una session o una variable que la pases por post, preferible que sea una variable de session
<?php
//cramos variable
$variableUser = $_SESSION['user'];

//hacemos la cnsulta
$q = mysql_query("SELECT * FROM posts WHERE USER = ". $variableUser." ORDER BY ID_POST DESC LIMIT 1");

//realizamos un array de los datos que nos da la bd
$datos = mysql_fetch_array($q);

//realizamos condicion a la fecha actual le restamos la del ultimo posts
// y verificamos si ha pasado 24 horas

if(time() - $datos >= 86400){

// codigo si el user publica despues de 24 horas

}
else{
// codigo si publica antes de 24 horas
}

?>

en teoria deberia funcionar (tenga años que no hago algo en php XD)

espero te sirva y investiga sobre el timestamp
Saludos!
A si queria que me lo explicasen el tema es el siguiente: Lo he puesto y me sigue sin evitar que se creen más.
Codigo PHP:
Código PHP:
<?php 
//Esta es la variable que viene por defecto en Dreamweaver
$variableUser $_SESSION['MM_Username'];

$q mysql_query("SELECT * FROM postu WHERE USER = "$variableUser." ORDER BY id DESC LIMIT 1");

$datos mysql_fetch_array($q);

if(
time() - $datos >= 86400){
}
else{
}

?>
Tabla:
Cita:
ID: Int (11) Auto_Increment
Titulo: Varchar (30)
Fecha:TIMESTAMP predeterminado: Current_Timestamp
¿Que estoy haciendo mal?
  #10 (permalink)  
Antiguo 23/09/2014, 13:12
 
Fecha de Ingreso: septiembre-2012
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Cita:
Iniciado por eldimarzioxp Ver Mensaje
A si queria que me lo explicasen el tema es el siguiente: Lo he puesto y me sigue sin evitar que se creen más.
Codigo PHP:
Código PHP:
<?php 
//Esta es la variable que viene por defecto en Dreamweaver
$variableUser $_SESSION['MM_Username'];

$q mysql_query("SELECT * FROM postu WHERE USER = "$variableUser." ORDER BY id DESC LIMIT 1");

$datos mysql_fetch_array($q);

if(
time() - $datos >= 86400){
}
else{
}

?>
Tabla:


¿Que estoy haciendo mal?

veo que tienes el campo id en el orden y en tu tabla esta ID

haci lo tienes
" ORDER BY id DESC LIMIT 1"

y seguntu tabla deberia de ser haci
" ORDER BY ID DESC LIMIT 1"
  #11 (permalink)  
Antiguo 23/09/2014, 13:12
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Código PHP:
$q="SELECT Fecha FROM postu WHERE USER = "$variableUser." ORDER BY id DESC LIMIT 1";

$datos mysql_fetch_assoc($q);

if(
time() - $datos['Fecha'] >= 86400){
}
else{

Algunos errores de tu codigo, adaptalos y prueba de nuevo.

No olvides de conectarte a la base de datos antes de hacer la consulta.
  #12 (permalink)  
Antiguo 23/09/2014, 13:16
 
Fecha de Ingreso: septiembre-2012
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

otra cosa veo que en tu tabla no tienes un campo para el user
deberias de tenerlo para identificar de quien es el post y poder hacer todo ese rollo

Yo no ando fino, hace un rato q no toco php, te di una idea

migue_coco te puede ayudar, veo q le anda mas a esto del php u.u

Y te recomiendo que no uses Dreamwaver, genera mucho codigo basura.. si deseas usarlo como editor esta bien,
Bueno ya queda en ti
Saludos

Última edición por gajosu; 23/09/2014 a las 13:24
  #13 (permalink)  
Antiguo 23/09/2014, 14:12
 
Fecha de Ingreso: septiembre-2014
Mensajes: 5
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

gajosu Perdon lo escribí mal es id en minuscula, tengo otra tabla para los usuarios no uso la misma. Otra cosa gajosu me he fijado que el codigo PHP no hace en ningún momento referencia a la columna de "Tiempo" ¿No será que no funciona por eso?

migue_coco ¿Que errores hay?

Gracias por ayudarme.
  #14 (permalink)  
Antiguo 23/09/2014, 14:32
 
Fecha de Ingreso: septiembre-2012
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: [Petición/duda]¿Hay alguna forma de limitar la creación de registros de la

Cita:
Iniciado por eldimarzioxp Ver Mensaje
gajosu Perdon lo escribí mal es id en minuscula, tengo otra tabla para los usuarios no uso la misma. Otra cosa gajosu me he fijado que el codigo PHP no hace en ningún momento referencia a la columna de "Tiempo" ¿No será que no funciona por eso?

migue_coco ¿Que errores hay?

Gracias por ayudarme.
claro los users estan en otra tabla, pero en la tabla de los posts debe ir un campo identificador en cual se ingresa el id del user que inserto el registro

seria algo haci

tabla users

id | nombre <-- esos campos contiene lla tabla de miembro (es un ejemplo)


tabla postu
ID | Titulo | Fecha | user <-- ese es el campo que le falta a la tabla

haci cuando yo quiera saber los post del user pepito, supongamos que el ID de pepito es 5

entonces yo haria la siguiente consulta

SELECT * FROM postu WHERE user = 5

entonces me devolvera todos los posts del user 5 (pepito)

ahora en php seria la consulta igual solo que en ves de poner 5 le pasas la variable del user
x ejemplo

$q = mysql_query("SELECT * FROM postu WHERE user = ". $variableUser);

Investiga sobre consultas mysql

Las sintaxis
SELECT
UPDATE
INSERT INTO

son las basicas

y otra cosa el * significa que va a selecionar todos los cambios que contenga la tabla sin excepcion

si vos quieres solo algunos especificas cuales
x ejemplo

SELECT ID, fecha, user FROM postu

solo se mostraran esos campos

espero haber sido claro
Saludos

Etiquetas: alguna, creación, forma, limitar, registros
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 18:45.