Foros del Web » Programando para Internet » PHP »

Si el campo x tiene x, no

Estas en el tema de Si el campo x tiene x, no en el foro de PHP en Foros del Web. Hola!!! Tengo un preoblema, es que quiero que cada user vote solo 1 vez por chiste. Guardo su ip en un campo. Lo que quiero ...
  #1 (permalink)  
Antiguo 28/05/2008, 12:46
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Pregunta Si el campo x tiene x, no

Hola!!!

Tengo un preoblema, es que quiero que cada user vote solo 1 vez por chiste.
Guardo su ip en un campo.

Lo que quiero hacer es:
Si hay alguna fila mysql, en la que el campo 1, contenga el valor X, y el campo 2, contenga el valor Y, ese user ya no pueda votar.

Lo hago así:

mysql_query("Select votadoid,ip from votar where ip='$ip'");

Pero no se seguir.
  #2 (permalink)  
Antiguo 28/05/2008, 12:51
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Si el campo x tiene x, no

Valdría esto?

$compruebaip=mysql_query("Select votadoid,ip from votar where ip='$ip'");
$comprobarip=mysql_fetch_array($compruebaip);
if($comprobar['votadoid']=='$votadoid' and $comprobarip['ip']=='$ip')
  #3 (permalink)  
Antiguo 28/05/2008, 12:51
 
Fecha de Ingreso: enero-2008
Mensajes: 163
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Si el campo x tiene x, no

mmmm no tienes registrado usuarios para votar seria mas facil hacerlo pero con los usuarios que con el ip no ai que complicarse tanto =)
  #4 (permalink)  
Antiguo 28/05/2008, 12:55
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Si el campo x tiene x, no

Esque sería ucha molestia para los usuarios, tener que registrarse solo para votar.

Así estaría bien?

$compruebaip=mysql_query("Select votadoid,ip from votar where ip='$ip'");
$comprobarip=mysql_fetch_array($compruebaip);
if($comprobar['votadoid']=='$votadoid' and $comprobarip['ip']=='$ip')

  #5 (permalink)  
Antiguo 28/05/2008, 13:12
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
De acuerdo Respuesta: Si el campo x tiene x, no

No me funciona esto:

Código PHP:
<?php
  $votadoid
=$_GET['id'];
  
$ip=$_SERVER['REMOTE_ADDR'];
  
  
//Conectar amysql
 
$connection=mysql_connect("mysql..com","","")
or die(
"Error conectando a la base de datos");
$db=mysql_select_db("",$connection)
or die (
"Error seleccionando la base de datos");
//Sacar ip
$compruebaip=mysql_query("Select votadoid,ip from votar where ip='$ip'");
$comprobarip=mysql_fetch_array($compruebaip);
if(
$comprobar['votadoid']=='$votadoid' and $comprobarip['ip']=='$ip'){
echo 
"Lo siento, cada ip podrá votar una sola vez por cada chiste";
}else{
$votos=$_POST['votos'];
$votadoid=$_GET['id'];
$votadocateg="chistes";
$connection=mysql_connect("mysql..com","","")
or die(
"Error conectando a la base de datos");
$db=mysql_select_db("",$connection)
or die (
"Error seleccionando la base de datos");
$query="INSERT INTO votar (votos,votadoid,votadocateg,ip) values ('$votos','$votadoid','$votadocateg','$ip')";
mysql_query($query)
or die (
"Error al insertar los datos" mysql_error());
}
?>
  #6 (permalink)  
Antiguo 28/05/2008, 14:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Si el campo x tiene x, no

En tu primera parte de tu if, estas usando $comprobar para comparar cuando deberías de usar $comprobarip.

