Hola,
Gracias a todos por las respuestas.
En principio parece que me indica que hay un error en la variable $total_votos (linea 76). No funciona con mysql, como podeis ver los datos se guardan en un archivo de texto plano.
Por otra parte, quisiera plantear otra cuestión. Esta encuesta esta programada para utilizaruna unica imagen "jpg" como barra grafica de porcentaje. Quisiera saber como podría implementar una distinta para la otra respuesta. Dejando una verde para votos positivos y una roja para los negativos.
Os dejo el script:
Código PHP:
$titulo = "Opina";
$archivo = "votos.txt";
$archivoip = "ips.txt";
function YaVotaste() {
global $archivoip;
global $REMOTE_ADDR;
$ips = fopen($archivoip, "r");
while (!feof($ips)) {
$ip = fgets($ips, 20);
if ($ip == $REMOTE_ADDR . "\r\n") {
$coincide = 1;
break;
}
}
fclose($ips);
if (!$coincide) {
$ips = fopen($archivoip, "a");
fputs($ips, $REMOTE_ADDR . "\r\n");
fclose($ips);
return false;
}
else {
return true;
}
}
function agregaVotacion($voto) {
global $archivo;
$leer_votacion = fopen($archivo, "r");
$tu_voto = fread($leer_votacion, filesize($archivo));
fclose($leer_votacion);
$votos = split('[|:]', $tu_voto);
for ($i = 1; $i < count($votos); $i = $i + 2) {
$nombre = $i - 1;
if ($votos[$nombre] == $voto) {
$votos[$i]++;
}
if ($i == (count($votos) - 1)) {
$act_Voto .= $votos[$nombre] . ":" . $votos[$i];
}
else {
$act_Voto .= $votos[$nombre] . ":" . $votos[$i] . "|";
}
}
$escribe_archivo = fopen($archivo, "w");
fputs($escribe_archivo, $act_Voto);
fclose($escribe_archivo);
}
function mostrar($msgs) {
global $titulo, $archivo;
echo "<html>";
echo "<head>";
echo "<title>$titulo - Resultados</title>";
global $clscr;
echo "</head>";
echo "<body>";
echo "<font face='Tahoma' size='2'>";
$leer_votacion = fopen($archivo, "r");
$tu_voto = fread($leer_votacion, filesize($archivo));
fclose($leer_votacion);
$votos = split('[|:]', $tu_voto);
echo "<u><b>Resultados</b></u><br>";
for ($i = 1; $i < count($votos); $i = $i + 2)
{
$total_votos += $votos[$i];
}
for ($i = 1; $i < count($votos); $i = $i + 2) {
$nombre = $i - 1;
if ($total_votos == 0) {
$porcnt = 0;
}
else {
$porcnt = $votos[$i] / $total_votos * 100;
$porcnt = round($porcnt, 1);
}
echo "<br>";
echo "\t$votos[$nombre] -> ";
echo "\t<b>$votos[$i]</b> votos <br>";
if ($porcnt == 0) {
echo "\t<img src=barra.jpg width=$porcnt height=15> <br><b>$porcnt%</b>";
}
else {
echo "\t<img src=barra.jpg width=$porcnt height=15> <br><b>$porcnt%</b> <br>";
}
echo "<br>";
}
echo "Total Votos: <b>$total_votos</b><br>";
if($clscr==1)
{
echo "<a href=javascript:window.close();>Cerrar</a>";
}
else
{
echo "<a href=javascript:history.back(-1);>Volver</a>";
}
if (isset($msgs)) {
echo "$msgs";
}
echo "<br>";
echo "</body>";
echo "</html>";
}
if (!isset($voto)) {
mostrar("");
exit;
}
if (YaVotaste()) {
mostrar("<br><br><b>No puede votar dos veces.<br> Gracias por su participación</b>");
exit;
}
agregaVotacion($voto);
mostrar("");