Yop, je suis actuellement en train de coder la partie boutique de mon site. Je souhaite faire un systeme de porte monnaie virtuel. Après avoir rechargé son porte monnaie, l'utilisateur peut accéder à la partie boutique et cliquer sur le produit qu'il veut. En cliquant, l'utilisateur doit confirmer par un ptit message jscript et lorsque ceci est fait, son porte monnaie s'actualise.
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
Yop, je suis actuellement en train de coder la partie boutique de mon site. Je souhaite faire un systeme de porte monnaie virtuel. Après avoir rechargé son porte monnaie, l'utilisateur peut accéder à la partie boutique et cliquer sur le produit qu'il veut. En cliquant, l'utilisateur doit confirmer par un ptit message jscript et lorsque ceci est fait, son porte monnaie s'actualise.
Voici mon code actuel:
Affichage des produits de la boutique:
[php]<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>[/php]
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]<?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.";
}
?>[/php]
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