Foros del Web » Programando para Internet » PHP »

PHP / MySQL: Repetir un código

Estas en el tema de PHP / MySQL: Repetir un código en el foro de PHP en Foros del Web. Hola amigos: Tengo un sistema para votacion (con estrellas). Maneja una db (con 2 tablas, 3 campos por tabla), un archivo js (ajax), un css ...
  #1 (permalink)  
Antiguo 30/07/2009, 19:41
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 85
Antigüedad: 14 años, 9 meses
Puntos: 1
PHP / MySQL: Repetir un código

Hola amigos:
Tengo un sistema para votacion (con estrellas). Maneja una db (con 2 tablas, 3 campos por tabla), un archivo js (ajax), un css (donde van las estrellas) y un php. Yo uso otro php para mostrar las estrellas y las votaciones y anda perfecto. Se puede votar una sola vez (controla ip).
El problema es que quisiera "repetirlo" 10 veces en una página (porque son varias cosas que hay que votar) y no puedo, ya que, logicamente, el voto vale para todos los php que ponga en la página (o sea si voto en la de arriba, el resultado, logicamente, se repite en las 9 restantes). Ustedes que son genios en php, me darían alguna solución? Gracias! (yo creo, que crear nuevas bases de datos y archivos css, js, etc, sería una locura)

Última edición por ElPoliticoSagaz; 30/07/2009 a las 19:43 Razón: Mejorar el titulo
  #2 (permalink)  
Antiguo 30/07/2009, 19:50
Avatar de De_la_Cuesta_13  
Fecha de Ingreso: abril-2009
Ubicación: Cali, Colombia.
Mensajes: 265
Antigüedad: 15 años
Puntos: 14
Respuesta: PHP / MySQL: Repetir un código

Pues compañero viendolo así rápido, podrías relacionar encuesta-ip. Cosa que si ya voto en una encuesta pueda votar en las restantes. La cuestion podría ser que revisiras en un if la encuesta y el ip, en caso de que ya este en la bd ambos datos no se puede votar.
  #3 (permalink)  
Antiguo 30/07/2009, 20:10
Avatar de ok2000  
Fecha de Ingreso: julio-2006
Mensajes: 5
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: PHP / MySQL: Repetir un código

Ponga el código que genera las estrellas en una función y le pasa los valores cada vez que la llame, los valores que utilice dentro de la función serán no afectarán a variables dentro del script, excepto la que se envíe con return.

Por otro lado controlar la votación por IP podría no funcionar como se espera por que universidades, colegios y muchos ISP hacen que varios usuarios tengan la misma IP. Sería mejor utilizar cookies
  #4 (permalink)  
