GetElementsByName sans coder le nom....

Le
Bob
Bonsoir,

J'ai un script PHP qui m'extrait d'une base de données un ensemble de
valeurs, qui sont mise dans un tableau :

Nom Type Statut
Bob 1 A Jours
Franck 1 KO

Dans la colonne Statut, je récupère l'information sous forme de liste,
ce qui me permet de le modifier.

J'ai donc dans ma page html, pour chaque ligne, un <FORM> dont le
nom est upd_state1, puis upd_state2, puis upd_state3, etc, ou les
chiffre à la fin correspond au row_id de l'enregistrement ; qui est
passé en paramêtre de la fonction décrite ci-dessous.

Pour chaque form, j'ai un <SELECT.> dont le nom est state1 pour
upd_state1, state2 pour upd_state2, etc. (pour les chiffre à la
fin, idem que ci-dessus)

Ces select sont censés lancer une fonction :
onchange="upd_state_sql(ID)" ou le ID correspond au row_id de
l'enregistrement

qui me permet de sélectionner la requête SQL que je souhaite appliqué.

Dans ma fonction upd_state_sql, il y a

function upd_state_sql(ID) {
this.ID = ID;
var choix =
document.upd_state1.state1.options[document.upd_state1.state1.selectedIndex=
].value;

ce qui bien sur ne me convient pas, car je ne souhaite pas récuperer
la valeur du state1 du formulaire upd_state1, mais bien récupérer
l'information qui correspond au formulaire appelant.

et donc mettre à la place du 1 la valeur du ID.

J'ai essayer avec des GetElementsByID (ou GetElementsByName), mais je
n'y arrive pas :

var objForm = document.getElementsByname("upd_state" + ID)
var objSelect = document.getElementsByname("state" + ID);
var choix =
document.objForm.objSelect.options[document.objForm.objSelect.selectedIndex=
].value;

Merci pour votre aide.

Cordialement
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #770838
Bonsoir,

(snip)

J'ai donc dans ma page html, pour chaque ligne, un nom est upd_state1, puis upd_state2, puis upd_state3, etc, ou les
chiffre à la fin correspond au row_id de l'enregistrement ; qui est
passé en paramêtre de la fonction décrite ci-dessous.

Pour chaque form, j'ai un upd_state1, state2 pour upd_state2, etc.... (pour les chiffre à la
fin, idem que ci-dessus)

Ces select sont censés lancer une fonction :
onchange="upd_state_sql(ID)"


<hs>
Je suis peut-être un brin puriste, mais j'ai une sainte horreur des
handlers "dom 0" dans le html. D'autant qu'en général, ont les trouve
dans du code qui ne se dégrade pas correctement en l'absence de
javascript...
</hs>

ou le ID correspond au row_id de
l'enregistrement

qui me permet de sélectionner la requête SQL que je souhaite appliqué.

Dans ma fonction upd_state_sql, il y a

