'En stock!' alors que stock épuisé - Ajax PHP
Résolu
ICAN
-
ICAN -
ICAN -
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!' même si dans ma db ça ne l'est pas.
Merci d'avance pour vos agréables renseignements.
----------------
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!' même si dans ma db ça ne l'est pas.
Merci d'avance pour vos agréables renseignements.
<?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 Document
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();
});
});
A voir également:
- 'En stock!' alors que stock épuisé - Ajax PHP
- Stock it easy - Télécharger - Comptabilité & Facturation
- Petit stock - Télécharger - Comptabilité & Facturation
- Logiciel gestion de stock et facturation - Télécharger - Comptabilité & Facturation
- Easy php - Télécharger - Divers Web & Internet
- Logiciel gestion de stock pharmacie gratuit - Télécharger - Santé & Bien-être
3 réponses
Bonjour
Tu es sûr de ta fonction array2json ? Essaye avec un message sans apostrophe à la place de ' Attention, seulement "'.$stock.'" pièces sont disponibles dans l\'immédiat.'. Car si tu échappes cette apostrophe correctement en PHP, pour la transmission en json, j'en suis moins sûr.
Edit : sans apostrophes et aussi sans doubles quotes, il y a une erreur possible en json avec ces caractères.
Tu es sûr de ta fonction array2json ? Essaye avec un message sans apostrophe à la place de ' Attention, seulement "'.$stock.'" pièces sont disponibles dans l\'immédiat.'. Car si tu échappes cette apostrophe correctement en PHP, pour la transmission en json, j'en suis moins sûr.
Edit : sans apostrophes et aussi sans doubles quotes, il y a une erreur possible en json avec ces caractères.
Bonjour ICAN,
Est-ce que tu as vérifié le contenu de ta variable
Cela permettra dans un premier temps de savoir si la donnée prods_stock est bien récupérée avant de l'utilisée.
--
Est-ce que tu as vérifié le contenu de ta variable
$stockavant qu'elle passe dans tes conditions "if" ?
Cela permettra dans un premier temps de savoir si la donnée prods_stock est bien récupérée avant de l'utilisée.
--
Bonjour Mirzo,
Quand je remplace ma série de if juste par:
j'ai bien la quantité en stock pour chaque ref qui s'affiche.
En revanche, dès que je demande une quantité supérieure à celle en stock, tout se bloque : le prix unitaire -si je change de ref- ne s'update pas, ni la disponibilité.... huuummm
Merci pour tes bonnes idées :D
Quand je remplace ma série de if juste par:
$r['statut'] = 'stock_epuise';
$r['message'] =$stock;
j'ai bien la quantité en stock pour chaque ref qui s'affiche.
En revanche, dès que je demande une quantité supérieure à celle en stock, tout se bloque : le prix unitaire -si je change de ref- ne s'update pas, ni la disponibilité.... huuummm
Merci pour tes bonnes idées :D
Je t'attendais avec impatience ;) ! Comme je m'en doutais, tu as trouvé instantanément la source du problème, je te décerne donc un AWARD pour tes compétences et ton aide.
La solution était :
" Attention, seulement $stock pièces sont disponibles.";
Je ne vois pas comment inclure une apostrophe pour "dans l'immédiat" mais on va faire sans..., OK, je prends bien note de ce cas de figure version json, et de sa syntaxe pour à l'avenir.
Merci beaucoup, Belle fin d'année