Gestion "stock" bloquer modif qté si qté > stoc

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 : Gestion "stock" bloquer modif qté si qté > stoc

par coxine » 11 mai 2006, 15:39

oui le message est écrasé car je fais des vérifs par ailleurs.. :roll:
Voilà voilà c'est chose réglée !!
Merchi ! :wink:

par Ryle » 11 mai 2006, 15:28

euh nan... en fait le monsieur il a relu ton code et il a réalisé qu'il racontait n'importe quoi en pensant que ton $liste[$i][1] contenait le nombre total de participant (déjà inscrits + futurs inscrits) ... :roll:

Pour tes $succes/$erreur par contre, tu peux les réutiliser, mais comme dit plus haut, il faut faire attention s'il sont mit à jour ailleurs, cela peut écraser la valeur qu'il contiennent, et c'est probablement ce que ça t'a fait :)

par coxine » 11 mai 2006, 15:27

Oui, si la personne ne tient pas compte du message, effectivement on enregistre dans la base...(j'ai compris ta réponse ! :oops: )
Mais ce n'est pas grave car le compteur "10" est sous-estimé, par rapport à une capacité de 1é, voire 13.
Cependant, comme le $total_participants dans la base sera >= 10, j'interdirais les prochaines réservations.

par coxine » 11 mai 2006, 15:17

Par contre dans ton dernier core, succes ou pas succes, tu mets quand meme à jour la session avec le nombre d'inscrits même s'il y en a plus de 10 ?
Kééé ?
Keskil veut dire le monsieur ?
:-D
Ecoute, apparement, en changeant (et pourtant je n'avais pas utilisé la condition de la première série de vérifs) $success en $success1, là, ça s'affiche :?

par coxine » 11 mai 2006, 15:15

Ben voilà, j'ai compris toute seule
On ne peux avoir qu'un systeme de message d'erreurs (flag)
Donc j'ai réécrit mon code avec $success1 et $message1 et ça fonctionne !!!
Nickel :wink:

par Ryle » 11 mai 2006, 15:13

vi vi, tu peux utiliser une variable autant de fois que tu veux dans ton script, suffit juste de faire attention qu'une valeur a déjà pu lui être attribuée avant et ne pas l'utiliser par mégarde. Mais sinon, on le fait déjà naturellement si l'on doit mettre des boucles for à deux endroits différents, on réutilise le $i par habitude :)

Pour ton message qui aparait en dehors du conteneur, c'est parfois ce qui arrive quand tu écris entre les lignes d'un tableau (comme il ne sait pas ou l'afficher il le place avant le tableau) ou parce que tu fais un echo alors que le reste du code n'a pas encore été appellé...

Par contre dans ton dernier core, succes ou pas succes, tu mets quand meme à jour la session avec le nombre d'inscrits même s'il y en a plus de 10 ?

par coxine » 11 mai 2006, 14:34

Merci ryle !
bon je m'y suis remise
J'ai ressayé avec ton code et le mien rien ne se passe comme je le voudrais :(
Pas de message d'erreurs à l'endroit où je l'appelle mais en haut de la page, en dehors du conteneur...
Peut-on gérer plusieurs flag dans une meme page.
Car j'utilise $success pour une autre manip ?
J'ai mis quantité totale en session plus haut de manière à le conserver...
if ($modifPanier=="Recalculer")
{
	for ($i=0;$i<count($liste);$i++)
		{
		$nbi='nb'.$i;
		$liste[$i][1]=$_GET["$nbi"];//recup du nbr d'article dans la liste
		$liste[$i][3]=$liste[$i][1]*$liste[$i][2];//prixArticle=nbre*prixUnitaire
		$dispos=10-$quantite_totale;
		if($liste[$i][1]+$quantite_totale<=10)
			{// si la quantité recalculée est inférieur à 10
			$success=true;
			$message=" ";//c'est ok
			}
			else{
			$success=false;
			$message="Il ne reste que $dispos places disponibles";
			// on affiche le nbre de places dispos
			}
		}
	$_SESSION['liste']=$liste;//mAj de la liste
}

par Ryle » 10 mai 2006, 17:32

hé hé :) et pis tu te répètes ;)
tiens par contre tes noms de variables sont meilleurs que les miens... ;)

