Re-salut, ça faisait un petit temps que j'avais pas eu besoin de vous, mais là j'ai décidé de faire de l'AJAX au lieu d'un système en PHP... à part que le javascript et moi, bah ça fait au moins 10 (et pas en binaire)
Voilà le concept simple :
- sur une page, j'ai une série d' "objets" (on va nommer ça comme ça) issus de ma base de données portant chacun un id unique.
- ils peuvent avoir 2 états, noté dans la base de donnée : http://www.yuimen.com/images/visible-1.png (correspond à 1 dans la bdd); http://www.yuimen.com/images/visible-0.png (correspond à 0 dans la bdd).
- en php, ça aurait été un lien image avec 2 arguments en get (id et état). J'aurais modifié dans la table état actuel dans l'autre (1 en 0 et réciproquement) puis charger à nouveau la page.
- en ajax, j'aimerais que quand le joueur clique sur l'image :
1) l'image change (passe de visible en invisible et réciproquement)
2) que la base de donnée se mette à jour (passage de 1 à 0 ou de 0 à 1)
A l'heure actuelle je travaille sur l'étape 1. Ca marche très bien, mais une seule fois par image. Hors, je voudrais permettre à la personne de modifier son choix sans recharger la page.
Place au code :
L'affichage de l'image.
Ma fonction
Le changement de la source de l'image passe donc très bien; mais pas moyen de modifier le "onclick"
Voilà le message de la console javascript d'opéra :
Modifié par Lothindil (27 May 2011 - 15:49)

Voilà le concept simple :
- sur une page, j'ai une série d' "objets" (on va nommer ça comme ça) issus de ma base de données portant chacun un id unique.
- ils peuvent avoir 2 états, noté dans la base de donnée : http://www.yuimen.com/images/visible-1.png (correspond à 1 dans la bdd); http://www.yuimen.com/images/visible-0.png (correspond à 0 dans la bdd).
- en php, ça aurait été un lien image avec 2 arguments en get (id et état). J'aurais modifié dans la table état actuel dans l'autre (1 en 0 et réciproquement) puis charger à nouveau la page.
- en ajax, j'aimerais que quand le joueur clique sur l'image :
1) l'image change (passe de visible en invisible et réciproquement)
2) que la base de donnée se mette à jour (passage de 1 à 0 ou de 0 à 1)
A l'heure actuelle je travaille sur l'étape 1. Ca marche très bien, mais une seule fois par image. Hors, je voudrais permettre à la personne de modifier son choix sans recharger la page.
Place au code :
L'affichage de l'image.
if($visible==1)
{
$affichage.="<img id=".$idSkill." onclick='chgVisibilite(".$idSkill.",".$idPj.",0)' src='images/visible.png' title='Skill visible, cliquer pour rendre invisible en combat' alt='skill visible' />";
}
else
{
$affichage.="<img id=".$idSkill." onclick='chgVisibilite(".$idSkill.",".$idPj.",1)' src='images/invisible.png' title='Skill visible, cliquer pour rendre invisible en combat' alt='skill visible' />";
}
Ma fonction
function chgVisibilite(idSkill,idPj,changement)
{
if(changement==1)//passage à visible
{
document.getElementById(idSkill).src = 'images/visible.png';
document.getElementById(idSkill).onclick = 'chgVisibilite(idSkill,idPj,0)';
}
else
{
document.getElementById(idSkill).src = 'images/invisible.png';
document.getElementById(idSkill).onclick = 'chgVisibilite(idSkill,idPj,1)';
}
}
Le changement de la source de l'image passe donc très bien; mais pas moyen de modifier le "onclick"

Voilà le message de la console javascript d'opéra :
a écrit :
Event thread: click
Uncaught exception: ReferenceError: Undefined variable: idSkill
Error thrown at unknown location in <anonymous function>(event):
Modifié par Lothindil (27 May 2011 - 15:49)