I want to do the following. When clicking on a link, a onclick
event is executed and the database is updated with AJAX.
PHP Code
if ($mencion['seccion'] == "noticia") {
if ($mencion['leido'] == 0) {
echo sprintf(
'<a class="mencion" rel="nofollow" data-idmencion="%s" data-id="%s" data-foro="%s" data-subforo="%s" data-asunto="%s" data-pagina="%s" class="leido" href="%s"><strong>%s</strong></a>',
$id_mencion,
$id_hilo,
str_replace(" ", "%",$mencion['foro']),
$mencion['subforo'],
limpia_url($informacion_hilo[0]['titulo']),
$mencion['pagina_hilo'],
$ruta . "noticia/" . $id_hilo . "/" . limpia_url($informacion_hilo[0]['titulo']) . "/",
$informacion_hilo[0]['titulo']
);
?>
<script>
document.querySelector('.mencion').addEventListener('click', function leido (event) {
var idmencion = this.dataset.idmencion
// Prevent the default link behaviour, i.e. the redirect
event.preventDefault()
$.ajax ({
type: 'POST',
url: 'process_leido.php',
data: { "idmencion": idmencion },
success: function(data){
location.href = "<?php echo $ruta ?>noticia/" + idmencion + "/<?php echo limpia_url($informacion_hilo[0]['titulo']) ?>/";
}
})
})
</script>
<?php
} else {
echo "<a class='mencion' rel='nofollow' href=''>" . $informacion_hilo[0]['titulo'] . "</a>";
}
}
This generates the following HTML code:
<a class="mencion" rel="nofollow" data-idmencion="56" data-id="161" data-foro="-" data-subforo="-" data-asunto="Need-For-Speed-Payback-lo-nuevo-de-Ghost-Games-y-Electronic-Arts" data-pagina="0" href="http://localhost/xboxone/noticia/161/Need-For-Speed-Payback-lo-nuevo-de-Ghost-Games-y-Electronic-Arts/" style="color: rgb(124, 6, 32);"><strong>Need For Speed Payback, lo nuevo de Ghost Games y Electronic Arts</strong></a>
The code where AJAX runs:
session_start();
require 'admin/config.php';
try {
$conexion = new PDO($bd_config['dbname'], $bd_config['usuario'], $bd_config['password'] );
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
$id = isset($_POST['idmencion'])? $_POST['idmencion'] : 0;
$statement = $conexion->prepare("UPDATE menciones SET leido = 1 WHERE id = :id");
$statement->execute(array(":id" => $id));