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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] 'En stock!' alors que stock épuisé - Ajax PHP

Re: 'En stock!' alors que stock épuisé - Ajax PHP

par Elie » 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 !

Re: 'En stock!' alors que stock épuisé - Ajax PHP

par ICAN » 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

Re: 'En stock!' alors que stock épuisé - Ajax PHP

par @rthur » 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.

'En stock!' alors que stock épuisé - Ajax PHP

par ICAN » 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]