Bien le bonjour !
Je viens aujourd'hui avec un problème qui me semble assez complexe sachant que je voudrais pas avoir à faire 150 requêtes dans mon script.

le joueur a des troupes dans la table t_troupe:

PK_troupe / FK_joueur / FK_cTroupe / nombre / type

PK_troupe = id de la ligne (inutile ici)
FK_joueur = référence à l'id PK_joueur (tableau t_joueur) qui indique à qui appartient la troupe.
FK_cTroupe = référence au type de troupe (tableau c_troupe) qui indique à quelle troupe cette ligne correspond (exemple: 5 = archers)
[B]nombre[/B = indique le nombre de cette troupe qui est enregistré dans cette ligne
type = (0,1) indique si la troupe est en attaque (1) ou en défense (0)

Dans la table t_troupe, pour le joueur "9" on va donc avoir:

1 - 9 - 5 - 100 - 0
2 - 9 - 5 - 50 - 1
3 - 9 - 1 - 200 - 0
4 - 9 - 3 - 55 - 1

Le joueur a donc ici 100 troupes de type 5 (disons des archers) qui sont en défense et 50 qui sont en attaque.
Il ne peut y avoir de troisième ligne pour les archers, ceux ci étant forcément en attaque OU en défense.

Je veux donner le choix au joueur de placer ses troupes soit en attaque soit en défense.
j'ai donc un formulaire qui lui montre ses troupes en défense, avec un champs lui permettant d'en placer en défense !

Exemple:

Vos archers en défense: 100 - (entrez ici le nombre à mettre en attaque)
Vos lanciers en défense: 50 - (entrez ici le nombre à mettre en attaque)
...
(il peut y avoir près de 20 types de troupes, le formulaire étant donc généré dans une boucle).

LA QUESTION EST DONC:

Comment, quand j'ai envoyé le formulaire des troupes que je veux placer en attaque, créer un UPDATE qui va me modifier toutes ses données en UNE SEULE requête ?

Si je voulais ne modifier qu'une ligne (ou plusieurs en connaissant exactement le nombre etc..) je ferai: (si jamais le joueur voulait placer 50 de ses archers en attaque)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
INSERT INTO t_troupe (FK_joueur, FK_cTroupe, nombre, type)
VALUES 
(9, 5, 50, '1'), (9, 5, -50, '0')
ON DUPLICATE KEY UPDATE
nombre= nombre + VALUES(nombre);
PS: le ON DUPLICATE KEY UPDATE me sert ici à ajouter la ligne si elle n'existe pas encore (si le joueur n'a jamais placé d'archers en attaque, la ligne 2 - 9 - 5 - 50 - 1 n'existe pas

Bref, je pensais à mettre tous les résultats du tableau POST dans une variable texte, dans le bon ordre et incorporer cette variable dans la requête mais je ne suis pas sûr que ce soit une très bonne idée. (qui plus est, je dois avant tout, faire les vérifications, voir si les troupes existent etc... :s)

Merci de me donner votre avis là dessus !