Bon sinon juste une p'tite remarque pour quand tu seras revenue de l'aérateur de neuronnes (ce qui entre nous soit dit sonne effectivement mieux que "j'va chercher l'pain" ;)) :
if($liste[$i][1]+$quantite_totale<$quantite_totale)
risque d'être régulièrement faux à moins que l'utilisateur ne mette des quantités négatives ;)
if($liste[$i][1]+$quantite_totale<=10)

par coxine » 10 mai 2006, 17:26

Tu mets des choses bizares dans ton panier toi ;p
mdr !!
zut j'ai validé alors que tu avais posté !!!
je sors m'aérer les neurones et je reviens !!
Merchi Mister Ryle :agenouille: :wink:

par coxine » 10 mai 2006, 17:25

Tu mets des choses bizares dans ton panier toi ;p
mdr !!
zut j'ai validé alors que tu avais posté !!!
je sors m'aérer les neurones et je reviens !!
Merchi Mister Ryle :agenouille: :wink:

par coxine » 10 mai 2006, 17:23

Bon voici ce que j'ai fait, mais je n'arrive pas à faire une soustraction :oops: ](*,)
if ($modifPanier=="Recalculer")
{
	 for ($i=0;$i<count($liste);$i++)
		{
		$nbi='nb'.$i;
		$liste[$i][1]=$_GET["$nbi"];//recup du nbr d'article dans la liste
		$liste[$i][3]=$liste[$i][1]*$liste[$i][2];//prixArticle=nbre*prixUnitaire
		if ($liste[$i][1]+$quantite_totale<$quantite_totale)
			{
			$success=true;
			$message="";
			}
			else{
			$success=false;
			$message="Il ne reste que"; echo (10-$quantite_totale); echo "places disponibles";
			}
		}
	$_SESSION['liste']=$liste;//Maj de la liste
}
De plus je voudrais afficher ce message et l'empecher de continuer.

par Ryle » 10 mai 2006, 17:20

Tu mets des choses bizares dans ton panier toi ;p

ca pourrait être quelque chose du genre...
if ($modifPanier=="Recalculer") { 

     $tabComplet = array(); // tableau ou qu'on va consigner les débordements

     for ($i=0;$i<count($liste);$i++) { 
        $nbi='nb'.$i; 
        $liste[$i][1]=$_GET["$nbi"];//recup du nbr d'article dans la liste 
        $liste[$i][3]=$liste[$i][1]*$liste[$i][2];//prixArticle=nbre*prixUnitaire 

        // on regarde si le total dépasse 10
        if( $_GET["$nbi"] + $leNombreDePlaceDejaReserveeQueTAsRecupereChepaou > 10) {
          // on en profite pour garder le nombre de place disponibles :
          $tabComplet[$i] = 10 - $leNombreDePlaceDejaReserveeQueTAsRecupereChepaou; 
          // quel idiot je suis aussi de mettre des variables pareil quand faut les réutiliser...
        }
     } 

  if(count($tabComplet) > 0) { // Y a des choses dans le tableau c'est qu'il y a eu du débordement
    foreach($tabComplet as $cours => $nbPlaces) { // pour chaque débordement :
      echo "Impossible de vous inscrire au cours '$cours'. ";
      echo "Y a plus que $nbPlaces disponibles alors faudra se serrer ou revenir en deuxième semaine";
    }
  }
  else // touti va bene
    $_SESSION['liste']=$liste;//Maj de la liste 

}

par coxine » 10 mai 2006, 17:01

