Bonjour,

Je fais actuellement un jeu avec une grille comportant plusieurs cases avec des cadeaux à gagner derrière et donc quand un joueur clique sur la case elle peut être acheté au même moment par un autre joueur. Pour éviter de genre de souci j'aimerais verrouiller la ligne correspondante à cette case cliquée. Est-ce qu'on peut verrouiller une seule ligne d'une table ce qui serait plus efficace qu'un LOCK table ?
Donc l'idée je regarde si la case est libre et si elle est libre la case est achetée par le joueur. Mais avant que je regarde si elle est libre il faut que ça soit bloqué (histoire que je sois sûr qu'elle est pas déja prise) donc bloquer la ligne serait top, comme ça je la bloque je regarde si elle est libre si oui je la passe à NON LIBRE j'offre le cadeau au joueur et une fois terminée je débloque la ligne et le joueur d'après verra alors qu'elle vient d'être acheté

J'espère que j'ai été assez clair sur l'idée.

EDIT : j'ai trouvé une solution pour éviter les LOCK TABLES et ce genre de truc

Je fais un UPDATE avec une condition ce qui revient à faire un select protégé (bloqué) et du coup dans l'UPDATE il suffit de passer la case à NON LIBRE si on trouve qu'elle est actuellement libre. Ensuite il suffit d'utiliser mysqli_affected_rows qui va indiquer si l'UPDATE a fait une mise à jour ou non. Si c'est OUI alors on sait que la case était libre et l'UPDATE a passé cette case à NON LIBRE et donc plus aucun joueur ne peut l'acheter et derrière on peut faire tous les traitements qu'on veut