Je veux décrémenter une valeur lorsque l'utilisateur la supprime en php et mysql. Je veux vérifier pour ne pas descendre en dessous de 0. Si la valeur est 0 alors ne pas décrémenter.
mysql_query("UPDATE table SET field = field - 1 WHERE id = $number");
Si le champ est alors ne faites rien
Ajoutez une autre condition pour mettre à jour uniquement si le field
est supérieur 0
UPDATE table
SET field = field - 1
WHERE id = $number
and field > 0
Vous pouvez empêcher la nouvelle valeur de descendre en dessous de zéro en utilisant GREATEST()
. Si la valeur tombe en dessous de zéro, zéro sera toujours supérieur à votre valeur calculée, empêchant ainsi toute valeur inférieure à zéro d'être utilisée.
UPDATE table
SET field = GREATEST(0, field - 1)
WHERE id = $number
Et à côté: s'il vous plaît ne pas utiliser mysql_*
fonctionne plus. Ils sont obsolètes et seront finalement supprimés de PHP. Utilisez plutôt PDO ou MySQLi .
L'option utilisant GREATEST ne fonctionnera pas dans les versions plus récentes de MySQL, et la réponse acceptée peut être inutile si vous souhaitez mettre à jour plusieurs champs au lieu d'un. Ma solution pour ce problème utilise IF:
UPDATE table
SET field = IF(field > 0, field - 1, 0)
WHERE id = $number
UPDATE table SET field = case when (field - 1) >0 then (field - 1)
else field end
WHERE id = $number