Hello :)
J'ai un problème avec mon script de notation étoilé que j'essaye de faire. (c'est la première fois que je bosse avec javascript)
Au lieu de parler en long et en large, je pense que les codes seront plus parlant :
javascript:
Code Javascript :
<script type="text/javascript">
<!--
function request(callback) {
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
var res = callback(xhr.responseText);
document.getElementById("test").style.display = "none";
} else if (xhr.readyState < 4) {
document.getElementById("test").style.display = "inline";
}
};
//ICI si y a un guillemet ou autre, un slash s ajoute.
var id = encodeURIComponent(document.getElementById("id").value);
var note = encodeURIComponent(document.getElementById("note").value);
xhr.open("GET", "script_vote.php?id=" + id + "¬e= " + note, true);
xhr.send(null);
}
function readData(sData) {
//alert(sData);
document.getElementById('reponseAjax').innerHTML = (sData);
}
request(readData);
</script>
Partie de code php:
Code PHP :
<?php
if(isset($_GET['id']) and isset($_GET['note']))
{
//$id est le nom du site de jeux/nom unique identifiant le vote
$id = ucfirst(trim(htmlspecialchars(addslashes(mysql_real_escape_string($_GET['id'])))));
$note = trim(intval($_GET['note']));
if($note <= 5 && $note >= 1)
{
//On verifie si le membre a deja vote
$verifVote = mysql_query('SELECT id FROM Votes WHERE Pseudo = "'.$_SESSION['pseudo'].'" AND id_du_vote = "'.$id.'"');
if(mysql_num_rows($verifVote) > 0)
{
//on calcule la moyenne
//On revoie a ajax que le membre a deja vote
echo '<ul class="vote2" id="ul_notation">
<li class="note-actu" style="width:'.$pourcent.';" id="note"></li>
<li><a onclick="return false;" href="#" title="1 sur 5" class="un" ></a></li>
<li><a onclick="return false;" href="#" title="2 sur 5" class="deux" ></a></li>
<li><a onclick="return false;" href="#" title="3 sur 5" class="trois" ></a></li>
<li><a onclick="return false;" href="#" title="4 sur 5" class="quatre" ></a></li>
<li><a onclick="return false;" href="#" title="5 sur 5" class="cinq" ></a></li>
</ul>';
}
}
}
?>
le code html
Code PHP :
<body>
<div id="test" class="test" style="display: none;"><p style="margin-top:10px; margin-bottom:5px;">Chargement en cours...</p><img src="/ajax-loader.gif" alt="Chargement en cours..." /></div>
<?php
echo'
<ul class="vote" id="ul_notation">
<li class="note-actu" style="width:0%;" id="note"></li>
<li><a onclick="request(readData); return false;" href="script_vote.php?id=mince¬e=1" title="1 sur 5" class="un" ></a></li>
<li><a onclick="request(readData); return false;" href="script_vote.php?id=mince¬e=2" title="2 sur 5" class="deux" ></a></li>
<li><a onclick="request(readData); return false;" href="script_vote.php?id=mince¬e=3" title="3 sur 5" class="trois" ></a></li>
<li><a onclick="request(readData); return false;" href="script_vote.php?id=mince¬e=4" title="4 sur 5" class="quatre" ></a></li>
<li><a onclick="request(readData); return false;" href="script_vote.php?id=mince¬e=5" title="5 sur 5" class="cinq" ></a></li>
</ul>';
?>
<div id="reponseAjax"></div>
</body>
</html>
Lien test: http://www.voilou.fr/test2.php
Ainsi cela fonctionne, le vote est soumis, les données mis à jour dans la base...
Le problème c'est que cela retourne uniquement les données du code php et le reste de la page est supprimé..
En gros, au lieu de retourner la page html ci dessus, cela retourne juste
Code HTML :
<ul class="vote2" id="ul_notation">
<li class="note-actu" style="width:'.$pourcent.';" id="note"></li>
<li><a onclick="return false;" href="#" title="1 sur 5" class="un" ></a></li>
<li><a onclick="return false;" href="#" title="2 sur 5" class="deux" ></a></li>
<li><a onclick="return false;" href="#" title="3 sur 5" class="trois" ></a></li>
<li><a onclick="return false;" href="#" title="4 sur 5" class="quatre" ></a></li>
<li><a onclick="return false;" href="#" title="5 sur 5" class="cinq" ></a></li>
</ul>
Comment cela se fait il? Car normalement il devrait que insérer ces données dans le div reponseAjax non?
MErci