Salut tout le monde ! Me revoilà, après deux ans d'absence dans le monde de la prog et du jeu (pas mal occupé on va dire).
Donc déjà: Je suis content de voir que ce super forum existe toujours et que certaines têtes connues soient toujours bien actives ici !
Là n'est pas le problème, je reviens avec du lourd lourd ! (pour moi du moins).
J'explique:
j'ai une table t_troupe qui contient (grosso modo) toutes les troupes du joueurs, sous la forum:
PK_troupe (juste la clé primaire qui s'auto-incrémente)
FK_joueur (qui se réfère à la clé primaire du joueur qui possède la troupe)
FK_cTroupe (qui va donc chercher les statistiques de la troupe, nom, prix, force etc...)
nombre (le nombre que ce joueur en possède)
type (0,1) (détermine si la troupe est en attaque ou défense !
Bref, le problème étant que dans mes scripts je veux MODIFIER les troupes du joueurs !
SAUF que dans certains cas (si par exemple le joueur n'a jamais eu de troupe de ce genre), je ne peux pas modifier vu qu'il n'existe PAS de ligne de cette troupe pour ce joueur.
Vous arrivez à me suivre ?
J'ai alors découvert qu'il existe un type de requête qui créé cette ligne si elle ne peut la modifier !
=> ON DUPLICATE KEY UPDATE
Manque de chance, sur cela, on ne peut utiliser la fonction WHERE et on doit utilisé une clé primaire...
J'ai donc testé ce genre de truc:
Mais ça ne fait qu'ajouter une ligne sans rien modifier ! Bref, j'ai du mal...
Alors il y a cette solution (qui ne marche pas vraiment pour l'instant) ou alors:
- vérifier avant chaque update que cette ligne de troupe existe (ce qui risque de faire mal en requête surtout si on a beaucoup de troupes à modifier
- ajouter directement toutes les lignes des troupes lors de l'inscription du joueur, et faire une verif/insertion lors de la connexion du joueur (dans le cas où j'ajoute une troupe à la BDD par exemple)
Bref, vous voyez, j'ai du mal à bien revenir dans le bain, et vos avis me seraient donc assez utiles
Merci d'avance !
PS: au passage: Bonne année, avec un peu de retard
Donc déjà: Je suis content de voir que ce super forum existe toujours et que certaines têtes connues soient toujours bien actives ici !
Là n'est pas le problème, je reviens avec du lourd lourd ! (pour moi du moins).
J'explique:
j'ai une table t_troupe qui contient (grosso modo) toutes les troupes du joueurs, sous la forum:
PK_troupe (juste la clé primaire qui s'auto-incrémente)
FK_joueur (qui se réfère à la clé primaire du joueur qui possède la troupe)
FK_cTroupe (qui va donc chercher les statistiques de la troupe, nom, prix, force etc...)
nombre (le nombre que ce joueur en possède)
type (0,1) (détermine si la troupe est en attaque ou défense !
Bref, le problème étant que dans mes scripts je veux MODIFIER les troupes du joueurs !
SAUF que dans certains cas (si par exemple le joueur n'a jamais eu de troupe de ce genre), je ne peux pas modifier vu qu'il n'existe PAS de ligne de cette troupe pour ce joueur.
Vous arrivez à me suivre ?
J'ai alors découvert qu'il existe un type de requête qui créé cette ligne si elle ne peut la modifier !
=> ON DUPLICATE KEY UPDATE
Manque de chance, sur cela, on ne peut utiliser la fonction WHERE et on doit utilisé une clé primaire...
J'ai donc testé ce genre de truc:
Code :
INSERT INTO t_troupe (FK_joueur, FK_cTroupe, nombre, type)
VALUES (9, 2, 200, '0')
ON DUPLICATE KEY UPDATE
FK_joueur = 9 AND FK_cTroupe = 2;
Mais ça ne fait qu'ajouter une ligne sans rien modifier ! Bref, j'ai du mal...
Alors il y a cette solution (qui ne marche pas vraiment pour l'instant) ou alors:
- vérifier avant chaque update que cette ligne de troupe existe (ce qui risque de faire mal en requête surtout si on a beaucoup de troupes à modifier
- ajouter directement toutes les lignes des troupes lors de l'inscription du joueur, et faire une verif/insertion lors de la connexion du joueur (dans le cas où j'ajoute une troupe à la BDD par exemple)
Bref, vous voyez, j'ai du mal à bien revenir dans le bain, et vos avis me seraient donc assez utiles
Merci d'avance !
PS: au passage: Bonne année, avec un peu de retard