Por otro lado no pongas las variables entre '' porque si no no se evalúa el contenido, te basta con hacer esto:
Código PHP:
if($comprobarip['votadoid']==$votadoid and $comprobarip['ip']==$ip){
echo 
"Lo siento, cada ip podrá votar una sola vez por cada chiste";
}else{ 
Por otro lado te recomiendo usar ip2long para guardar la IP, ocupa menos espacio y es más fácil de buscar ya que se vuelve númerico.

Saludos.
  #7 (permalink)  
Antiguo 29/05/2008, 07:13
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
De acuerdo Respuesta: Si el campo x tiene x, no

Gracias, lo pruebo y comunico.
  #8 (permalink)  
Antiguo 29/05/2008, 07:26
 
Fecha de Ingreso: marzo-2004
Ubicación: España
Mensajes: 185
Antigüedad: 20 años, 1 mes
Puntos: 19
Respuesta: Si el campo x tiene x, no

tienes que hacer le primer query ya con el where y &&
where ip="$ip" && chisteid="$chisteid" y haces un count, si te da mas de 0, es que no puede votar
__________________
Escape Room -

Ios Games
  #9 (permalink)  
Antiguo 29/05/2008, 07:49
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Si el campo x tiene x, no

No se insertan los datos en la tabla
  #10 (permalink)  
Antiguo 29/05/2008, 07:59
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Ahora lo hago así, pero los datos no se insertan:

//Conectar amysql
$connection=mysql_connect("mysql..com","","")
or die("Error conectando a la base de datos");
$db=mysql_select_db("",$connection)
or die ("Error seleccionando la base de datos");
//Fin de conexión
$votadoid=$_GET['id'];
$ip=$_SERVER['REMOTE_ADDR'];
$vecesvotadasqry=mysql_query("SELECT * FROM votar WHERE ip = '$ip' AND votadoid = '$votadoid'");
$vecesvotadas=mysql_num_rows($vecesvotadasqry);
echo $vecesvotadas;
if($vecesvotadas>0){
echo "Lo siento, cada ip podrá votar una sola vez por cada chiste";
}else{
$votos=$_POST['votos'];
$votadoid=$_GET['id'];
$votadocateg="chistes";
$connection=mysql_connect("mysql..com","","")
or die("Error conectando a la base de datos");
$db=mysql_select_db("",$connection)
or die ("Error seleccionando la base de datos");
$query="INSERT INTO votar (votos,votadoid,votadocateg,ip) values ('$votos','$votadoid','$votadocateg','$ip')";
mysql_query($query)
or die ("Error al insertar los datos" . mysql_error());
}

Última edición por yonolose; 29/05/2008 a las 08:30
  #11 (permalink)  
Antiguo 29/05/2008, 09:17
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
De acuerdo Respuesta: Si el campo x tiene x, no

Si necesitan más información me lo comunican.
  #12 (permalink)  
Antiguo 29/05/2008, 09:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Si el campo x tiene x, no

Hola yonolose,

¿Que error te marca?

Saludos.
  #13 (permalink)  
Antiguo 29/05/2008, 14:26
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Si el campo x tiene x, no

Nada, funciona el formulario, pero no se insertan los datos, no marca error.
  #14 (permalink)  
Antiguo 29/05/2008, 15:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Si el campo x tiene x, no

Prueba ir agregando echo "aqui" para que vayas viendo puntos de control y por donde si pasa el script.

Saludos.
  #15 (permalink)  
Antiguo 29/05/2008, 15:39
 
Fecha de Ingreso: mayo-2008
Mensajes: 28
Antigüedad: 16 años
Puntos: 0
Respuesta: Si el campo x tiene x, no

creo que no hay tanta complicacion, tan solo implementa esto que te he echo

y dime que tal

Código PHP:
<?
// como yo lo haria todo picado ahorita y ya lo implementas como tu quieras

include "conexion.php"// inlcuimos el archivo de conexion
$sql="select ip,votaid from votar where `ip`='$ip';";
$ressql=mysql_query($sql);

$contador=mysql_num_rows($ressql); // contamos cuantos registros nos aparecen de la consulta

if ($contador>0){ // si el contador es mas grande que 0, o sea alguna ip ya ha votado
echo "tu no puedes votar, ya votaste anteriormente";
}
else{ 
// sino, insertamos el voto
$query="INSERT INTO votar (votos,votadoid,votadocateg,ip) values ('$votos','$votadoid','$votadocateg','$ip')";
mysql_query($query) or die mysql_error(); 
}



?>
  #16 (permalink)  
Antiguo 30/05/2008, 07:38
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Si el campo x tiene x, no

Cita:
Iniciado por emarkitus Ver Mensaje
creo que no hay tanta complicacion, tan solo implementa esto que te he echo

y dime que tal


<?
// como yo lo haria todo picado ahorita y ya lo implementas como tu quieras

include "conexion.php"; // inlcuimos el archivo de conexion
$sql="select ip,votadoid from votar where `ip`='$ip';";
$ressql=mysql_query($sql);

$contador=mysql_num_rows($ressql); // contamos cuantos registros nos aparecen de la consulta

if ($contador>0){ // si el contador es mas grande que 0, o sea alguna ip ya ha votado
echo "tu no puedes votar, ya votaste anteriormente";
}
else{ // sino, insertamos el voto
$query="INSERT INTO votar (votos,votadoid,votadocateg,ip) values ('$votos','$votadoid','$votadocateg','$ip')";
mysql_query($query) or die mysql_error();
}



?>
Bueno, gracias, pero no funciona, yo he descubierto 2 fallos. No sé si tiene más.
  #17 (permalink)  
Antiguo 30/05/2008, 07:39
(Desactivado)
 
Fecha de Ingreso: mayo-2008
Mensajes: 85
Antigüedad: 16 años
Puntos: 1
Respuesta: Si el campo x tiene x, no

tambien podrias utilizar cookies, aunque son menos seguras
  #18 (permalink)  
Antiguo 30/05/2008, 07:49
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 2 meses
Puntos: 7
De acuerdo yA!!!!!!

Ya he descubierto el fallo, era por hacer dos veces la conexión.

GRACIAS



Un saludo: BRUBY

.................................................. .................................................. .............................
VISITA MI WEB
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 14:47.