Foros del Web » Programando para Internet » PHP »

duda con sistema de puntuacion

Estas en el tema de duda con sistema de puntuacion en el foro de PHP en Foros del Web. pues nada gente que tengo para variar una duda. Mirad tengo un formulario en el cual el usuario puede escoger del 1 al 10 para ...
  #1 (permalink)  
Antiguo 19/06/2004, 12:57
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
duda con sistema de puntuacion

pues nada gente que tengo para variar una duda.

Mirad tengo un formulario en el cual el usuario puede escoger del 1 al 10 para poder votar un producto,lo malo?que no se como hacerlo para que el sistema sume esa cantidad.

Código PHP:
$query "UPDATE productos set puntuacion= (puntuacion + 50) WHERE id='$id'"
asi odo v bien pero no se como hacerlo para que recoja los datos del formu y los sume(se como pasar datos desde el form,pero no se como hacerlo en este caso )

Muchas Gracias ;)
  #2 (permalink)  
Antiguo 19/06/2004, 14:36
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
pues...
Código PHP:
<?php
$puntuacion
=$_POST['puntos'];
$sql=mysql_query("SELECT puntuacion FROM productos WHERE id='$id'");
$dato=mysql_fetch_assoc($sql);
$total=$dato['puntuacion']+$puntuacion;
$query=mysql_query("UPDATE productos SET puntuacion='$total' WHERE id='$id'");
?>
ya despues poderias comprobar que el numero con el que votan sea menor de 10, que sea un numero, etc.. para evitar posibles errores
__________________
Sin Ideas
  #3 (permalink)  
Antiguo 19/06/2004, 15:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
muchas gracias ;) era justo lo que necesitaba :D
  #4 (permalink)  
