AJAX - botón

 
Vista:
sin imagen de perfil

botón

Publicado por Francisco (2 intervenciones) el 28/03/2017 18:26:35
Buenas,

Estoy haciendo una página web con unas fotografias y la gente vota, y tiene un botón contador que está hecho en ajax, php y mysql, el problema está cúando aprieto en botón y tengo que actualizar la página para suba el número al contador. ¡¡Necesito vuestra colaboración para solucionar el problema!!

Aquí dejo los códigos:

Este es el código php del botón:

1
2
3
4
5
6
7
8
9
10
11
<?php
if(!$_GET){
    $yourID = 1;
}else{
    $yourID = $_GET['id'];
}
require ('funciones.php');
?>
 <?php
echo '<button id="boton" data-id="1">Vota</button><span id="resultado">' . get_likes($yourID) . '</span>';
?>


Este es el código javascript del botón


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(document).ready(function () {
    $('#boton').click(function () {
        contador($(this).data('id'));
    });
});
 
function contador(id) {
    $.ajax({
        url: 'contador.php',
        type: 'GET',
        dataType: 'json',
        data: {id: id},
        success: function (response) {
            $('#resultado').html(response.votos);
            $('#boton').prop('disabled',true);
        },
    });
}

Este es el fichero contador.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
require('conexion.php');
include('funciones.php');
 
$ip = getIp();
$yourID = $_GET['id'];
$query = "SELECT votos FROM encuesta WHERE id=" . $yourID . " limit 1;";
$result = mysqli_query($connect, $query);
$votos = null;
$data = array();
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
    $votos = (int)$row['votos'];
    $votos++;
    $queryEncuesta = "UPDATE encuesta SET votos=" . $votos . " WHERE id=" . $yourID . ";";
    mysqli_query($connect, $queryEncuesta);
    $queryVotos = "INSERT INTO votos(id_encuesta,ip) VALUES (" . $yourID . ",'" . $ip . "');";
    mysqli_query($connect, $queryVotos);
    $data = array('votos' => $votos);
}
echo json_encode($data);


Este es el fichero funciones.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
function get_likes($id)
{
 
    $connect = mysqli_connect("localhost", "root", "","votos");
    $query = "SELECT votos FROM encuesta WHERE id='" . (int)$id . "';";
    $result = mysqli_query($connect, $query);
    while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
        if ($row['votos'] == "") {
            return '0';
        } else {
            return $row['votos'];
        }
    }
    mysqli_close($connect);
}
//// Función para obtener la IP
function getIp()
{
    $ip = $_SERVER['REMOTE_ADDR'];
 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
 
    return $ip;
}

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 33
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

botón

Publicado por kip (10 intervenciones) el 29/03/2017 03:23:20
Hola, podrias decirnos cual es el problema o error exacto que tienes con respecto al boton ?

De todas formas intenta colocando en data-id el ID que colocas como parametro en la funcion get_likes(), asi:

1
echo '<button id="boton" data-id="' . $yourID . '">Vota</button><span id="resultado">' . get_likes($yourID) . '</span>';

Y si la funcion .data() de jquery te da problemas hazlo asi:

1
contador($(this).attr('data-id'));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

botón

Publicado por Francisco (2 intervenciones) el 29/03/2017 08:18:07
Hola kip,

Error no hay, lo único es que hay que actualizar la página cuando presiono el botón para sumé. Voy probar con las líneas de código que has escrito...a ver sino tengo que actualizar la página.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar