[RESOLU] 'En stock!' alors que stock épuisé - Ajax PHP

ICAN
Invité n'ayant pas de compte PHPfrance

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,
<?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]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

29 déc. 2014, 18:27

Bonjour,

Si tu as une url où le problème est visible, ça sera je pense plus simple pour t'aider.

Dans tous les cas, il faut que tu debug ton script et trouves où ça coince.
Sous Firefox, Ctrl+Maj+i va d'abord dans l'onglet Réseau pour voir les infos qui sont transmises entre ton serveur et ta page en ajax puis dans l'onglet Débogueur pour vérifier que ton javascript fonctionne comme attendu et à quel moment il ne répond pas correctement.
Quand tout le reste a échoué, lisez le mode d'emploi...

ICAN
Invité n'ayant pas de compte PHPfrance

29 déc. 2014, 19:18

Salut,

Merci c'est résolu, déjà.... lol. En fait ça venait de ma syntaxe : ' Attention, seulement "'.$stock.'" pièces sont disponibles dans l\'immédiat.'; --> qui s'écrit 'Attention, seulement $stock pièces sont disponibles.';
Apparemment json ne supporte pas non plus les apostrophes, et encore moins échappées.
Voili voila, merci

Mammouth du PHP | 1339 Messages

29 déc. 2014, 20:04

Petit cadeau ...

[javascript]$('input[name="coloris"], select[name="longueur_fil"], input[name="quantite_fil"]').change(function(){
getStatutStock();
});[/javascript]

Mais avec des iD ca serait encore mieux ... Voir meme un class commune !
Bon sinon tu me fais un message privé et on se fait un TeamViewer