PHP - Sistema de votación en ajax, php y mysql

 
Vista:
sin imagen de perfil

Sistema de votación en ajax, php y mysql

Publicado por Francisco (8 intervenciones) el 23/10/2016 20:25:44
Buenas,

He creado una página web de cero, sin plantillas, con dreamweaver. He hecho un botón tipo "like" de facebook, con un contador. Tengo, como comento, el botón, el contador y una base de datos que me recoja el número de "likes", pero algo me falla, supongo que al hacer la llamada a la base de datos, porque no funciona bien.


Este es el botón:

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

Este es el contador.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
<?php
 
 
require('conexion.php');
include('funciones.php');
 
 
$ip = getIp();
$yourID = $_GET['id'];
$query = "SELECT votos FROM encuesta inner join votos on votos.id_encuesta=encuesta.id WHERE id_encuesta=" . $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);
}
return json_encode($data);
?>
?>

Esta es el archivo funciones.php que que cuenta los votos y guarda la ip

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
30
31
32
<?php
include('conexion.php');
 
function get_likes($id)
{
    $connect = mysqli_connect("db650331059.db.1and1.com", "dbo650331059", "Mequieren1cojin", "db650331059");
    $query = "SELECT votos FROM encuesta WHERE id='" . (int)$id . "';";
    $result = mysqli_query($connect, $query);
    while ($row = mysqli_fetch_array($result, MYSQL_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;
}
 
?>

Este es el js

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);
        },
    });
}

Esta la DB

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
30
--
-- Database: `db650331059`
--
 
-- --------------------------------------------------------
 
--
-- Table structure for table `encuesta`
--
 
CREATE TABLE IF NOT EXISTS `encuesta` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(20) COLLATE latin1_spanish_ci NOT NULL DEFAULT '0',
  `votos` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=2 ;
 
-- --------------------------------------------------------
 
--
-- Table structure for table `votos`
--
 
CREATE TABLE IF NOT EXISTS `votos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(20) NOT NULL DEFAULT '0',
  `id_encuesta` int(11) NOT NULL,
  `fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ;
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 Alejandro
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sistema de votación en ajax, php y mysql

Publicado por Alejandro (157 intervenciones) el 23/10/2016 23:00:12
Hola Francisco, probaste hacer un insert a la base (no desde php) ?
y el archivo conexion.php que es lo que tiene ?
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

Sistema de votación en ajax, php y mysql

Publicado por Francisco (8 intervenciones) el 23/10/2016 23:33:10
Buenas,

Si, he hecho un insert desde phpmyadmin y me devuelve cero columnas.

Este es archivo de conexión

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$hostname = 'localhost';
$database 'db650331059';
$username = 'root';
$password = '';
 
$mysqli = new    mysqli($hostname,$username,$password, $database);
if ($mysqli -> connect_errno) {
die( "Fallo la conexión a MySQL: (" . $mysqli -> mysqli_connect_errno()
. ") " . $mysqli -> mysqli_connect_error());
}
else
echo "Conexión exitosa!";
$mysqli -> mysqli_close();
 
?>
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

Sistema de votación en ajax, php y mysql

Publicado por Miguel (5 intervenciones) el 24/10/2016 10:22:12
Que es lo que te falla exactamente?
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

Sistema de votación en ajax, php y mysql

Publicado por Francisco (8 intervenciones) el 24/10/2016 10:46:42
Yo creo que es botón o los archivos php funciones o contador php. En el archivo funciones.php tengo cambiados los datos de la conexión con mysql. Porque mi página está alojada en 1&1 y tengo puesto datos conexión de 1&1
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
Imágen de perfil de Alejandro
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sistema de votación en ajax, php y mysql

Publicado por Alejandro (157 intervenciones) el 25/10/2016 06:07:43
En la linea 11 de contador.php
1
$result = mysqli_query($connect, $query);

en que momento declaraste la variable $connect ?

Te falto

1
$connect = mysqli_connect("db650331059.db.1and1.com", "dbo650331059", "Mequieren1cojin", "db650331059");

Que si lo hiciste en el archivo funciones.php
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

Sistema de votación en ajax, php y mysql

Publicado por Francisco (8 intervenciones) el 25/10/2016 07:51:10
Ok, se me pasó de hacerlo
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

Sistema de votación en ajax, php y mysql

Publicado por Francisco (8 intervenciones) el 25/10/2016 07:55:25
Pero aun así no funciona.
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