I have a view of opinions and I want to ALWAYS mark the one that is in first position, whether or not it exists, in the next update of the visualization.
The first one is marked for me, because I have if($opinion["idopinion"]==1){
and coincidentally matches the database == 1, but it should not be like that. How is it solved?
If I press "Delete" that opinion, the page is reloaded but it does not mark any radiobutton. How would it work?
Code:
if(isset($_GET["eliminar"])){
//Llamamos al método "obtenerOpinionesPorCliente" y le pasamos el parámetro del email del cliente.
$opiniones = BD::obtenerOpinionesPorCliente("[email protected]");
echo "<form action='menu_cliente.php?eliminar=1' name='form_a_eliminar' id='form_a_eliminar' method='POST'>";
foreach ($opiniones as $opinion){
$fecha = new DateTime($opinion["fecha"]);
$comentario = $fecha->format('d/m/Y')."(".$opinion["idemail"].") - ".$opinion["opinion"]."<br/><br/>";
if($opinion["idopinion"]==1){
echo "<input type='radio' name='a_eliminar' value='".$opinion["idopinion"]."' checked>".$comentario."</input>";
}else{
echo "<input type='radio' name='a_eliminar' value='".$opinion["idopinion"]."'>".$comentario."</input>";
}
}
echo "<input type='submit' value='Eliminar opinion' name='eliminar_opinion' id='eliminar_opinion'>";
echo "</form>";
}
Function: Obtain Customer Insights:
static public function obtenerOpinionesPorCliente($idemail){
$ejecucion = self::Conexion();
$sql = "SELECT * FROM opiniones WHERE idemail='$idemail';";
$registro = $ejecucion->query($sql);
//Creamos un array para almacenar las opiniones.
$misopiniones = array();
//Recorremos el array y añadimos en él las opiniones mediante array_push.
while($datos = $registro->fetch()){
//Al array $misopiniones le pasamos $datos.
array_push($misopiniones, $datos);
}
//Devuelve el array $misopiniones (asociativo).
return $misopiniones;
}
Database code:
CREATE TABLE OPINIONES (
idopinion INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
idemail VARCHAR(50) NOT NULL,
idcabana INT NOT NULL,
opinion VARCHAR(300) NOT NULL,
fecha DATE NOT NULL,
valoracion INT NOT NULL,
CHECK (valoracion>=0 AND valoracion<=5),
FOREIGN KEY (idemail) REFERENCES CLIENTES(idemail) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (idcabana) REFERENCES CABANAS(idcabana) ON UPDATE CASCADE ON DELETE CASCADE
);
Delete Button:
if(isset($_POST["eliminar_opinion"])){
$a_eliminar = $_POST["a_eliminar"];
//Llamamos al método "borrarOpinion" y le pasamos el parámetro (idopinion).
BD::borrarOpinion($a_eliminar);
}
When you delete an opinion, none is marked because there is no idopinion == 1