'En stock!' alors que stock épuisé - Ajax PHP
Posté : 29 déc. 2014, 16:18
Bonjour,
Ma demo de site ecommerce créée l'année dernière qui fonctionnait très bien, à présent déraille sans que je n'ai touché à rien.... C'est vrai !
Je sélectionne un article, puis son coloris, la longueur désirée ainsi que la quantité, et en fonction de ces critères, renseignés par l'utilisateur, le prix s'affiche ainsi que la disponibilité.
Le problème, c'est qu'aujourd'hui tout est 'En stock!' et uniquement 'En Stock', même si dans ma db ça ne l'est pas.
Je dirais que ça coince du côté du switch dans la partie js.
Merci d'avance pour vos agréables renseignements.
A toute à l'heure,
[javascript]
var getStatutStock = function(){
var color = $("input[name='coloris']:checked").val();
var long = $("#longueur_fil").val();
var quant = $("input[name='quantite_fil']").val();
var inputIsOk = true;
if(color=='') inputIsOk = false;
if(long=='') inputIsOk = false;
if(quant=='') inputIsOk = false;
if(inputIsOk){
$.ajax({
type : 'POST',
url : "ajx/process_stockprix_fil.php",
data : {coloris:color,longueur_fil:long,quantite_fil:quant},
success : function(data) {
var affiche_stock = $("span.affiche_stock");
affiche_stock.html(''); // on vide le message d'erreur
var affiche_prix = $("span.affiche_prix");
affiche_prix.html('');
switch(data.statut){
case 'stock_ok': // Stock OK
affiche_stock.append(data.message);
affiche_prix.html(data.prix.toFixed(2)+" Eur");
showAdd2Cart();
break;
case 'derniere_piece': // Attention, dernière pièce en stock
affiche_stock.append(data.message);
affiche_prix.html(data.prix.toFixed(2)+" Eur");
showAdd2Cart();
break;
case 'stock_insuffisant': // Stock Insuffisant
affiche_stock.append(data.message);
affiche_prix.html(data.prix.toFixed(2)+" Eur");
showAdd2Cart();
break;
case 'stock_epuise': // Stock Epuisé
affiche_stock.append(data.message);
affiche_prix.html(data.prix.toFixed(2)+" Eur");
hideAdd2Cart();
break;
default:
break;
}
}, // fin success :function(data) {
error : function(e){},
dataType : 'json'
}); // fin $.ajax
} // fin if(inputIsOk)
};
var hideAdd2Cart = function() {
$("input[name='submit_fils']").hide();
};
var showAdd2Cart = function() {
$("input[name='submit_fils']").show();
};
jQuery(function($){
// Jquery est bien chargé
$('input[name="coloris"]').change(function(){
getStatutStock();
});
$('select[name="longueur_fil"]').change(function(){
getStatutStock();
});
$('input[name="quantite_fil"]').change(function(){
getStatutStock();
});
});
[/javascript]
Ma demo de site ecommerce créée l'année dernière qui fonctionnait très bien, à présent déraille sans que je n'ai touché à rien.... C'est vrai !
Je sélectionne un article, puis son coloris, la longueur désirée ainsi que la quantité, et en fonction de ces critères, renseignés par l'utilisateur, le prix s'affiche ainsi que la disponibilité.
Le problème, c'est qu'aujourd'hui tout est 'En stock!' et uniquement 'En Stock', même si dans ma db ça ne l'est pas.
Je dirais que ça coince du côté du switch dans la partie js.
Merci d'avance pour vos agréables renseignements.
A toute à l'heure,
<?php
if ( isset($_POST['coloris']) && isset($_POST['longueur_fil']) && isset($_POST['quantite_fil']) ){
include '../mysql_connect.php';
$color = mysql_real_escape_string($_POST['coloris']);
$long = mysql_real_escape_string($_POST['longueur_fil']);
$quant = $_POST['quantite_fil'];
$query="SELECT prods_ref, prods_prix, prods_stock, prods_coloris, prods_longueur FROM pivoine_prods WHERE prods_souscat='fil_a_coudre' AND prods_coloris='$color' AND prods_longueur='$long' ";
$result = mysql_query($query) or die('Erreur sql'.mysql_error());
$dat=mysql_fetch_assoc($result);
$ref= $dat['prods_ref'];
$color= $dat['prods_coloris'];
$long= $dat['prods_longueur'];
$prix= $dat['prods_prix'];
$prix = number_format($prix, 2);
$stock = $dat['prods_stock'];
// Check disponibilité du Stock
$r = array();
if($stock < 1){
$r['statut'] = 'stock_epuise';
$r['message'] = 'Stock épuisé.';
}
else if ($stock < $quant){
$r['statut'] = 'stock_insuffisant';
$r['message'] = ' Attention, seulement "'.$stock.'" pièces sont disponibles dans l\'immédiat.';
}
else if ($stock < 11){
$r['statut'] = 'derniere_piece';
$r['message'] = 'Attention, dernières pièces en stock !';
}
else {
$r['statut'] = 'stock_ok';
$r['message'] = 'En Stock !';
}
// Prix
$r['prix'] = $prix;
}
else {
$r['statut'] = 'notok';
}
include('array2json.php');
echo array2json($r);
[javascript]
var getStatutStock = function(){
var color = $("input[name='coloris']:checked").val();
var long = $("#longueur_fil").val();
var quant = $("input[name='quantite_fil']").val();
var inputIsOk = true;
if(color=='') inputIsOk = false;
if(long=='') inputIsOk = false;
if(quant=='') inputIsOk = false;
if(inputIsOk){
$.ajax({
type : 'POST',
url : "ajx/process_stockprix_fil.php",
data : {coloris:color,longueur_fil:long,quantite_fil:quant},
success : function(data) {
var affiche_stock = $("span.affiche_stock");
affiche_stock.html(''); // on vide le message d'erreur
var affiche_prix = $("span.affiche_prix");
affiche_prix.html('');
switch(data.statut){
case 'stock_ok': // Stock OK
affiche_stock.append(data.message);
affiche_prix.html(data.prix.toFixed(2)+" Eur");
showAdd2Cart();
break;
case 'derniere_piece': // Attention, dernière pièce en stock
affiche_stock.append(data.message);
affiche_prix.html(data.prix.toFixed(2)+" Eur");
showAdd2Cart();
break;
case 'stock_insuffisant': // Stock Insuffisant
affiche_stock.append(data.message);
affiche_prix.html(data.prix.toFixed(2)+" Eur");
showAdd2Cart();
break;
case 'stock_epuise': // Stock Epuisé
affiche_stock.append(data.message);
affiche_prix.html(data.prix.toFixed(2)+" Eur");
hideAdd2Cart();
break;
default:
break;
}
}, // fin success :function(data) {
error : function(e){},
dataType : 'json'
}); // fin $.ajax
} // fin if(inputIsOk)
};
var hideAdd2Cart = function() {
$("input[name='submit_fils']").hide();
};
var showAdd2Cart = function() {
$("input[name='submit_fils']").show();
};
jQuery(function($){
// Jquery est bien chargé
$('input[name="coloris"]').change(function(){
getStatutStock();
});
$('select[name="longueur_fil"]').change(function(){
getStatutStock();
});
$('input[name="quantite_fil"]').change(function(){
getStatutStock();
});
});
[/javascript]