par
Larker » 27 avr. 2017, 16:07
Salut !
En gros comme sur allociné. Quand on note ça conserve le nombre d'étoiles qu'on a donné. Et on peut modifier à tout moment.
J'arrive à faire tout ça en ajax mais je ne parviens pas du tout à conserver la note du membre.
AJAX :
<?php
// Est-ce que le ID est présent? et est-ce que que l'utilisateur est connecté?
if (isset($_SESSION['id'])) {
if (isset($_GET['id'])){
$posteur = $_SESSION['id'];
$id_film = $_GET['id'];
$star = $_GET['star'];
$date = date('Y-m-d');
$getEnvieMembre = $bdd->query("SELECT * FROM `note_film` WHERE posteur=$posteur AND id_film=$id_film");
// Ici on vérifie le nombre d'entrée que la requête nous retourne
// Quand on constate que le résultat est égal à zéro, on ajoute l'entrée
if( $getEnvieMembre->rowCount() === 0) {
$addwatchliste = $bdd->prepare("INSERT INTO `note_film` VALUES ('', ?, ?, ?)");
$addwatchliste->execute(array($posteur, $id_film, $star));
// Tout s'est bien passé, on envoie la confirmation
$retour = array(
'resultat' => true,
'message' => 'Votre note a bien été prise en compte',
);
}
else {
$addnote = $bdd->prepare("UPDATE `note_film` SET `note` = ? WHERE posteur=$posteur AND id_film=$id_film");
$addnote->execute(array($star));
// Tout s'est bien passé, on envoie la confirmation
$retour = array(
'resultat' => true,
'message' => 'Votre note a bien été prise en compte',
);
}
}
else {
$retour = array(
'resultat' => false,
'message' => 'Une erreur s\'est produite. Le ID n\'est pas présent dans la requète',
);
}
}
else {
$retour = array(
'resultat' => false,
'message' => 'Vous devez être connecté pour noter ce film.',
);
}
// Le retour est la confirmation/non-confirmation faite par le code
// On retourne le tout en JSON pour nous permettre de l'utiliser dans le Javascript
echo json_encode($retour);
Et l'affichage :
<style>
.rating {
font-size: 35px;
overflow:hidden;
line-height:normal;
}
.rating a {
float:left;
font-size: 24px;
color: #aaa;
text-decoration: none;
-webkit-transition: color .4s;
-moz-transition: color .4s;
-o-transition: color .4s;
transition: color .4s;
}
.rating a:hover,
.rating a:hover ~ a,
.rating a:focus,
.rating a:focus ~ a {
color: #f7d16d;
cursor: pointer;
}
.rating2 {
direction: rtl;
}
.rating2 a {
float:none;
}
</style>
<div>
Donner ma note :
<div class="rating rating2"><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="10" title="Donner 10/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="9" title="Donner 9/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="8" title="Donner 8/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="7" title="Donner 7/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="6" title="Donner 6/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="5" title="Donner 5/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="4" title="Donner 4/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="3" title="Donner 3/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="2" title="Donner 2/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="1" title="Donner 1/10">★</a>
</div>
</div>
Salut !
En gros comme sur allociné. Quand on note ça conserve le nombre d'étoiles qu'on a donné. Et on peut modifier à tout moment.
J'arrive à faire tout ça en ajax mais je ne parviens pas du tout à conserver la note du membre.
AJAX :
[PHP]
<?php
// Est-ce que le ID est présent? et est-ce que que l'utilisateur est connecté?
if (isset($_SESSION['id'])) {
if (isset($_GET['id'])){
$posteur = $_SESSION['id'];
$id_film = $_GET['id'];
$star = $_GET['star'];
$date = date('Y-m-d');
$getEnvieMembre = $bdd->query("SELECT * FROM `note_film` WHERE posteur=$posteur AND id_film=$id_film");
// Ici on vérifie le nombre d'entrée que la requête nous retourne
// Quand on constate que le résultat est égal à zéro, on ajoute l'entrée
if( $getEnvieMembre->rowCount() === 0) {
$addwatchliste = $bdd->prepare("INSERT INTO `note_film` VALUES ('', ?, ?, ?)");
$addwatchliste->execute(array($posteur, $id_film, $star));
// Tout s'est bien passé, on envoie la confirmation
$retour = array(
'resultat' => true,
'message' => 'Votre note a bien été prise en compte',
);
}
else {
$addnote = $bdd->prepare("UPDATE `note_film` SET `note` = ? WHERE posteur=$posteur AND id_film=$id_film");
$addnote->execute(array($star));
// Tout s'est bien passé, on envoie la confirmation
$retour = array(
'resultat' => true,
'message' => 'Votre note a bien été prise en compte',
);
}
}
else {
$retour = array(
'resultat' => false,
'message' => 'Une erreur s\'est produite. Le ID n\'est pas présent dans la requète',
);
}
}
else {
$retour = array(
'resultat' => false,
'message' => 'Vous devez être connecté pour noter ce film.',
);
}
// Le retour est la confirmation/non-confirmation faite par le code
// On retourne le tout en JSON pour nous permettre de l'utiliser dans le Javascript
echo json_encode($retour);
[/PHP]
Et l'affichage :
[PHP]<style>
.rating {
font-size: 35px;
overflow:hidden;
line-height:normal;
}
.rating a {
float:left;
font-size: 24px;
color: #aaa;
text-decoration: none;
-webkit-transition: color .4s;
-moz-transition: color .4s;
-o-transition: color .4s;
transition: color .4s;
}
.rating a:hover,
.rating a:hover ~ a,
.rating a:focus,
.rating a:focus ~ a {
color: #f7d16d;
cursor: pointer;
}
.rating2 {
direction: rtl;
}
.rating2 a {
float:none;
}
</style>
<div>
Donner ma note :
<div class="rating rating2"><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="10" title="Donner 10/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="9" title="Donner 9/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="8" title="Donner 8/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="7" title="Donner 7/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="6" title="Donner 6/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="5" title="Donner 5/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="4" title="Donner 4/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="3" title="Donner 3/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="2" title="Donner 2/10">★</a><!--
--><a hrefid="<?=$getNews['id']; ?>" alt="1" title="Donner 1/10">★</a>
</div>
</div>[/PHP]