bon j'en ai parler longement avec un pot et vu comment on a galérer j'en deduis que mon esplication n'est pas clair du tout alors je recommence
---------------------------------------------
je travail en php mysql
---------------------------------------------
j'ai une table nommé subject formé comme ceci:
id lang1 lang2 lang3 lang4
les lang de 1 à 4 sont les numeros des langues enregistré en id dans une autre table (languages), avec quantitées de traductions
l'id de la table subject est l'id d'un sujet X, "sujet" dans le meme etat d'esprit qu'un sujet d'un topic sur le forum (meme si ca n'a rien a voir, ici c'est un sujet de classement.) traduit dans les différentes langue. langX est de type varchar
le nombre de sujet et le nombre de lang n'est donc pas fixé.
l'idée est de vouloir rajouter une langue.
je genere donc un formulaire avec des input type="test" qui ont comme nom 1 2 3 4, numero des sujets. (en fait concaténé avec une chaine de caractere car sinon une variable avec un nom de chiffre ca ne marche pas)
dans la page ou j'effectue réélement les requettes,
dans un premier temps je fais un ALTER table pour ajouter la colone lang5
puis un update pour mettre a jour toutes les traductions des sujets dans cette nouvelle langue.
je devrais donc effecter autant d'update qu'il y a de sujet, ce qui est gerable avec une boucle for (c'est le systeme qui est en place, avec un autre systeme pour savoir les numeros car vu qu'il est possible de supprimer des langues et des sujets, des numeros d'id peuvent sauter), mais je trouve assez catastrophique de faire autant de requette alors que je pense qu'il est possible d'en faire une.
pour en faire une je note:
$sql = "UPDATE `subject` SET lang".$id_new_lang." = ${CONCAT(id,'_1')}";
où $id_new_lang est l'id de la nouvelle langue et id l'id des sujets.
CONCAT(id,'_1') et sencé me generer le nom de chaque variable de mon formulaire a associé avec chaque id de sujet.
mais vu que c'est que le nom de la variable, et qu'il nous faut le contenu, je fais
${CONCAT(id,'_1')} pour avoir le contenu de la variable qui a le nom donné par la chaine de caratere genere par la partie entre acolade. ( systeme des variable dynamique)
le problème est que CONCAT(id,'_1') c'est du language mySQL et le coup des variable dynamique c'est du php, resultat ca ne marche pas:
en effet la chaine $sql est évalué une seule fois avant d'etre passé à mysql_query().
si je mets mes variables dans un tableau pour faire un truc du genre
$sql = "UPDATE `subject` SET lang".$id_new_lang." = ".tab[id]."";
ca ne marche pas non plus pour les memes raisons.
il me faudrait donc un systeme de variable dynamique en mySQL en ayant accé au variable php, et ca je ne sais pas si ca existe.
Donc si vous connaisez ou si vous trouvez une autre methode pour faire la requette en une fois (quite a refaire le formulaire), je suis prenneur
merci