Antiguo 19/06/2004, 15:45
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
que raro no me va :(

mira aqui te pongo el codigo del form:

Código PHP:
<form action="puntuacion.php?id=$id" method="post">
                            <
select name='puntos'>
                              <
option selected style="color:white;background-color:#000066;">Votar!!</option>
                              <
option value='1;'style="color:#FFFFFF;background-color:#000053;">1</option>
                              <
option value='2;'style="color:white;background-color:#000066;">2</option>
                              <
option value='3;'style="color:#FFFFFF;background-color:#000053;">3</option>
                              <
option value='4;'style="color:white;background-color:#000066;">4</option>
                              <
option value='5;'style="color:#FFFFFF;background-color:#000053;">5</option>
                              <
option value='6;'style="color:white;background-color:#000066;">6</option>
                              <
option value='7;'style="color:#FFFFFF;background-color:#000053;">7</option>
                              <
option value='8;'style="color:white;background-color:#000066;">8</option>
                              <
option value='9;'style="color:#FFFFFF;background-color:#000053;">9</option>
                              <
option value='10;'style="color:white;background-color:#000066;">10</option>
                            </
select>
                            <
input type="submit" name="puntos" style="width:18px;height:18px;border-width:thin;border-style:solid;color:#000000;background-image:url(1.jpg);">
                          </
form
porque aparentemente el codigo esta bien,gracias :D
  #5 (permalink)  
Antiguo 20/06/2004, 11:38
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
intenta ponerlo asi:

Código HTML:
<form action="puntuacion.php?id=$id" method="post">
  <select name="puntos">
    <option selected style="color:white;background-color:#000066;">Votar!!</option>
    <option value="1" style="color:#FFFFFF;background-color:#000053;">1</option>
    <option value="2" style="color:white;background-color:#000066;">2</option>
    <option value="3" style="color:#FFFFFF;background-color:#000053;">3</option>
    <option value="4" style="color:white;background-color:#000066;">4</option>
    <option value="5" style="color:#FFFFFF;background-color:#000053;">5</option>
    <option value="6" style="color:white;background-color:#000066;">6</option>
    <option value="7" style="color:#FFFFFF;background-color:#000053;">7</option>
    <option value="8" style="color:white;background-color:#000066;">8</option>
    <option value="9" style="color:#FFFFFF;background-color:#000053;">9</option>
    <option value="10" style="color:white;background-color:#000066;">10</option>
  </select>
  <input type="submit" name="puntuar" style="width:18px;height:18px;border-width:thin;border-style:solid;color:#000000;background-image:url(1.jpg);">
</form> 
__________________
Sin Ideas
  #6 (permalink)  
Antiguo 21/06/2004, 01:18
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
OLE tio ya funciona :D muchas gracias :D
  #7 (permalink)  
Antiguo 21/06/2004, 02:20
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
mmmmmmmmm quisiera poder mostrar la media de forma 1.5 9.3 etc....

hace algun tiempo el maestro cluster me puso un ejemplo :D pero no se porque no me va :(

aqui el codigo...fijo que la toy cagando xD

Código PHP:
<? 
$sql
="SELECT AVG(votos_producto) AS media FROM votos WHERE id_votacion='laquesea'"
$resultado=mysql_query($sql); 
$media=mysql_result($resultado,0,"media"); 
echo 
$media
?>



P.D: tambien e pensado en dividir los votos por los usuarios que han votado...pero no se si sera la manera :D

Gracias ;)
  #8 (permalink)  
Antiguo 21/06/2004, 08:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sobre el primer problema ...

Si sabes que una instrucción SQL de tipo "campo=campo+valor" va a incrementear ese campo en N valor con un UPDATE simple . .no es necesario que hagas un SELECT antes .. simplemente usa tu variable (tu voto) . .eso sí . verifica el rango de valores que puede tener (en tu caso 1 a 10 numérico):

Código PHP:
$puntos=$_POST['puntos'];
if (
$puntos && $puntos <= 10){
$query "UPDATE productos set puntuacion= (puntuacion + $puntos) WHERE id='$id'"
// resto código .. ejecuta tu $query ...
} else {
  echo 
"no te pases de listo xDD";

El otro problema sobre el "AVG()" .. no sé como lo estás aplicando a tu caso concreto .. (tus tablas y condiciones) .. pero sería ideal que pusieras exactamente como lo estás usando ... Y que describas que datos (ejemplo de unos cuantos) tienes en cada campo/registro de la tabla implicada.

Un saludo,
  #9 (permalink)  
Antiguo 21/06/2004, 08:41
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
gracias cluster :D

mira lo tengo exactamente asi:
(no hago la conexion ya que al principio de la pagina pongo un include hacia la conex)

Código PHP:
                          <? 
$sql
="SELECT AVG(productos_puntuacion) AS media FROM puntuacion_productos WHERE id_producto='id_producto'"
$resultado=mysql_query($sql); 
$media=mysql_result($resultado,0,"media"); 
echo 
$media
?>
La id del producto ya la tengo de una conex anterior :D gracias :D
  #10 (permalink)  
Antiguo 21/06/2004, 08:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Pues .. se supene que eso debería funcionar si en el campo "productos_puntuación" vas guardando tus votos "de 1 a 10" para cada producto ..

Fijtate en este tutorial al respecto.
http://www.programacion.com/bbdd/tutorial/sql/4/

Ahora .. abría que ver si tienes problemas con la consulta SQL o conexión en sí .. para eso intenta usar:


Código PHP:
$resultado=mysql_query($sql) or die (mysql_error()); 
Por otro lado .. supongo que esto será un lapsus al poner el mensaje en el foro:
WHERE id_producto='id_producto'

ahí debería ser:

WHERE id_producto='$id_producto'

o de donde venga esa variable $id_producto (GET,POST .. etc).

Un saludo,
  #11 (permalink)  
Antiguo 21/06/2004, 10:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
bingo cluster a sido un lapsus xD ahora mismo miro el tutorial y modifico el codigo :D.
gracias

Edito: Lo e modificado todo y sigue igual ni da error ni nada solo que no me muestra el resultado,ahora pongo aqui la estructura de la tabla:D

Código PHP:
CREATE TABLE puntuacion_productos 
id bigint(7NOT NULL auto_increment
id_producto char(250) default NULL
user_id char(250) default NULL
productos_puntuacion char(250) default NULL
KEY id (id)) 

Última edición por Newphp; 21/06/2004 a las 10:15
  #12 (permalink)  
Antiguo 21/06/2004, 10:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
pero .. vamos a ver...

en:
productos_puntuacion char(250) default NULL,

Que guardas? ..(ejemplo de datos)

Las funciones como AVG() sólo funcionarían si el campo es de tipo numérico .. no un "char" (que es alfanumérico) .. tendrías que usar ahí un dato tipo: TNYINT(2) o similar (ya que sólo guadars nº del 1 al 10)

Un saludo,
  #13 (permalink)  
Antiguo 21/06/2004, 11:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
ooops......valla cagada..... bueno ahora me muestra 0 y debajo lo que parece ser la media pero me lo muestra asi: 7.3333 podria hacerlo de tal manera que solo me muestre dos numeros?y no 5 gracias :D

Última edición por Newphp; 21/06/2004 a las 11:11
  #14 (permalink)  
Antiguo 21/06/2004, 11:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues si .. en SQL de Msyql tienes funciones para tal fin (revisa su manual) o bien desde PHP con number_format() .. Pero insisto que es recomendable que lo hagas desde SQL y no desde PHP pese que te sea más facil .. todo lo que resuelvas con SQL será más optimo que hacerlo por mezcla de PHP+Mysql (SQL).

Un saludo,
  #15 (permalink)  
Antiguo 21/06/2004, 11:46
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 11 meses
Puntos: 0
gracias :D ahora revisare el manual para ver si encuentro lo de los numeros ;)(que no me muerte 5 xD sino 2)

Gracias ;)
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:54.