function upd_state_sql(ID) {
this.ID = ID;
var choix > document.upd_state1.state1.options[document.upd_state1.state1.selectedIndex].value;

ce qui bien sur ne me convient pas, car je ne souhaite pas récuperer
la valeur du state1 du formulaire upd_state1, mais bien récupérer
l'information qui correspond au formulaire appelant.


Accessoirement et s'il me souvient bien, ce n'est pas standard.

et donc mettre à la place du 1 la valeur du ID.

J'ai essayer avec des GetElementsByID (ou GetElementsByName), mais je
n'y arrive pas :

var objForm = document.getElementsByname("upd_state" + ID)
var objSelect = document.getElementsByname("state" + ID);
var choix > document.objForm.objSelect.options[document.objForm.objSelect.selectedIndex].value;


Tu n'a pas l'impression de te compliquer un peu la vie ?

var select = document.getElementById("state" + ID);
if (select) {
var choix = select.options[select.selectedIndex].value;
}

Pas testé, mais ça devrait le faire.

SAM
Le #770837

Dans ma fonction upd_state_sql, il y a

function upd_state_sql(ID) {
this.ID = ID;
var choix > document.upd_state1.state1.options[document.upd_state1.state1.selectedIndex].value;

ce qui bien sur ne me convient pas, car je ne souhaite pas récuperer
la valeur du state1 du formulaire upd_state1, mais bien récupérer
l'information qui correspond au formulaire appelant.


function upd_state_sql(quiquoi) {
var ID = quiquoi.id.replace('state',''); // des fois que ça serve ?
var choix = quiquoi.options[quiquoi.selectedIndex].value;
// ...
}


<select id="state1254" onchange="upd_state_sql(this);">

SAM
Le #770836

function upd_state_sql(quiquoi) {
var ID = quiquoi.id.replace('state',''); // des fois que ça serve ?
var choix = quiquoi.options[quiquoi.selectedIndex].value;
// ...
}


<select id="state1254" onchange="upd_state_sql(this);">


variante :
----------

function upd_state_sql(ID) {
var choix = document.forms['upd_state'+ID][0];
choix = choix.options[choix.selectedIndex].value;
location = 'mySql_upd.php?choix='+choix+'&id='+ID;
}

<select name="choix" onchange="upd_state_sql(1);">
<opt...
</select>
<input type="hidden" name="id" value="1">
<input type="submit" value="GO">
</form>
...
...
<select name="choix" onchange="upd_state_sql(102);">
<opt...
</select>
<input type="hidden" name="id" value="102">
<input type="submit" value="GO">
</form>


Remarque :
----------

Ha! tout de même et puisque tu dis que :
« pour chaque ligne, un ^^^
je me demande si ton select n'a pas un nom au lieu d'un id ce qui va
poser problème si on utilise getElementById ...

Dans le doute, autant se passer de ces noms ou id inutiles pour ce que
je pense que tu veux faire


<input type="hidden" name="id" value="1">
<select name="choix" onchange="upd_state_sql(this);">
<option ...
...
<option ...
</select>
<input type="submit" value="GO">
</form>
...
...
<input type="hidden" name="id" value="102">
<select name="choix" onchange="upd_state_sql(this);">
<option ...
...
<option ...
</select>
<input type="submit" value="GO">
</form>


<script type="text/javascript">
function upd_state_sql(quiquoi) {
var ID = quiquoi.form['id'].value;
var choix = quiquoi.options[quiquoi.selectedIndex].value;
location='mySql_upd.php?choix='+choix+'&id='+ID;
}
</script>

Les formulaires *DOIVENT* fonctionner sans JavaScript !

--
sm

Bob
Le #770105
Bonsoir SAM,

Merci beaucoup pour ta réponse très détaillée. Je vais regarder ca.

On 6 nov, 22:55, SAM wrote:



function upd_state_sql(quiquoi) {
var ID = quiquoi.id.replace('state',''); // des fois que ça serve ?
var choix = quiquoi.options[quiquoi.selectedIndex].value;
// ...
}

<select id="state1254" onchange="upd_state_sql(this);">


variante :
----------

function upd_state_sql(ID) {
var choix = document.forms['upd_state'+ID][0];
choix = choix.options[choix.selectedIndex].value;
location = 'mySql_upd.php?choix='+choix+'&id='+ID;

}

<select name="choix" onchange="upd_state_sql(1);">
<opt...
</select>
<input type="hidden" name="id" value="1">
<input type="submit" value="GO">
</form>
...
...
<select name="choix" onchange="upd_state_sql(102);">
<opt...
</select>
<input type="hidden" name="id" value="102">
<input type="submit" value="GO">
</form>

Remarque :
----------

Ha! tout de même et puisque tu dis que :
« pour chaque ligne, un ^^^
je me demande si ton select n'a pas un nom au lieu d'un id ce qui va
poser problème si on utilise getElementById ...

Dans le doute, autant se passer de ces noms ou id inutiles pour ce que
je pense que tu veux faire

<input type="hidden" name="id" value="1">
<select name="choix" onchange="upd_state_sql(this);">
<option ...
...
<option ...
</select>
<input type="submit" value="GO">
</form>
...
...
<input type="hidden" name="id" value="102">
<select name="choix" onchange="upd_state_sql(this);">
<option ...
...
<option ...
</select>
<input type="submit" value="GO">
</form>

<script type="text/javascript">
function upd_state_sql(quiquoi) {
var ID = quiquoi.form['id'].value;
var choix = quiquoi.options[quiquoi.selectedIndex].value;
location='mySql_upd.php?choix='+choix+'&id='+ID;
}
</script>

Les formulaires *DOIVENT* fonctionner sans JavaScript !

--
sm



Publicité
Poster une réponse
Anonyme