Alors c'est une quantité MAX de 10 par article
Heuu ché pas si je suis claire :lol:
EX. :
1. Je réserve un cours pour lundi prochain, il y a déjà 5 inscrits à ce cours (mais je ne le sais pas et je ne souhaite pas afficher le stock).
Je veux m'inscrire, et des copains, donc je réactualise mon panier avec 5 participants.
-> C'est bon, le total est de 10. Suite à cette réservation, dans le catalogue des cours, il est affiché : fermé donc impossible de réserver.

2. Je réserve un cours pour lundi prochain, il y a déjà 7 inscrits à ce cours (mais je ne le sais pas), je réactualise mon panier avec 5 participants
Je voudrais à ce moment effectivement que le message d'erreur apparaisse, et qu'on indique pourquoi : type 3 places disponibles.

par Ryle » 10 mai 2006, 16:21

Hello !

P'tite question, quand tu dis que le total est de 10, c'est une quantité totale de 10 produits (10 fois le même, ou 1 de chaque) ? ou une quantité max de 10 par type d'article ?

dans le premier cas, le plus simple est de cumuler les quantités dans ta boucle for() dans une variable $qteTotal, si à la sortie de ta boucle celle ci dépasse 10, tu ne met pas en session et tu retourne un message d'alerte (non je ne donnerais pas d'exemple de message ;p)

dans le second cas, le principe est un peu le même, il suffit de passer un flag à erreur si l'un des $_get est supérieur à 10. Et de même à la sortie de la boucle, si erreur il y a, message d'avertissement incendiaire et pas piqué des vers à l'égard de l'andouille qu'est pas capable d'alligner 3 chiffres dans une case, et pas de maj de la session :)

voili voilo.... :)

Gestion "stock" bloquer modif qté si qté > stoc

par coxine » 10 mai 2006, 16:11

Bonjour
Je voudrais améliorer un script de panier.
Lorsque qqu'un va modifier la quantité d'un article ajouté à son panier, je souhaiterais afficher un message d'erreurs : "Attention, la quantité demandée est supérieure au nombre de places restantes, il ne reste que 2 places"....par exemple
Voici mon code : j'ai déjà calculé le nombre d'inscrits...sachant que le nombre total est de 10, comment m'y prendre au moment de la fonction recalculer ?
// SI AJOUT AU PANIER
if ($ajoutPanier=="AJOUTER")
{
	$ID_session=$_GET['ID_session'];
	//calcul du nombre de participants pour un cours
	$colname_participants = "-1";
	if (isset($_GET['ID_session'])) 
	{
	$colname_participants = (get_magic_quotes_gpc()) ? $_GET['ID_session'] : addslashes($_GET['ID_session']);
	}
	mysql_select_db($database, $connexion);
	$query_participants = sprintf("SELECT sum(quantite) AS quantite_totale FROM listes WHERE 
	ID_session = '%s'", $colname_participants);
	$participants = mysql_query($query_participants, $connexion) or die(mysql_error());
	$row_participants = mysql_fetch_assoc($participants);
	$totalRows_participants = mysql_num_rows($participants);
	$quantite_totale=$row_participants['quantite_totale'];//quantité totale de participants
	$nb=1; //par défaut la quantité est = 1
	$ID_cours=$_GET['ID_cours'];
	$date_debut=$_GET['date_debut'];
	$horaires=$_GET['horaires'];
	$intitule=$_GET['intitule'];
	$prix=$_GET['prix'];
	$liste[]=array($ID_session,$nb,$prix,$prix,$ID_cours,$date_debut);
	$_SESSION['liste']=$liste;
	//ajoute un article à la liste
}
//SI MODIF DU PANIER  ---------> C'est là que je dois poser ma vérification
if ($modifPanier=="Recalculer")
{
	 for ($i=0;$i<count($liste);$i++)
		{
		$nbi='nb'.$i;
		$liste[$i][1]=$_GET["$nbi"];//recup du nbr d'article dans la liste
		$liste[$i][3]=$liste[$i][1]*$liste[$i][2];//prixArticle=nbre*prixUnitaire
		}
	$_SESSION['liste']=$liste;//Maj de la liste
}
Merci de vos ID :idea: !!!
:)