Incremental valor mediante una acción

  • Autor Autor Pcx89
  • Fecha de inicio Fecha de inicio
P

Pcx89

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Estimados, como estáis??.
Hace unos meses tenía abandonado PHP.
La cuestión es que necesito hacer lo siguiente:
Tengo distintos artículos en una web y junto al título de cada uno se encuentra un botón "Votar", lo que necesito es que al hacer clic en dicho botón este incremente un valor a la tabla de la base de datos. Siempre de uno en uno. Y que el mismo no se pueda volver a utilizar por x cantidad de minutos.

Ej:
Artículo 1: 125 luego del clic: 126

Artículo 2: 548 luego del clic: 549

Bueno, espero se haya entendido XD
 
No entendí bien lo de que no se pueda utilizar cada X minutos. Pero lo de incrementar en 1, si quieres incrementar en 1 una variable así:
PHP:
$variable++;

O si lo quieres hacer en una BD mysqli la consulta SQL sería:
PHP:
mysqli_query('UPDATE articulos SET votos = votos + 1 WHERE articulo_id = \''.(int)$id.'\'');

Espero haberte ayudado.
 
No entendí bien lo de que no se pueda utilizar cada X minutos. Pero lo de incrementar en 1, si quieres incrementar en 1 una variable así:
PHP:
$variable++;

O si lo quieres hacer en una BD mysqli la consulta SQL sería:
PHP:
mysqli_query('UPDATE articulos SET votos = votos + 1 WHERE articulo_id = \''.(int)$id.'\'');

Espero haberte ayudado.

Eso mismo!, muchas gracias!! :-D
No especifiqué: PHP + MySQL

Lo otro que planteaba era que el clic en el botón que incrementa el voto se pueda hacer cada 15 minutos, pero eso ya no se si es mas con algún truquito de Html+Javascript XD
 
Eso mismo!, muchas gracias!! :-D
No especifiqué: PHP + MySQL

Lo otro que planteaba era que el clic en el botón que incrementa el voto se pueda hacer cada 15 minutos, pero eso ya no se si es mas con algún truquito de Html+Javascript XD
Lo que quieres es que un usuario pueda votar el mismo post 1 vez cada 15 minutos?
 
Si. aunque pensándolo bien sería mejor cada mas tiempo jajaja
Lo podrías hacer con HTML y JavaScript pero el usuario lo podría bypassear.
Por lo que lo ideal sería hacerlo en HTML y JavaScript y luego comprobar que haya pasado el tiempo cada vez que se vota con PHP.

Yo lo que haría sería crear una tabla que se llamar votos con estos campos:
voto_id (AUTO INCREMENT), voto_usuario, voto_articulo, voto_fecha

Cada vez que se vote insertar una fila en esa tabla para que quede constancia del voto (en vez de insertar el nombre de usuario, lo ideal sería insertar su ID para ahorrar espacio):
PHP:
mysqli_query('INSERT INTO votos (voto_usuario, voto_articulo, voto_fecha) VALUES (\''.(int)$id_usuario.'\', \''.(int)$id_artículo.'\',  \''.time().'\') ');

Y luego a la hora de votar seleccionar el último voto y comprobar si ha pasado el tiempo:
PHP:
//USANDO MYSQLI ORIENTADO A OBJETOS
$mysqli = new mysqli("localhost", "root", "", "nombrebd");

//AQUI OBTENEMOS LA FECHA DEL ULTIMO VOTO
$sql = $mysqli->query('SELECT voto_fecha FROM votos WHERE voto_usuario = \''.(int)$id_usuario.'\' && voto_articulo = \''.(int)$id_articulo.'\' ORDER BY voto_fecha DESC LIMIT 1');
$ultimo_voto = $sql->fetch_row();
$tiempo = $ultimo_voto[0]+(15*60); //REEMPLAZAR 15 POR EN Nº DE MINUTOS QUE QUIERAS

if(time() > $tiempo){
//EFECTUAR VOTO
}else{
//TODAVIA NO PASO EL TIEMPO PARA VOLVER A VOTAR
}

Y eso sería, ahora tendrías que acoplar el código que te dejé al tuyo haciendo que coincidan los nombres de las variables etc.

Espero que te sirva;
 
Lo podrías hacer con HTML y JavaScript pero el usuario lo podría bypassear.
Por lo que lo ideal sería hacerlo en HTML y JavaScript y luego comprobar que haya pasado el tiempo cada vez que se vota con PHP.

Yo lo que haría sería crear una tabla que se llamar votos con estos campos:
voto_id (AUTO INCREMENT), voto_usuario, voto_articulo, voto_fecha

Cada vez que se vote insertar una fila en esa tabla para que quede constancia del voto (en vez de insertar el nombre de usuario, lo ideal sería insertar su ID para ahorrar espacio):
PHP:
mysqli_query('INSERT INTO votos (voto_usuario, voto_articulo, voto_fecha) VALUES (\''.(int)$id_usuario.'\', \''.(int)$id_artículo.'\',  \''.time().'\') ');

Y luego a la hora de votar seleccionar el último voto y comprobar si ha pasado el tiempo:
PHP:
//USANDO MYSQLI ORIENTADO A OBJETOS
$mysqli = new mysqli("localhost", "root", "", "nombrebd");

//AQUI OBTENEMOS LA FECHA DEL ULTIMO VOTO
$sql = $mysqli->query('SELECT voto_fecha FROM votos WHERE voto_usuario = \''.(int)$id_usuario.'\' && voto_articulo = \''.(int)$id_articulo.'\' ORDER BY voto_fecha DESC LIMIT 1');
$ultimo_voto = $sql->fetch_row();
$tiempo = $ultimo_voto[0]+(15*60); //REEMPLAZAR 15 POR EN Nº DE MINUTOS QUE QUIERAS

if(time() > $tiempo){
//EFECTUAR VOTO
}else{
//TODAVIA NO PASO EL TIEMPO PARA VOLVER A VOTAR
}

Y eso sería, ahora tendrías que acoplar el código que te dejé al tuyo haciendo que coincidan los nombres de las variables etc.

Espero que te sirva;

Muchísimas gracias!!, me has salvado!!, lo implementaré :-D
 
Atrás
Arriba