Foros del Web » Programando para Internet » PHP »

Problema con sistema de puntuación

Estas en el tema de Problema con sistema de puntuación en el foro de PHP en Foros del Web. Buenas Estoy creando un sistema para puntuar, y funciona, el problema que tengo es que cuando lo meto mas de una vez en la misma ...
  #1 (permalink)  
Antiguo 18/08/2010, 07:25
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Problema con sistema de puntuación

Buenas

Estoy creando un sistema para puntuar, y funciona, el problema que tengo es que cuando lo meto mas de una vez en la misma pagina, me inserta las puntuaciones el numero de veces que este sistema esta en la pagina.

Si esta 3 veces me triplica la puntuacion.

Eso me pasa por que esta dentro de un for, que me muestra un monton de articulos por pagina.

Alguna idea???

Gracias.
  #2 (permalink)  
Antiguo 18/08/2010, 07:28
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problema con sistema de puntuación

no se entiende
no hay código
no se puede ayudar :(
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 18/08/2010, 07:29
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Podrías poner el código?

Supongo que será por tener variables con el mismo nombre
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #4 (permalink)  
Antiguo 18/08/2010, 07:46
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

Codigo de sistema de puntuaciónn

Código PHP:
<body>
<?php

$conexion 
mysql_connect ("localhost""root"""); 
        
mysql_select_db ("institutos");
        
mysql_query("SET NAMES utf8");
         
        
        
$mira_votos mysql_query ("Select votos from votaciones where id_cen=".$idcen);
        
$num_votos mysql_num_rows ($mira_votos);
        
        
$suma_votos =mysql_query ("select sum(votos) from votaciones where id_cen=".$idcen);
        
        
$suma_votos3mysql_fetch_row($suma_votos);
        
$total=$suma_votos3[0];
        
        echo 
"votos sumados" .$total;
        
        if (
$num_votos == 0)
        
$media 0;
        else
        
$media $total $num_votos;
        echo 
"media".$media;
        
$media_corta number_format($media,2);
        echo 
"media corta".$media_corta;

if (isset(
$_GET['puntuacion']))
{

$puntos $_GET['puntuacion'];
$iden $_GET['iden'];
echo 
$puntos;
echo 
$idcen;
        
$conexion mysql_connect ("localhost""root"""); 
        
mysql_select_db ("institutos");
        
mysql_query("SET NAMES utf8");
    
        
$votar mysql_query ("INSERT INTO  votaciones (id_cen, votos) VALUES (".$iden.", ".$puntos.")"); 
        
        
$mira_votos mysql_query ("Select votos from votaciones where id_cen=".$idcen);
        
$num_votos mysql_num_rows ($mira_votos);
        echo 
"numero de votos".$num_votos;
        
$suma_votos =mysql_query ("select sum(votos) from votaciones where id_cen=".$idcen);
        
        
$suma_votos3mysql_fetch_row($suma_votos);
        
$total=$suma_votos3[0];
        
        echo 
"votos sumados" .$total;
        
        if (
$num_votos == 0)
        
$media 0;
        else
        
$media $total $num_votos;
        echo 
"media".$media;
        
$media_corta number_format($media,2);
        echo 
"media corta".$media_corta;
}
?>
<!--puntuacion-->
<table width="600" border="1">
  <tr>
    <td colspan="11" align="center" class="resbusq">Puntuación</td>
  </tr>
  <tr>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=0&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_baja'>" ?>0</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=1&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_baja'>" ?>1</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=2&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_baja'>" ?>2</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=3&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_baja'>" ?>3</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=4&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_medio'>" ?>4</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=5&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_medio'>" ?>5</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=6&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_medio'>" ?>6</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=7&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_alta'>" ?>7</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=8&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_alta'>" ?>8</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=9&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_alta'>" ?>9</a></td>
    <td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=10&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_alta'>" ?>10</a></td>
    </tr>
    <tr>
        <td colspan="11" align="center" class="resbusq">Votos: <?php echo $media_corta ?></td>
    </tr>
</table>

</body>
</html>
para que os hagais una idea esto lo incluyo en un codigo mas o menos asi(si pongo todo el codigo me matais)

Código PHP:
for ($i=0$i<$N_reg_X_pag$i++)
    {
        
$prueba mysql_fetch_array($con2);
                
$idcen=$prueba['id_cen'];
                echo    
"<td colspan='3' class='resbusq'>Nombre del centro: <span class='resul'>".$prueba['nombre']."</span></td>";
                include(
'puntuacion.php');//sistema de votacion
          

Gracias.
  #5 (permalink)  
Antiguo 18/08/2010, 07:51
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Podrías poner la línea de con2, por favor? (es decir, la sentencia SQL y el query)
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #6 (permalink)  
Antiguo 18/08/2010, 07:59
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

Código PHP:
$con2 mysql_query("select c.id_cen, c.nombre, c.direccion, pb.poblacion, pb.cod_pos, pr.provincia, c.telefono, c.telefono2, c.fax, c.web, c.mail 
                            from centros c 
                            join poblaciones pb 
                            on c.id_pob = pb.id_pob
                            join provincias pr 
                            on pb.id_pro = pr.id_pro
                            join rel_estudios rel
                            on c.id_cen = rel.id_cen
                            where provincia like '"
.$var1."' and id_ciclo = '".$var3."' order by c.nombre limit ".$inicio.",".$TAMANO_PAGINA) or die ("Fallo en la consulta"); 
Gracias por tu paciencia.
  #7 (permalink)  
Antiguo 18/08/2010, 08:01
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Lo que me imaginaba: cuando una consulta da diversos valores, para mirarlos hace falta un while.

Antes de seguir y yo cagarla, te pregunto: te van saliendo los nombres o son siempre los mismos nombres (el $prueba['nombre'])
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #8 (permalink)  
Antiguo 18/08/2010, 08:05
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

Me salen todos los datos bien, no me repite ningún dato, excepto el insert del puntuacion.php.
  #9 (permalink)  
Antiguo 18/08/2010, 08:16
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

Pero con un while, me hara lo mismo, no?
  #10 (permalink)  
Antiguo 18/08/2010, 08:29
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Entonces, prueba a meter la votación en una función, y a incluir ese archivo 1 sola vez, y llamando la función cada vez.

Por precaución, prueba de escribir la variable id, a ver si es o no es correcto el valor que aparece.
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #11 (permalink)  
Antiguo 18/08/2010, 11:04
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

No lo consigo, si quiero que me salga debajo de cada bloque de datos, tengo que meterlo dentro del while o del for y entonces me triplica el insert, y si lo saco del for solo consigo votar el ultimo bloque.

No se que hacer.
  #12 (permalink)  
Antiguo 18/08/2010, 13:23
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Prueba: a escribir en pantalla la variable idcen, y compruebas en unos cuantos si es o no correcta.

Si es correcta, prueba el archivo de puntuación solo, sin bucle, le haces las modificaciones necesarias (creo que con poner la variable idcen ya es suficiente) y lo pruebas.

Si va, entonces ya vemos que es un problema del bucle:

for ($i=0; $i<$N_reg_X_pag; $i++)
{
$prueba = mysql_fetch_array($con2);
$idcen=$prueba['id_cen'];
echo
"<td colspan='3' class='resbusq'>Nombre del centro: <span class='resul'>".$prueba['nombre']."</span></td>";
include(
'puntuacion.php');//sistema de votacion
}

$N_reg_X_pag supongo que debe ser el máximo de registros por página, por tanto, se puede probar con un while:

Código PHP:
while($prueba mysql_fetch_array($con2)){
$idcen=$prueba['id_cen']; 
echo    
"<td colspan='3' class='resbusq'>Nombre del centro: <span class='resul'>".$prueba['nombre']."</span></td>"
include(
'puntuacion.php');//sistema de votacion 

Si después de esto último no va, finalmente te recomiendo que pongas en el sistema de votación:

function puntos($idcen){

Y en el archivo que pagina, pues pones el include('puntuacion.php') fuera del bucle y a cada entrada, llamas a la función:

Código PHP:
include('puntuacion.php');
while(
$prueba mysql_fetch_array($con2)){
$idcen=$prueba['id_cen']; 
echo    
"<td colspan='3' class='resbusq'>Nombre del centro: <span class='resul'>".$prueba['nombre']."</span></td>"
puntos ($idcen);

Si después de toooodo esto sigue sin ir, lo siento pero me he quedado sin ideas
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #13 (permalink)  
Antiguo 19/08/2010, 01:43
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

Buenas mark

Antes de todo gracias, gracias por tu tiempo, por tu paciencia y por tu esfuerzo al escrivir todo ese post.

Lo he provado todo y nada, te explico, la variable idcen, funciona, de hecho la puse expresamente, porque en un principio me votaba a todo lo que habia en la pantalla, y para discriminar a los otros, la tuve que crear.

Tambien te confirmo que si solo hay un resultado solo me vota una vez.

El problema es que si me llena la pagina, en un principio con 3 resultados, me vota a los tres con la puntuacion seleccionada.

idcen puntos
1 5
1 5
1 5

Para mas claridad te simulo la tabla.

probe a crear un for dentro de un for solo con un resultado, pero tampoco me funciona.

Código PHP:
$n_bloque=0;//Variable que me indica, el bloque que es.
         
for (j=0j<N_reg_X_pagj++)
         {
          for (
j=0i<1i++)
           
$prueba mysql_fetch_array($con2);
        
$idcen=$prueba['id_cen'];
            echo    
"<td colspan='3' class='resbusq'>Nombre del centro: <span class='resul'>".$prueba['nombre']."</span></td>";
           include(
'puntuacion.php');
           echo 
"bloque".$n_bloque;// me indica el numero de bloque de datos
    
echo"<br>";
        
$n_bloque++;//me aumenta la variabla, Funciona bien.
           
}
           } 
La variabla luego descriminaba el puntuacion.php

Código PHP:
if ($bloque == 0)
         
$votar mysql_query ("INSERT INTO  votaciones (id_cen, votos) VALUES (".$iden.", ".$puntos.")");
        if (
$bloque == 1)
        
$votar mysql_query ("INSERT INTO  votaciones (id_cen, votos) VALUES (".$iden.", ".$puntos.")");
        if (
$bloque ==2)
        
$votar mysql_query ("INSERT INTO  votaciones (id_cen, votos) VALUES (".$iden.", ".$puntos.")"); 
Pero nada. Todo esto, lo he probado con el while tambien.

Creo que el problema tambien puede estar aqui

Puntuacion.php

Código PHP:
if (isset($_GET['puntuacion']))/*Si esto se pudiese discriminar de otra manera igual funcionaria, pero no le veo el como*/
{
$puntos $_GET['puntuacion']; 
pense en tratar de cambiar la variabla $puntos con una puntuacion diferente a de 0 a 10.
pero da igual, porque el <a href siempre me hace que vuelva a una puntuacion de entre 0 y 10>

Código PHP:
<td align="center"><?php echo "<a href='bus_gen3.php?puntuacion=0&pagina=".$pagina."&iden=".$idcen."&var1=".$var1."&var3=".$var3."' id='vot_baja'>" ?>0</a></td>
He probado tambien, pasarlo a traves de un post, creando un form, pero no me convence, porque, en el action, le tendría que pasar variables, y no he visto el modo.

En fin he probado tantas cosas, que me he bloqueado, por eso escrivi aqui.

Empiezo a pensar que tengo que meter algo de java, pero como no lo domino mucho, he estado evitandolo.

Gracias.
  #14 (permalink)  
Antiguo 19/08/2010, 02:07
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Hola buenos días:

Me he vuelto a mirar el sistema de puntuación (puntuacion.php) y he visto que quizás el problema reside en bus_gen3.php, que es donde se envían los datos cuando se hace click en un número

Si me dices qué se hace ahí, quizás puedo ver ya el problema (ya lo empiezo a dudar).

Finalmente, si quieres probar por $_POST, pueses usar un hidden dentro del form, un campo oculto, que no se puede modificar, y que funcionaría como un text:

<input tye="hidden" name="variable" value="<?php echo $variable; ?>" />
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #15 (permalink)  
Antiguo 20/08/2010, 01:34
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

Buenas mark

Cita:
Iniciado por markmb Ver Mensaje
Hola buenos días:

Me he vuelto a mirar el sistema de puntuación (puntuacion.php) y he visto que quizás el problema reside en bus_gen3.php, que es donde se envían los datos cuando se hace click en un número

Si me dices qué se hace ahí, quizás puedo ver ya el problema (ya lo empiezo a dudar).

Realmente el <a href> esta en puntuacion.php pero como hago un include en bus_gen3.php, el que hace el enlace es bus_gen3.php

Espero responder bien a tu pregunta, voy a probar lo del post.
  #16 (permalink)  
Antiguo 20/08/2010, 01:39
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Entonces bus_gen3.php es:

include(puntuacion.php);

Me dices eso?
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #17 (permalink)  
Antiguo 20/08/2010, 01:43
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

Cita:
Iniciado por markmb Ver Mensaje
Entonces bus_gen3.php es:

include(puntuacion.php);

Me dices eso?
No te entiendo!

Bus_gen3.php: es donde esta el for, donde me hace la busqueda y me muestra los datos. Y es donde esta el include.
  #18 (permalink)  
Antiguo 20/08/2010, 01:49
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Ahora si lo entiendo
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #19 (permalink)  
Antiguo 20/08/2010, 01:50
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

jeje, ok, y sabes que puedo hacer?
  #20 (permalink)  
Antiguo 20/08/2010, 05:12
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

Tengo la solución, algo sencillo, pero que nos ha hecho dar vueltas de cabeza. Tan sencillo como para no verlo:

El archivo donde se procesa la votación, es el mismo archivo donde se saca la puntuación, por eso, cada vez que se ejecuta el for, se introduce la puntuación, el trozo de que comprobar si hay get, podrías ponerlo fuera del for (en el archivo del for, claro está, lo cortas del puntuación.php y lo pegas ahí).

Si no va esto, ya empieza a ser algo muuuuy raro.
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #21 (permalink)  
Antiguo 20/08/2010, 06:22
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

ERES UN CRACK!!!

Funciona!!!

Muchas Gracias por tu ayuda.
  #22 (permalink)  
Antiguo 20/08/2010, 06:23
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 14 años, 6 meses
Puntos: 10
Respuesta: Problema con sistema de puntuación

De nada, lo que pasa es que siempre busco los tres pies al gato
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #23 (permalink)  
Antiguo 20/08/2010, 06:25
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Problema con sistema de puntuación

Yo no le encontraba ningún pie, por no encontrar no encontraba ni el gato!!! jejeje.

Gracias de nuevo.

Etiquetas: sitemap
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 03:56.