No tengo ningún conocimiento de php pero si de programación, y estoy intentando iniciarme un poco con esto. El problema es que estoy intentando hacer una especie de sistema de votación de platos de restaurantes, mediante un bucle muestro todos los platos disponibles y al lado de cada uno de ellos agrego un combo con las diferentes calificaciones posibles y un botón que llama a una función que debe calcular la media de los votos y agregar un voto más al total. El problema reside en que en lugar de actualizarme este plato en concreto me está actualizando toda la lista y me está volviendo un poco loca. El código que tengo es el siguiente:
Código PHP:
<?php
// Incluyo la conexion
include "conexion.php";
$sql = "SELECT * FROM c_platos ";
if (!isset($_POST['search_box']) or ($_POST['search_box']=="todos")) {
$sql .= "ORDER BY puntuacion DESC";
}
elseif (isset($_POST['search_box'])) {
$search_term = mysql_real_escape_string($_POST['search_box']);
$sql .= "WHERE grupo = '{$search_term}'";
$sql .= "ORDER BY puntuacion DESC";
}
$query = mysql_query($sql) or die(mysql_error());
// Consultar la base de datos
$consulta_mysql="SELECT DISTINCT grupo FROM c_platos";
$resultado_consulta_mysql=mysql_query($consulta_mysql) or die(mysql_error());
echo "<form method=\"POST\" action=\"lista.php\">" ;
echo "<select name='search_box' onchange=\"this.form.submit();\">";
echo "<option value=\"todos\"".(($_POST['search_box']=="todos") ? "selected='selected'":"").">Todos</option>";
while($fila=mysql_fetch_array($resultado_consulta_mysql)){
echo "<option value='".$fila['grupo']."' ".(($_POST['search_box']==$fila['grupo']) ? "selected='selected'":"").">".$fila['grupo']."</option>";
}
echo "</select></form>";
function hello($idPlato){
$consul1="SELECT * FROM c_platos WHERE id_plato= '{$idPlato}'";
$cogeVotos=mysql_query($consul1) or die(mysql_error());
$puntu_plato=mysql_fetch_assoc($cogeVotos);
$votos=$puntu_plato['puntuacion']; //puntuación media hasta este momento
$numerVotos=$puntu_plato['num_votos']; //votos obtenidos hasta este momento
$numerVotos++; //se añade un voto más al numero de votos recibidos
$valorVoto=$_POST['voto']; //el voto q le da el usuario
echo $_POST['search_box'];
if($_POST['voto']=="Excelente"){
$votos=($votos+100)/$numerVotos;
}
elseif($_POST['voto']=="Muy Bueno"){
$votos=($votos+80)/$numerVotos;
}
elseif($_POST['voto']=="Bueno"){
$votos=($votos+60)/$numerVotos;
}
elseif($_POST['voto']=="Regular"){
$votos=($votos+40)/$numerVotos;
}
elseif($_POST['voto']=="Malo"){
$votos=($votos+20)/$numerVotos;
}
$consul3="UPDATE c_platos SET c_platos.num_votos='{$numerVotos}' WHERE c_platos.id_plato='{$idPlato}'";
$consul4="UPDATE c_platos SET c_platos.puntuacion='{$votos}' WHERE c_platos.id_plato='{$idPlato}'";
mysql_query($consul3) or die(mysql_error());
mysql_query($consul4) or die(mysql_error());
}
?>
<table width="70%" cellpadding="5" cellspace="5">
<tr>
<td>ID</td>
<td>Nombre</td>
<td>Precio</td>
<td>Puntuacion</td>
<td>Grupo</td>
<td>Num Votos </td>
<td>Voto </td>
</tr>
<?php while ($row = mysql_fetch_array($query)) {
?>
<tr>
<td id='id' value='<?php echo $row['id_plato']; ?>'><?php echo $row['id_plato']; ?></td>
<td><?php echo $row['nombre']; ?></td>
<td><?php echo $row['precio']; ?></td>
<td><?php echo $row['puntuacion']; ?></td>
<td><?php echo $row['grupo']; ?></td>
<td><?php echo $row['num_votos']; ?></td>
<td>
<form method="POST" action="lista.php">
<select id='<?php echo $row['id_plato'];?>' name='voto'>
<option value="Excelente">Excelente</option>
<option value="Muy Bueno">Muy Bueno</option>
<option value="Bueno">Bueno</option>
<option value="Regular">Regular</option>
<option value="Malo">Malo</option>
<input type="submit" name='<?php echo $row['id_plato']; ?>' value="Votar" onclick='<?php hello($row['id_plato']); ?>'/>
</select>
</td>
</tr>
<?php } ?>