Antiguo 30/07/2009, 20:18
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 85
Antigüedad: 14 años, 9 meses
Puntos: 1
Gracias por la velocidad de la respuesta. Aquí te mando ambas tablas de la db:
En esta tabla, se almacenan el id, ip y fecha de votacion. (db=estrellas_1)
Cita:
CREATE TABLE `votos` (
`id` INT NOT NULL default '0',
`ip` char(15) NOT NULL default '',
`dataCreate` date NOT NULL default '0000-00-00'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
En la siguiente tabla, id, media (promedio de votos) y votos (cantidad de votos), necesario para "marcar la estrellita".
Cita:

CREATE TABLE `rankeado` (
`id` INT NOT NULL default '0',
`media` FLOAT NOT NULL default '0',
`votos` INT NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `rankeado` (`id`, `media`, `votos`) VALUES (1,0,0),(2,0,0);
Yo pensaba en crear otra db (tantas db como "estrellas de votacion" se necesite, creo que es una verdadera locura realmente), pero no me doy cuenta que debo modificar en las db anteriores, o en el archivo php (que es el siguiente, creo que por aca puede andar)

Cita:
<?php
function conectar(){
$dbhost='localhost';
$dbusername='yo'; //nombre del usuario
$dbuserpass='1234'; //password o contraseña del usuario
$dbname='estrellas_1';//nombre de la base de datos

$link = mysql_connect($dbhost, $dbusername,$dbuserpass);
mysql_select_db($dbname, $link);
return $link;
}

$id = $_GET['id_pagina'];

if($id!=""){
$link = conectar();
$voto = $_GET['v'];

if($_SERVER){
if($_SERVER[HTTP_X_FORWARDED_FOR]){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif($_SERVER["HTTP_CLIENT_IP"]){
$realip = $_SERVER["HTTP_CLIENT_IP"];
}else{
$realip = $_SERVER["REMOTE_ADDR"];
}
}else{
if(getenv( "HTTP_X_FORWARDED_FOR")){
$realip = getenv( "HTTP_X_FORWARDED_FOR");
}elseif(getenv( "HTTP_CLIENT_IP")){
$realip = getenv( "HTTP_CLIENT_IP" );
}else{
$realip = getenv( "REMOTE_ADDR" );
}
}

$fecha = date('Y-m-d');
$result = mysql_query("DELETE FROM votos_usuarios WHERE dataCreate <> '".$fecha."'",$link);

$result = mysql_query("SELECT *FROM votos_usuarios WHERE ip = '".$realip."' and id = $id",$link);
$row = mysql_fetch_row($result);

if($row[0]==""){
$result = mysql_query("SELECT votos,media FROM ".$tabla[$tipo]." WHERE id =$id",$link);
$row = mysql_fetch_row($result);

$auxmedia = $row[1];
$votos =$row[0] + 1;
$media = (($row[0] * $auxmedia) + $voto)/ $votos;
//actualizamos el voto
$result = mysql_query("UPDATE rank SET votos= $votos, media= $media WHERE id= $id",$link);
mysql_query("INSERT INTO rank(id,ip,dataCreate)VALUES($id,'".$realip."','". $fecha."')",$link);
echo "voto realizado";
}else{ echo "Usted ya ha votado";
Gracias, después si me ayudas a solucionarlo, te paso los archivos para que los pongas en tu sitio. Saludos

Tengo el siguiente ejemplo:
_ En una pagina php, hay para votar 3 cosas (votacion1, votacion2 y votacion3)
_ Tengo 1 sola db con 2 tablas (de 3 campos cada una).
Supongamos que el usuario1 vota en votacion1 y en votacion2. En votacion1 hay 4 votos y en votacion2 hay 13 votos.
Mi pregunta es si tendría que crear tantas tablas como cosas haya que votar (o sea, como en el ejemplo, debería crear 6 tablas).
Además, ¿También tendría que añadir en el archivo php, los códigos (tipo select case) para input/output los datos de las nuevas tablas?
Solo es una idea, calculo que debo agregar nuevas tablas, porque no veo como en un par de tablas se pueden almacenar valores de diferentes votaciones. Gracias a todos.

Cita:
Iniciado por elpoliticosagaz Ver Mensaje
tengo el siguiente ejemplo:
_ en una pagina php, hay para votar 3 cosas (votacion1, votacion2 y votacion3)
_ tengo 1 sola db con 2 tablas (de 3 campos cada una).
Supongamos que el usuario1 vota en votacion1 y en votacion2. En votacion1 hay 4 votos y en votacion2 hay 13 votos.
Mi pregunta es si tendría que crear tantas tablas como cosas haya que votar (o sea, como en el ejemplo, debería crear 6 tablas).
Además, ¿también tendría que añadir en el archivo php, los códigos (tipo select case) para input/output los datos de las nuevas tablas?
Solo es una idea, calculo que debo agregar nuevas tablas, porque no veo como en un par de tablas se pueden almacenar valores de diferentes votaciones. Gracias a todos.
tema solucionado, gracias a todos!

Última edición por GatorV; 04/08/2009 a las 21:10
  #5 (permalink)  
Antiguo 06/03/2010, 03:11
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: PHP / MySQL: Repetir un código

aun funciona este post?? por que, tengo una pregunta
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 09:14.