Voici mon code actuel:
Affichage des produits de la boutique:
<div id="boutique">
<h1>Explications Boutique</h1>
<?php
$req = mysql_query('SELECT * FROM products');
$total = mysql_num_rows($req);
$nbcol=2;
// on compte le nombre de miniatures
$nbpics = $total;
// si on a au moins une miniature, on les affiche toutes
if ($nbpics != 0) {
echo '<table>';
for ($i=0; $i<$nbpics; $i++){
$products = mysql_fetch_array($req);
if($i%$nbcol==0) echo '<tr>';
// pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille réelle
echo "<td><div class=\"produit\">";
echo "<div id=\"prod_titre\">".$products['name']."</div>";
echo "<div id=\"prod_contenu\">";
echo "<div id=\"prod_image\"><img src=\"images/Achats/$products[id].png\" ></div>";
// echo "<div id=\"prix\">";
echo "<div id=\"nprix\"><br/><br/><br/>".$products['prix']."</div></div>";
echo "<div id=\"img_prix\"><a href='' onclick=\"Actualiser($products[id], $products[name], $products[prix])\"><img src=\"images/Achats/prix.png\" ></a></div></div><br /></td>";
// echo "<div id=\"nprix\">".$products['prix']."</div></div><br /></td>";
if($i%$nbcol==($nbcol-1)) echo '</tr>';
}
echo '</table>';
}
// si on a aucune miniature, on affiche un petit message <img src="../../bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/smile.png" title=":)" alt=":)">
else echo 'Aucune image à afficher';
// }
?>
</div>
<script type="text/javascript" src="js/fonctions.js"></script>
Fonctions javascript :[javascript]function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
function Actualiser(id, nom, prix){
var xhr = getXhr()
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if (xhr.readyState == 4) {
if (xhr.status == 200 || xhr.status == 0){
// alert(xhr.responseText);
showConfirm(nom, prix);
}
else{
alert ("erreur"+xhr.status);
}
// xhr.responseText contient exactement ce que la page PHP renvoi
}
}
xhr.open("GET","../modules/achat.php?id="+id,true);
xhr.send(null);
}
function showConfirm(nom, prix)
{
var answer=confirm("Confirmer l'achat de"+nom+" au prix de "+prix+" Aums ?");
if (answer==true)
{
alert(xhr.responseText);
alert("Merci pour votre achat ! Allez en profiter dès maintenant !");
}
else
{
alert("Bonnes emplêtes !");
}
}[/javascript]
Page php qui est censée actualiser le porte monnaie de l'utilisateur:
<?php
session_start();
include('config.php');
?>
<?php
if(isset($_SESSION['id'])){
if (isset($_GET['id']))
$id=$_GET['id'];
{
// echo "Achat du produit $id";
$id_prod = intval($_GET['id']); // on filtre pour être certain de récupérer un nombre entier
$req1 = mysql_query('SELECT Aum FROM users WHERE id = '.$_SESSION['id'].' LIMIT 1');
$req2 = mysql_query('SELECT prix FROM products WHERE id = '.$id_prod.' LIMIT 1');
if (FALSE !== $req1 && mysql_num_rows($req1) && FALSE !== $req2 && mysql_num_rows($req2)) // La requête est passée et on a bien au moins un résultat
{
$products = mysql_fetch_assoc($req2); // Te renvoie un tableau associatif au lieu d'un tableau doublement indexé, légérement plus optimisé
$aum = mysql_fetch_assoc($req1);
$monnaie = $aum[0] - $products[0];
$sql = 'UPDATE users SET Aum='.$monnaie.' WHERE id='.$_SESSION['id']; // Ici on prend une valeur DU SERVEUR et surtout pas une valeur venant du JavaScript
$req = mysql_query($sql);
}
else
{
echo "Erreur : une des deux requêtes a échoué ou il n'y a aucun produit / user correspondant aux ids fournis";
}
}
}
else{
echo "Vous n'avez pas l'autorisation d'accéder à la page.";
}
?>
Avez-vous des remarques? des suggestions? Il n'y a aucune erreur javascript d'après la console sur chrome..pourtant ça ne fait pas ce que je veux.. Quand je clique sur un produit la page s'actualise seulement.
Merci d'avance
Peace